Community
Civil 3D Customization
Welcome to Autodesk’s AutoCAD Civil 3D Forums. Share your knowledge, ask questions, and explore popular AutoCAD Civil 3D Customization topics.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

C3D 2012 SuperelevationCriticalStation.GetSlope VB.Net

8 REPLIES 8
Reply
Message 1 of 9
RodWing
475 Views, 8 Replies

C3D 2012 SuperelevationCriticalStation.GetSlope VB.Net

I'm having an issue in attempting to get the slope at a station 

 

Executing this line of code

nsLeftIn_End = mySuperStn.GetSlope(Autodesk.Civil.Land.SuperelevationCrossSegmentType.LeftInShoulderCrossSlope)

 

in the function below throws an execption:

Operation is not valid due to the current state of the object.

 

I've stripped down the function to show where the error is happening. I verifiied that the execption is still thrown in this version of the function.

 

I can't for the life of me figure out what is wrong with the state of the object that won't allow for getting the slope value.

 

Any suggestions appreciated.

Thanks.

 

 Function ModifySuper(ByRef myAlg As Alignment) As Boolean
        Dim nsLeftIn_End As Double
        Dim nsLeftOut_End As Double
        Dim nsRightIn_End As Double
        Dim nsRightOut_End As Double

        Dim mySuperCol As SuperelevationCriticalStationCollection
        Dim mySuperStn As SuperelevationCriticalStation

        ModifySuper = False
        Try
            If IsNothing(myAlg) Then
                MsgBox("Cannot locate alignment in ModifySuper ", vbExclamation)
                Exit Function
            End If

            mySuperCol = myAlg.SuperelevationCriticalStations
            For Each mySuperStn In mySuperCol
                Select Case mySuperStn.StationType
                    Case Autodesk.Civil.Land.SuperelevationCriticalStationType.BeginAlignment

                    Case Autodesk.Civil.Land.SuperelevationCriticalStationType.EndAlignment

                    Case Autodesk.Civil.Land.SuperelevationCriticalStationType.BeginNormalCrown

                    Case Autodesk.Civil.Land.SuperelevationCriticalStationType.EndNormalCrown

                    Case Autodesk.Civil.Land.SuperelevationCriticalStationType.EndNormalShoulder
                        Try
                            nsLeftIn_End = mySuperStn.GetSlope(Autodesk.Civil.Land.SuperelevationCrossSegmentType.LeftInShoulderCrossSlope)
                            nsLeftOut_End = mySuperStn.GetSlope(Autodesk.Civil.Land.SuperelevationCrossSegmentType.LeftOutShoulderCrossSlope)
                            nsRightIn_End = mySuperStn.GetSlope(Autodesk.Civil.Land.SuperelevationCrossSegmentType.RightInShoulderCrossSlope)
                            nsRightOut_End = mySuperStn.GetSlope(Autodesk.Civil.Land.SuperelevationCrossSegmentType.RightOutShoulderCrossSlope)

                        Catch ex As Exception
                            MsgBox("Exception: " & ex.Message)
                        End Try

                    Case Autodesk.Civil.Land.SuperelevationCriticalStationType.LevelCrown
                End Select

            Next

            ModifySuper = True

        Catch ex As Exception
            MsgBox("Execption: " & ex.Message)
        End Try
    End Function

 

8 REPLIES 8
Message 2 of 9
Partha.Sarkar
in reply to: RodWing

Hi RodWing,

 

Did you check in the UI dialog if there is a valid value set for LeftInShoulderCrossSlope at that station?


You can take a look at the following Blog post and check the screenshot I used there to understand which UI window I am referring here.

 

http://adndevblog.typepad.com/infrastructure/2012/06/want-to-add-a-superelevationcriticalstation-usi...


Thanks,



Partha Sarkar
Developer Technical Services
Autodesk Developer Network

Message 3 of 9
joantopo
in reply to: Partha.Sarkar

This problem appears when exists two default criticalstation that you can´t delete.

These criticalstations are the start alignment and the end alignment.

 

 

Exception:                                                               Condition:

 

System.ArgumentOutOfRangeException

Thrown when index is out of the collecton range.
System.InvalidOperationExceptionThrown when the criticalStationType is BeingAlignment or EndAlignment.
Autocad C3D 2019 SP3, 2020 & 2021
Intel I9 9900K with frontal watercooler alphacool eisbaer 360 (original fans mounted in pull)- 3 fans Corsair 120 ML PRO in push.
MOBO Gygabyte Z390 Aorus Master- Corsair RGB Vengeance 64GB RAM (4x16) CL16
Nvidia Quadro RTX 4000
Samsung 970 EVO PLUS 1TB (unit C). Samsung 970 PRO 512GB (for data)
Power Supply: Corsair TX850M PLUS


Descubre mi programa VisorNET para Civil 3D:
https://apps.autodesk.com/CIV3D/es/Detail/Index?id=appstore.exchange.autodesk.com%3avisornet_windows32and64%3aes
Message 4 of 9
joantopo
in reply to: joantopo

And this exception can be too:

 

http://adndevblog.typepad.com/autocad/2012/05/adding-or-modifying-the-database-from-modeless-dialog-...

 

You have to "Lock" the database before write it.

 

 

Autocad C3D 2019 SP3, 2020 & 2021
Intel I9 9900K with frontal watercooler alphacool eisbaer 360 (original fans mounted in pull)- 3 fans Corsair 120 ML PRO in push.
MOBO Gygabyte Z390 Aorus Master- Corsair RGB Vengeance 64GB RAM (4x16) CL16
Nvidia Quadro RTX 4000
Samsung 970 EVO PLUS 1TB (unit C). Samsung 970 PRO 512GB (for data)
Power Supply: Corsair TX850M PLUS


Descubre mi programa VisorNET para Civil 3D:
https://apps.autodesk.com/CIV3D/es/Detail/Index?id=appstore.exchange.autodesk.com%3avisornet_windows32and64%3aes
Message 5 of 9
joantopo
in reply to: joantopo

For Each mySuperStn In mySuperCol

If mySuperStn.Station = myAlg.StartingStation OrElse mySuperStn.Station = myAlg.EndingStation Then

//nothing 


Else

Select case....

End If

 

Autocad C3D 2019 SP3, 2020 & 2021
Intel I9 9900K with frontal watercooler alphacool eisbaer 360 (original fans mounted in pull)- 3 fans Corsair 120 ML PRO in push.
MOBO Gygabyte Z390 Aorus Master- Corsair RGB Vengeance 64GB RAM (4x16) CL16
Nvidia Quadro RTX 4000
Samsung 970 EVO PLUS 1TB (unit C). Samsung 970 PRO 512GB (for data)
Power Supply: Corsair TX850M PLUS


Descubre mi programa VisorNET para Civil 3D:
https://apps.autodesk.com/CIV3D/es/Detail/Index?id=appstore.exchange.autodesk.com%3avisornet_windows32and64%3aes
Message 6 of 9
joantopo
in reply to: joantopo

This is the solution:

 

You have to write code of each Segment  Type using "Try", because maybe doesn´t exist that segment  type (however, left outside lane and right outside lane always exist). You can use boolean variables.(In catch method bool variable=false)

 

And you have to know if a Segment type exist.

 

I had the same problem.

 

I think that It should exist in the API (superelevationCriticalStation Class) the booleans properties 

IsSegmentTypeLeftInShoulderCrossSlope, IsSegmentTypeLeftinLaneCrossSlope,...

 

Excuse me because I  have remixed  C# code and  Visual Basic.

 

bool LeftInShoulderCrossSl0pe

Try nsLeftIn_End = mySuperStn.GetSlope(Autodesk.Civil.Land.SuperelevationCrossSegmentType.LeftInShoulderCrossSlope)

LeftInShoulderCrossSlope=true

end try

catch

LeftInShoulderCrossSlpe=false

end catch




Autocad C3D 2019 SP3, 2020 & 2021
Intel I9 9900K with frontal watercooler alphacool eisbaer 360 (original fans mounted in pull)- 3 fans Corsair 120 ML PRO in push.
MOBO Gygabyte Z390 Aorus Master- Corsair RGB Vengeance 64GB RAM (4x16) CL16
Nvidia Quadro RTX 4000
Samsung 970 EVO PLUS 1TB (unit C). Samsung 970 PRO 512GB (for data)
Power Supply: Corsair TX850M PLUS


Descubre mi programa VisorNET para Civil 3D:
https://apps.autodesk.com/CIV3D/es/Detail/Index?id=appstore.exchange.autodesk.com%3avisornet_windows32and64%3aes
Message 7 of 9
joantopo
in reply to: joantopo

This is the exactly same sample.

http://wikihelp.autodesk.com/AutoCAD_Civil_3D/enu/2014/Help/API_Developer's_Guide/0059-Alignmen59/00...

Autocad C3D 2019 SP3, 2020 & 2021
Intel I9 9900K with frontal watercooler alphacool eisbaer 360 (original fans mounted in pull)- 3 fans Corsair 120 ML PRO in push.
MOBO Gygabyte Z390 Aorus Master- Corsair RGB Vengeance 64GB RAM (4x16) CL16
Nvidia Quadro RTX 4000
Samsung 970 EVO PLUS 1TB (unit C). Samsung 970 PRO 512GB (for data)
Power Supply: Corsair TX850M PLUS


Descubre mi programa VisorNET para Civil 3D:
https://apps.autodesk.com/CIV3D/es/Detail/Index?id=appstore.exchange.autodesk.com%3avisornet_windows32and64%3aes
Message 8 of 9
Partha.Sarkar
in reply to: joantopo

Hi,

 

Is this issue resolved through this link ?

Do you need any further help ?

 

Thanks,



Partha Sarkar
Developer Technical Services
Autodesk Developer Network

Message 9 of 9
joantopo
in reply to: Partha.Sarkar

No. Thank you.

I was only adding more information.

Autocad C3D 2019 SP3, 2020 & 2021
Intel I9 9900K with frontal watercooler alphacool eisbaer 360 (original fans mounted in pull)- 3 fans Corsair 120 ML PRO in push.
MOBO Gygabyte Z390 Aorus Master- Corsair RGB Vengeance 64GB RAM (4x16) CL16
Nvidia Quadro RTX 4000
Samsung 970 EVO PLUS 1TB (unit C). Samsung 970 PRO 512GB (for data)
Power Supply: Corsair TX850M PLUS


Descubre mi programa VisorNET para Civil 3D:
https://apps.autodesk.com/CIV3D/es/Detail/Index?id=appstore.exchange.autodesk.com%3avisornet_windows32and64%3aes

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Rail Community


Autodesk Design & Make Report