Robot Structural Analysis Forum
Welcome to Autodesk’s Robot Structural Analysis Forums. Share your knowledge, ask questions, and explore popular Robot Structural Analysis topics.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

API, RSA design

12 REPLIES 12
SOLVED
Reply
Message 1 of 13
AbelSV78
1644 Views, 12 Replies

API, RSA design

Hi,

I have recently started to use API with RSA. I am triying to design a simple steel structure following Robot API SteelDesign help from SDK. I have obtained the bar model but I have not obtained the design bo (see atachment). This is my VBA code:

      

        robapp.Project.CalcEngine.Calculate()

 

        '''''''''''''''''''''¿?¿?¿?¿?¿?¿?¿?¿?

        Dim RobStr As RobotOM.IRobotStructure

        RobStr = robapp.Project.Structure

        Dim RobLab As RobotOM.IRobotLabel

        Dim RdmMembDefData As RobotOM.IRDimMembDefData

        RobLab = RobStr.Labels.Create(RobotOM.IRobotLabelType.I_LT_MEMBER_TYPE, "barra")

        RdmMembDefData = RobLab.Data

        With RdmMembDefData

            .SetStructureSwayYZ(RobotOM.IRDimMembDefBucklingDataType.I_DMDBDT_BUCKLING_Y, 1)

            .SetLengthYZUV(RobotOM.IRDimMembDefLengthDataType.I_DMDLDT_LENGTH_Y, 1.0#)

            .SetStructureSwayYZ(RobotOM.IRDimMembDefBucklingDataType.I_DMDBDT_BUCKLING_Z, 1)

            .SetLengthYZUV(RobotOM.IRDimMembDefLengthDataType.I_DMDLDT_LENGTH_Z, 1.0#)

            .SetDeflectionYZ(RobotOM.IRDimMembDefDeflDataType.I_DMDDDT_DEFL_Y, 1)

            .SetDeflectionYZ(RobotOM.IRDimMembDefDeflDataType.I_DMDDDT_DEFL_Z, 1)

            .SetDeflYZRelLimit(RobotOM.IRDimMembDefDeflDataType.I_DMDDDT_DEFL_Y, 10.0#)

            .SetDeflYZRelLimit(RobotOM.IRDimMembDefDeflDataType.I_DMDDDT_DEFL_Z, 10.0#)

            .CantileverMode = 1

            .SetDisplacementXY(RobotOM.IRDimMembDefDispDataType.I_DMDDDT_DISP_X, 1)

            .SetDisplacementXY(RobotOM.IRDimMembDefDispDataType.I_DMDDDT_DISP_Y, 1)

            .SetDisplXYRelLimit(RobotOM.IRDimMembDefDispDataType.I_DMDDDT_DISP_X, 10.0#)

            .SetDisplXYRelLimit(RobotOM.IRDimMembDefDispDataType.I_DMDDDT_DISP_Y, 10.0#)

        End With

        RdmMembDefData.Type = RobotOM.IRDimMembDefType.I_DMDT_USER

        'robapp.Structure.Labels.Store(Lab)

 

        'GENERAR GRUPOS

        RDmServer = robapp.Kernel.GetExtension("RDimServer")

        RDmServer.Mode = RobotOM.IRDimServerMode.I_DSM_STEEL

        RDmGrps = RDmServer.GroupsService

        GroupNo = 1

        RDmGrpl = RDmGrps.[New](0, GroupNo)

        RDmGrpl.Material = "S 275"

        RDmGrpl.Name = "grupo1"

        RDmStream = RDmServer.Connection.GetStream

        RDmStream.Clear()

        RDmStream.WriteText("1 3")

        RDmGrpl.SetMembList(RDmStream)

        RDmGrpProfs = RDmServer.Connection.GetGrpProfs

        RDmGrpProfs.Clear()

        RDmStream.Clear()

        'RDmStream.WriteText("IPE")

        'RDmGrpProfs.SetFamilies("Rcat", RDmStream)

        RDmGrpl.SetProfs(RDmGrpProfs)

        RDmGrps.Save(RDmGrpl)

 

        'PREPARAR DIMENSIONAMIENTO

        RDmEngine = RDmServer.CalculEngine

        With RDmEngine

            RDmCalPar = .GetCalcParam

            RDmCalCnf = .GetCalcConf

        End With

        RDmStream = RDmServer.Connection.GetStream

        RDmStream.Clear()

        RDmCalCnf.SetParamValue(RobotOM.IRDimCalcConfValueType.I_DCCPV_EFFRATIO, 0.9)

        RDmStream.WriteText("todo")

        RDmCalPar.SetObjsList(RobotOM.IRDimCalcParamVerifType.I_DCPVT_GROUPS_DESIGN, RDmStream)

        RDmCalPar.SetLimitState(RobotOM.IRDimCalcParamLimitStateType.I_DCPLST_SERVICEABILITY, 1)

        RDmCalPar.SetLimitState(RobotOM.IRDimCalcParamLimitStateType.I_DCPLST_ULTIMATE, 1)

        RDmStream.Clear()

        RDmStream.WriteText("1 2")

        RDmCalPar.SetLoadsList(RDmStream)

        RDmOptPar = RDmCalPar.GetOptimParam

        RDmOptPar.Optimization = 1

        RDmOptPar.SetOption(RobotOM.IRDimOptimParamOptionType.I_DOPOT_WEIGHT, 1)

        RDmOptPar.SetOption(RobotOM.IRDimOptimParamOptionType.I_DOPOT_MAX_SECTION_HEIGHT, 1)

        RDmOptPar.SetLimit(RobotOM.IRDimOptimParamLimitType.I_DOPLT_MAX_SECTION_HEIGHT, 0.5)

        RDmOptPar.SetOption(RobotOM.IRDimOptimParamOptionType.I_DOPOT_MIN_SECTION_HEIGHT, 1)

        RDmOptPar.SetLimit(RobotOM.IRDimOptimParamLimitType.I_DOPLT_MIN_SECTION_HEIGHT, 0.1)

        RDmOptPar.SetOption(RobotOM.IRDimOptimParamOptionType.I_DOPOT_MIN_FLANGE_THICKNESS, 1)

        RDmOptPar.SetLimit(RobotOM.IRDimOptimParamLimitType.I_DOPLT_MIN_FLANGE_THICKNESS, 0.01)

        RDmOptPar.SetOption(RobotOM.IRDimOptimParamOptionType.I_DOPOT_MIN_WEB_THICKNESS, 1)

        RDmOptPar.SetLimit(RobotOM.IRDimOptimParamLimitType.I_DOPLT_MIN_WEB_THICKNESS, 0.05)

        RDmOptPar.SetOption(RobotOM.IRDimOptimParamOptionType.I_DOPOT_ENTIRE_SET_SECTIONS, 1)

        RDmCalPar.SetOptimParam(RDmOptPar)

        With RDmEngine

            RDmEngine.SetCalcConf(RDmCalCnf)

            RDmEngine.SetCalcParam(RDmCalPar)

        End With

 

        'DIMENSIONAMIENTO

        RDmEngine.Solve(Nothing)

        RdmAllRes = RDmEngine.Results

        RdmAllResObjType = RdmAllRes.ObjectsType

        ObjCnt = RdmAllRes.ObjectsCount

        RDmGrpRes = RdmAllRes.Get(1)

        PrfFamCnt = RDmGrpRes.FamiliesCount

        Dim Index As Long

        For Index = 0 To PrfFamCnt - 1

            If Index = 0 And RDmGrpRes.IsOptimization Then

                OptFamIndex = RDmGrpRes.OptFamilyIndex

            End If

            If RDmGrpRes.Check(Index, RobotOM.IRDimGrpResCurrProf.I_DGRCP_PREVIOUS) Then

                RdmDetRes = RDmGrpRes.Get(Index, RobotOM.IRDimGrpResCurrProf.I_DGRCP_PREVIOUS)

            End If

            If RDmGrpRes.Check(Index, RobotOM.IRDimGrpResCurrProf.I_DGRCP_GOVERNING) Then

                RdmDetRes = RDmGrpRes.Get(Index, RobotOM.IRDimGrpResCurrProf.I_DGRCP_GOVERNING)

            End If

            If RDmGrpRes.IsOptimization And Index = OptFamIndex Then

                'section is optimal

            End If

            If RDmGrpRes.Check(Index, RobotOM.IRDimGrpResCurrProf.I_DGRCP_NEXT) Then

                RdmDetRes = RDmGrpRes.Get(Index, RobotOM.IRDimGrpResCurrProf.I_DGRCP_NEXT)

            End If

        Next

 

        'FINALIZAR EL CODIGO

        robapp.Window.Activate()

        rec = Nothing

        cas = Nothing

        node = Nothing

        sup_data = Nothing

        sup = Nothing

        s = Nothing

        robapp = Nothing

    End Sub

End Class

 

Could you help me in order to finish the steel design?

Is there any help document a little bit detailed?

Thank you in advance, best regards

 

12 REPLIES 12
Message 2 of 13
Rafal.Gaweda
in reply to: AbelSV78
Message 3 of 13
AbelSV78
in reply to: AbelSV78

Thank you very much for your attention. What we are looking for is the optimal section for the profiles of a structure, is it possible?

 

Best regards

 

Message 5 of 13
AbelSV78
in reply to: Rafal.Gaweda

Thank you again, but I was loofing for "change" or "Change all" sollution, and I have seen that it is not implemented in Robot API.

Is it correct??

 

Best regards.

Message 6 of 13
Rafal.Gaweda
in reply to: AbelSV78

changeall.jpg



Rafal Gaweda
Message 7 of 13
AbelSV78
in reply to: AbelSV78

Thanks a lot. this is what I was looking for.

 

I am preparing a recursive process, is there any way in order to avoid the "Acept" window in Robot after "change all"?

 

Thank you again...

Message 8 of 13
Rafal.Gaweda
in reply to: AbelSV78

What about robapp.Interactive=false?


Rafal Gaweda
Message 9 of 13

How can I define load duration class for Eurocode 5 timber design (with RobotOM API)

I join a picture to illustrate what I want to set by coding in VB.NET

 

Cordialement,

Charles THIERRY DE VILLE D'AVRAY

villedavray_charles@yahoo.fr

Best Regards,
Charles THIERRY DE VILLE D'AVRAY
villedavray_charles@yahoo.fr
Message 10 of 13

Hello,

 

How can I define a Parameterizable section by coding with RObot API (Just like the following picture) ?

 

Best Regards,
Charles THIERRY DE VILLE D'AVRAY
villedavray_charles@yahoo.fr
Message 11 of 13

'I find only the way to diplay the dialog box that allows you to define the duration of loads :


Dim RdmConnection As robotom.IRDimConnection = RDmServer.Connection
Dim Obj As Object = Nothing
RdmConnection.SendMessage(IRDimconnectionMsg.I_DCM_SHOW_LOADCASES_DIALOG, Obj)

Best Regards,
Charles THIERRY DE VILLE D'AVRAY
villedavray_charles@yahoo.fr
Message 12 of 13


How can I define load duration class for Eurocode 5 timber design (with RobotOM API)

 

Not implemented



Rafal Gaweda
Message 13 of 13


How can I define a Parameterizable section by coding with RObot API

 

Not implemented.



Rafal Gaweda

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

Post to forums  

Autodesk Design & Make Report