Showing posts with label Civil 3D bugs. Show all posts
Showing posts with label Civil 3D bugs. Show all posts

Thursday, 4 March 2021

Subassembly composer multiple nested decisions issues and workarounds

I used to work with SubAssembly Composer (SAC) 2014 because it was the last version allowing a variable to be deleted and recreated with the same name not reporting the message that this variable already exists. Same thing happens when a variable is cut and pasted somewhere else. Trying to rename from copy to the previous name resulted to the same message. A serious bug that autodesk never responded to my notifications at the civil 3d customization support forum.

I created a subassembly using SAC 2014.Working at it, step by step it became huge and unresponsive.
Solution :
I turned to SAC 2018. This version handles huge subassemblies far better.

Copy or cut/paste a variable makes it impossible to use it with the same name, as mentioned at the beginning of this topic.
Solution :
Declare all variables inside a Sequence at the very start of the program. So there is no need to move it to another place. Not a good solution for someone that is used to programming but...

Finally i reached to a level of complexivity that doing a minor change had a huge time cost.
Solution :
I started unlinking all unecessary nodes keeping linked only those for the case i wanted to create or examine. Quite annoying but i did not find another workaround. For this to work  properly i had to keep written notes about how to reproduce each case.

But even so there was also a quite annoying time lag during changes or addings.
Solution :
Cut the preceding link. Everything takes place on the fly.

But no link or point already entered is available to select. Empty dropdown lists !
Solution :
The above method is perfect as long as no poimt or link selection has to be made. If so i found a better workaround.
Instead of cutting the preceding link i do a dummy insertion eg an empty shape so an error takes place.
Whatever is inserted, changed or moved takes place on the fly.
And best of all, all points and links are available to select.

Finally i have to connect all nodes. Program becomes completely unresponsible. It never unfreezes.
Solution :
Cut the very first node.
Join all others.
Save it using a name that identifies this.
Save it again removing this identification.
Do the every first join.
It freezes. Finally it reports a message that it is out of memory. Press OK. Save it.
It freezes again. But it is saved.
End it by force.
In case of changes use the one that is cut at the very first node. Repeat the above steps.

Notice :
Variables, Points and Links declared in a Switch or Decision are NOT available out of this Switch or Decision scope !!!

Saturday, 6 February 2021

Civil 3D upgrade. Native subassembly property GetValueFrom issues.

So you have some complex assemblies made of native Civil 3D subassemblies.
You upgrade to a newer version.
You use the same assemblies to a new dwg or even you just open an existing dwg with the new version.
Everything works fine.
BUT...you have to make a change. Make subassemblies property changes to GetValueFrom eg Slope from a previous one. You select the value to override with. Check is automatically assigned.
But no changes take place at the drawing. You look again and the value is not assigned! Yes, Civil 3D fooled you.
The only way to achieve this change is to use a current version of the native Civil 3D subassembly for the one to GetValueFrom . Then the following, previous version, subassemblies can actually GetValueFrom.

Tuesday, 7 May 2019

Civil 3D and SAC insanity...once again.

I created a subassembly using SAC2014.
It checks corridor stationing to decide to do some actions.
I have a decision like the following.

math.floor((StationValue-StaStart)/Step) = (StationValue-StaStart)/Step and StationValue>=StaStart and StationValue<=StaEnd

For StationValue=4059, StaStart=4045, Step=2, StaEnd=4059 the result was False !!! because floor was 6 (???!!!) and full double was 7. Insane !!!

I changed to math.round and values became equal so it should turn to True. But i did not !!!???

Being one step before madness i reduced the region less than the StaEnd and then i got it back.
Everything got as expected.
Simple Corridor rebuilding  or region stationing extending by grips does not trully rebuilds that station. Only reducing region stationing that much so that the desired station does not exist and then extending back worked out.

Autodesk's products insanity.

I made a test. Changed SAC code back to "Floor". Reloaded subassembly and rebuilded the corridor. Everything looked as expected so the result was True. But i did not trust it. So i reduced region stationing and then restored it.
Guess what. Now it turned to False. Again. So true rebuild for a station takes place only if it is vanished and restored !!!

Back to "Round" and everything worked fine although it should with "Floor".

Insanity continued...
I did the region stationing changes using the plan view grips.
When finally subassembly worked as expected plan view was immediatelly updated.
But the Cross Section View was not ! I had to move the Sample Line back and forth to update !

Wednesday, 27 March 2019

Civil 3D workaround : Corridor Surface Boundary "Add automatically" option not showing although it should

So you have a corridor made of sub assemblies that should expose one or more codes for adding boundaries automatically but this option is not offered although it should.

Watch for locked layers. Assemblies, alignments, profiles, targets, superelevation views, surfaces whatever may be related to the corridor and its surface.

If all unlocked then check this.
Set boundary to Corridor extends.
Rebuild corridor and watch the Event viewer.
If there is a warning that "could not apply mask (0) to corridor due to crossing polygon" then try this.

Set Corridor frequencies to another much larger value.
Apply.
Now the option for Adding automatically should be available.
Select the desired code.
Apply and rebuild.
Reenter corridor properties and change frequencies back to the previous values. Apply and rebuild.

Add automatically is still available and everything is working fine.

Yet another workaround.
Autodesk is unintentionally training our brains to prevent failure due to aging. Or maybe our brains are about to get burned because of all this over the years searching for workarounds, tricks and things like these trying to make their software to work as expected.
We should also not neglect all those extreme feelings of frustration, surprise, anxiety, desperation and finally...triumph that comes with situations like these.

Friday, 1 March 2019

Civil 3D "bug" : QTO material list gaps. Application freezing

I had a case of three similar alignments in the same dwg.
I had to set multiple gaps for the QTO material lists.
First alignment everything worked fine.
Second and third one and by the time i applied whatever gap the application freezed.
No matter what i tried i always ended up to an eternal loop which would set the particular CPU core to work at its maximum endlessly.

I was entering the gap stations by hand. I typed them. One by one. For every alignment.
Trying to set stations to other than those of the sample lines obviously did not work. Only sample line stations are accepted. I tried to bypass it doing a graphical selection. You are only allowed to select sample lines. Not stations. So i entered all gaps graphically. And everything worked fine!!!

Still have not figured out why everything worked fine for the first alignment since i also typed by hand all stations.

Autodesk give us a break. I lost seven whole hours of my working time trying to find a solution. One step before going crazy. No solution over the internet or the Civil 3D forum. I was off time for the deliverables. My supervisor thinks i am slow and i lack of knowledge about this software. For God's shake.

Monday, 31 July 2017

Civil 3D road corridor with multiple shoulders. One corridor. Two baselines one for each side vs one baseline using conditional subassemblies. Trimble Link Roads export. Leica Infrastructure Link export.

In a road corridor a common case is the existing of both sides different kind shoulders.

A way to deal with it is creating a single corridor with two baselines refering to the same alignment
and profile, one for each side.
Breaking the baselines into multiple regions each one ending to a different shoulder.
So subassemblies are created for one side at a time.
Final count of them is significant less as also regions needed, than if a single baseline would exist for both sides. Also much simpler and understandable.
BUT exporting to a Trimble sensor is a problem. Although user creates a single surface with both sides, Trimble Link exports a seperate RXL for each side.
Also Leica HeXML export breaks apart corridor into two layers, one for each side.

Another way to deal with it is to create a single corridor with one baseline and only one region.
Assembly is based on conditional offset assemblies for different shoulders. So if user declares a target then the correspondent subassembly is applied !
Conditional target needs not to be drawn on the exact trail. Just joining start to end of the certain kind of shoulder.
Caution ! A good practice is to create Targets as properly named Feature Lines and even better in properly named Layers. This approach is time consuming but leads to less mistakes and it is easier to examine and make changes.
Also it is crucial that Sections are added for each start and end of each Conditional Offset Target for each side.
Obviously there is no problem exporting to either sensor.
BUT there is a huge "bug".
In the first case shoulder always changes at the start and end of each region.
But in this case shoulder does not change at the exact station a conditional target is apllied !!!
There is a tolerance which is not user accessible.
I have found that this tolerance is a 0.042m delta East from the edge of the declared target of the Conditional Offset Assembly that has the priority.
This is equivalent to the first case (of two baselines multiple regions) using 4.2cm (East to West) gaps among regions.

So, Conditional Offset Subassemblies is not a solution when strict accuracy is expected regarding stationing performed.

My preffered approach is...
...the first case of Corridor creation
...exporting corridor sections as two LandXML files containing only sections, one for each side, through my custom Civil 3D plugin
...join those two sided sections into a single one, based on stationing using another custom desktop NET software of mine
...finally attaching them to the Civil 3D alignment (and profile) export using my previously mentioned custom software or MS XML editor (not preffered-time consuming) or a Text editor (need to be carefull where to do the join).

But this is also not the best solution if there is a need for ovelapping conditional subassemblies. Leica import for LandXML does not assign C3D point names but custom names based on side and ascending offset position. If names were used points would be joined correct. But in this case sections are totally a mess.
Why overlapping conditional subassemblies ? It is very simple. GOMACO cable extensions !

Worst of all.
Leica Infrastructure Link exporting to HeXML is a perfect LandXML enhancement since points are named -even though using a weird manner- and is LandXML and HeXML schema error free
But in some cases finally unexplained error stops the transformation to RoadRunner job. eg "error found at position 1469"

 

Thursday, 27 April 2017

Civil 3D 2017 : corridor endless out of date status finally missing after saving drawing

https://forums.autodesk.com/t5/autocad-civil-3d-forum/corridor-out-of-date/td-p/2923316

"

My problem was even worse not just Rebuild status always on.
 
Immediatelly after saving dwg...
 
...an alignment, some feature lines and the corridor that is built on them were lost. Just not existing anymore in prospector and screen !
Undoing resurrected them !
 
OR
...the above mentioned alignment was visible but not existing in the prospector ! I could right click on it and handle it although it was a...ghost ! Corridor reported it as its baseline !
If my next action was...
...moving it siteless the object became visible to prospector and everything became normal !
...saving dwg again, alignment became invisible and corridor reported that had no baselines ! Totally lost. Single undo does nothing. Second undo ressurects corridor object and the graph but not the alignment object to the prospector.
 
Had to find a solution since saving and loosing them was not an option and ofcourse keeping it open until a solution was found in the future is impossimble (on the way to madness and what could i say to my supervisors expecting from me to finish just a simple job)
 
I was lucky enough to find out that setting the alignment to whatever site, new or existing with whatever name is the caution to loose it and the corridor that is attached to it and also the feature lines.
 
Moving to site none (siteless) , rebuilt status clears after rebuilding and saving works fine !
 
I attach the dwg. First import in an empty dwg the also zipped subassemblies and then open the dwg.
The objects i mentioned above are...
alignment named...EDL002B240_TKV
corridor named...EDL002B240_TKV
feature lines...both siteless
Try move them to existing site or a new one and then rebuild. Rebuild status remains on whatever i do.
Finally try saving dwg twice.

"

Saturday, 9 July 2016

Yet another Civil 3D major bug (and a minor one) : Assembly properties​...get value from...end elevation (not getting it)

I really can not understand how is it possible for such a bug to exist after so many years and so many users.

http://forums.autodesk.com/t5/autocad-civil-3d-general/assembly-properties-get-value-from-end-elevation-not-getting-it/td-p/6426929

Assembly properties​...get value from...end elevation (not getting it)

07-08-2016 11:51 PM 

I create an assembly with a subassembly that is capable of getting value from a "Target elevation" (eg LinkSlopeToSurface) when in "Assembly properties>Construction>Input values". In Parameter reference i check the "Use" next to "Target elevation". I select a "xxx.End elevation".
Elevation applied is wrong. It is the default constant value of the eg LinkSlopeToSurface.
If i change the target to "xxx.Begin elevation" the correct elevation is apllied.
This happens to what ever subassembly can get a "Target elevation".
My conclusion. "xxx.End elevation" property is not exposed.

This also takes place when using my custom SAC subassemblies and i almost got crazy trying to find the bug in my coding.

Three notices.

The good one.
Having opened both assembly properties and cross sections window when changing the get value target there is an immediate response to the graphics at the cross sections window without rebuilding corridor although corridor at toolspace is marked as needing rebuild !!!

Althought graphics response to this property value change is immediate, when changing a subassembly name, the "Get value from" is not immediately informed and the old name is used. User must close and reopen "Assembly properties".

The bad one.
The rule is that property values among different subassembly groups are not exposed.
Group eg B cannot see group A values. BUT if names of subassemblies are identical the property values exposed are the ones of the first whatever group!!! The rule is not applied in this case!!! Leak it is. A serious mistake can take place.
I think this is a logical mistake that the Development Team should take care off.

Saturday, 20 June 2015

SAC 2014 : BUG : deleting enum item

In the past i created a subassembly using SAC 2014.


New needs made me to clone it and create a slightly different one.


Among other changes i reduced by one the population of the items of an enum.
Nothing worked fine after this.


While in SAC experimenting with different scenarios i noticed that when i changed to none a superelevation variable of my own, just after this action, this variable changed by itsehelf to Side!!!
And it happened no matter what workaround i tried.


I tried importing the subassembly to C3D 2014 so to see what will happen. Abnormal behaviour. Changing values to the reduced enum resulted to disappearing points (!) and various error reports.


Finally after restoring the erased enum value everything worked fine!

Friday, 12 June 2015

Civil 3D 2014 : Corridor surfaces tips and workarounds

Creating corridor surfaces can be done by two main ways.
Feature lines and Links.

When created by links there are many cases that civil 3d jump from links to points that do not belong to those links.
So the best way to create a correct surface is to use feature lines.
But in this case when creating custom subassemblies you must assign codes to all points for all cases.
Another disadvantage is that there are cases that surfaces may end to points with various coding.

Another serious issue has to do with boundaries.
Selecting automatic corridor edges in most cases gives a wrong boundary.
Interactive works fine.
By object works fine.
The best of all is to select which feature lines to use.But it can not be used for all cases.

Saturday, 23 May 2015

Civil 3D Survey : Bug : Insert traverse into the drawing

Right clicking on a traverse node in the tree list in the survey tab and selecting "Insert in the drawing" does nothing.
To make it work you must right click at the traverse table next to the tree list view.

Obviously a bug.

Sunday, 10 August 2014

Civil 3D API help

Πρόσφατα χρειάστηκε να γράψω ένα ακόμη πρόγραμμα για το Civil 3D 2014. Σε .NET με Visual studio 2013 express edition και Visual Basic.
Οι HTML report lists που εμφανίζει από το QTO είναι μη αξιοποιήσιμες από το EXCEL.
Έπρεπε λοιπόν να κάνω εξαγωγή ανά Alignment/SLG/Material list/Material/Station με συγκεκριμένο format.
Η τρέχουσα έκδοση έκανε expose του QTO για πρώτη φορά! Έλα όμως που ως συνήθως το documentation είναι απλά επιφανειακό. Τέλος πάντων βρήκα και το path και την area propery που ήθελα.
Τεστάροντας όμως είδα ότι έπαιρνα πάντα area value μηδέν. Θεώρησα ότι δεν ήταν τελικά αυτό το ζητούμενο path και property κι άρχισα να ξαναψάχνω στα τυφλά μέσα στο API.
Στα πρόθυρα της παράνοιας κατέληξα δια της εις άτοπον απαγωγή ότι η αρχική μου επιλογή ήταν η ορθή κι ότι υπήρχε bug. Η property ήταν exposed αλλά ο προγραμματιστής ξέχασε να κάνει assign την value. Κι αυτό γιατί τα σημεία που όριζαν την επιφάνεια και ήταν προσβάσιμα κι έδιναν την προσδοκώμενη τιμή όταν την υπελόγιζα με απλό κομπιουτεράκι.
Οπότε έγραψα και μια fucntion για να υπολογίζω μόνος μου την επιφάνεια. Μόνον που τα πράματα δεν ήταν τόσο απλά. Η επιφάνεια μπορεί να ήταν μια σύνθεση από πολλές κλειστές επιφάνειες.
Τελικά όλα πήγαν καλά. Τις επόμενες μέρες θα δώσω και την διεύθυνση όπου αυτό το πρόγραμμα θα μπορεί να γίνει download.