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
Solved! Go to Solution.
Solved by Rafal.Gaweda. Go to Solution.
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
http://forums.autodesk.com/t5/Robot-Structural-Analysis/Manual-Calculations-for-Steel-Design-using-A... - check page 101-102 in pdf
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.
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...
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
Hello,
How can I define a Parameterizable section by coding with RObot API (Just like the following picture) ?
'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)
How can I define load duration class for Eurocode 5 timber design (with RobotOM API)
Not implemented
How can I define a Parameterizable section by coding with RObot API
Not implemented.
Can't find what you're looking for? Ask the community or share your knowledge.