Hi everyone again,
I am trying to define an structure with VB.net and I have problems with buckling length. I am defining it with:
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
but I have obtained a numeric length of the bars. I want to enter a coefficient for "Y" and a coefficient for "Z", which is the correct method?
Thanks...
Solved! Go to Solution.
Solved by Rafal.Gaweda. Go to Solution.
Solved by Rafal.Gaweda. Go to Solution.
Thank you for your answer, but I have already tried this code. All the "RDimMembParams..." works but the "RdimLabelData.Set.." doesn't work especially for wood members with IRDimMembParamsE52 norm.
It works for IRDimMembParamsE32 for steel members. Here is my code :
Dim Robot As RobotOM.IRobotApplication = Rob
Robot.Project.Preferences.SetActiveCode(IRobotCodeType.I_CT_TIMBER_STRUCTURES, "NF EN 1995-1:2005/NA:2010/A1:2008")
Dim RLabel2 As IRobotLabel = Robot.Project.Structure.Labels.Create(IRobotLabelType.I_LT_MEMBER_TYPE, "TYPE-TRAVERSE")
Dim RdimLabelData As IRDimMembDefData = RLabel2.Data
Dim RDimMembParams As IRDimMembParamsE52 = RdimLabelData.CodeParams
RDimMembParams.BuckLengthCoeffY = clfy
RDimMembParams.BuckLengthCoeffZ = clfz
RdimLabelData.Type = IRDimMembDefType.I_DMDT_USER
RdimLabelData.SetDeflYZRelLimit(IRDimMembDefDeflDataType.I_DMDDDT_DEFL_Y, 100)
RdimLabelData.SetDeflYZRelLimit(IRDimMembDefDeflDataType.I_DMDDDT_DEFL_Z, 100)
RdimLabelData.SetDeflectionYZ(IRDimMembDefDeflDataType.I_DMDDDT_DEFL_Y, 1)
RdimLabelData.SetDeflectionYZ(IRDimMembDefDeflDataType.I_DMDDDT_DEFL_Z, 1)
RdimLabelData.CantileverMode = 1
RdimLabelData.SetDisplXYRelLimit(IRDimMembDefDispDataType.I_DMDDDT_DISP_X, 100)
RdimLabelData.SetDisplXYRelLimit(IRDimMembDefDispDataType.I_DMDDDT_DISP_Y, 100)
RdimLabelData.SetDisplacementXY(IRDimMembDefDispDataType.I_DMDDDT_DISP_X, 1)
RdimLabelData.SetDisplacementXY(IRDimMembDefDispDataType.I_DMDDDT_DISP_Y, 1)
RdimLabelData.CodeParams = RDimMembParams
Robot.Project.Structure.Labels.StoreWithName(RLabel2, "TYPE-TRAVERSE")
I think the reason is I used Labels.CreateLike to force robot creating a "wood member" and the wood member "Barre bois" has no service parameters by default.
Dim RLabel2 As IRobotLabel = Robot.Project.Structure.Labels.CreateLike(IRobotLabelType.I_LT_MEMBER_TYPE, NomTypeBarreBois, "Barre bois")
If I use only Labels.Create Robot will create a "Steel Member" by default.
Do you now how can I force Robot to create a wood member without using "Labels.CreateLike"?
I found the solution :
"Dim RDimMembParams" must be after all the "RdimLabelData.Set..."
The order is important...
Here is the false code :
Dim PredefinedLabel As String = Robot.Project.Structure.Labels.GetPredefinedName(IRobotPredefinedLabel.I_PL_MEMBER_TYPE_TIMBER_BEAM)
Dim RLabel2 As IRobotLabel = Robot.Project.Structure.Labels.CreateLike(IRobotLabelType.I_LT_MEMBER_TYPE, NomTypeBarreBois, PredefinedLabel)
Dim RdimLabelData As IRDimMembDefData = RLabel2.Data
Dim RDimMembParams As IRDimMembParamsE52 = RdimLabelData.CodeParams
RDimMembParams.BuckLengthCoeffY = clfy
RDimMembParams.BuckLengthCoeffZ = clfz
RdimLabelData.Type = IRDimMembDefType.I_DMDT_USER
RdimLabelData.SetLengthYZUV(IRDimMembDefLengthDataType.I_DMDLDT_LENGTH_Y, lfy)
RdimLabelData.SetLengthYZUV(IRDimMembDefLengthDataType.I_DMDLDT_LENGTH_Z, lfz)
RdimLabelData.SetDeflYZRelLimit(IRDimMembDefDeflDataType.I_DMDDDT_DEFL_Y, FlecheFinaleY)
RdimLabelData.SetDeflYZRelLimit(IRDimMembDefDeflDataType.I_DMDDDT_DEFL_Z, FlecheFinaleZ)
RdimLabelData.SetDisplXYRelLimit(IRDimMembDefDispDataType.I_DMDDDT_DISP_X, depX)
RdimLabelData.SetDisplXYRelLimit(IRDimMembDefDispDataType.I_DMDDDT_DISP_Y, depY)
RdimLabelData.CodeParams = RDimMembParams
Robot.Project.Structure.Labels.StoreWithName(RLabel2, NomTypeBarreBois)
Here is the right code :
Dim PredefinedLabel As String = Robot.Project.Structure.Labels.GetPredefinedName(IRobotPredefinedLabel.I_PL_MEMBER_TYPE_TIMBER_BEAM)
Dim RLabel2 As IRobotLabel = Robot.Project.Structure.Labels.CreateLike(IRobotLabelType.I_LT_MEMBER_TYPE, NomTypeBarreBois, PredefinedLabel)
Dim RdimLabelData As IRDimMembDefData = RLabel2.Data
RdimLabelData.Type = IRDimMembDefType.I_DMDT_USER
RdimLabelData.SetLengthYZUV(IRDimMembDefLengthDataType.I_DMDLDT_LENGTH_Y, lfy)
RdimLabelData.SetLengthYZUV(IRDimMembDefLengthDataType.I_DMDLDT_LENGTH_Z, lfz)
RdimLabelData.SetDeflYZRelLimit(IRDimMembDefDeflDataType.I_DMDDDT_DEFL_Y, FlecheFinaleY)
RdimLabelData.SetDeflYZRelLimit(IRDimMembDefDeflDataType.I_DMDDDT_DEFL_Z, FlecheFinaleZ)
RdimLabelData.SetDisplXYRelLimit(IRDimMembDefDispDataType.I_DMDDDT_DISP_X, depX)
RdimLabelData.SetDisplXYRelLimit(IRDimMembDefDispDataType.I_DMDDDT_DISP_Y, depY)
Dim RDimMembParams As IRDimMembParamsE52 = RLabel2.Data.CodeParams
RDimMembParams.BuckLengthCoeffY = clfy
RDimMembParams.BuckLengthCoeffZ = clfz
RdimLabelData.CodeParams = RDimMembParams
Robot.Project.Structure.Labels.StoreWithName(RLabel2, NomTypeBarreBois)
There is only one problem now with the 'RelLimitDeflUy' and 'RelLimitdeflUz'
(You can see what I mean with the following picture)
Dim RdimLabelData As IRDimMembDefData = RLabel2.Data
Dim RDimMembParams As IRDimMembParamsE52 = RLabel2.Data.CodeParams
RDimMembParams.RelLimitDeflUy = FlecheRelativeY
RDimMembParams.RelLimitdeflUz = FlecheRelativeZ
Is it possible to set these parameters with IRDimMembParamsE52 norm?
@villedavray_charles wrote:
There is only one problem now with the 'RelLimitDeflUy' and 'RelLimitdeflUz'
(You can see what I mean with the following picture)
These settings are not implemented in API
Here is the right code :
...
Dim RLabel2 As IRobotLabel = Robot.Project.Structure.Labels.CreateLike(IRobotLabelType.I_LT_MEMBER_TYPE, NomTypeBarreBois, PredefinedLabel)
Exactly
Hi @Rafal.Gaweda ,
Just a question about this: does it mean that we cannot use API to define member type in Russian code as SP 16.13330.2011 (nothing about russian code in IRDimMembersParamxxxx)?
I need to change 30 member typ in 24 calculation model...
Thank you
Hi @paul.bassLH ,
I can't check now, but it seems that we cannot use API to define member type in Russian code as SP 16.13330.2011.
I would suggest a small workaround:
Do you find the posts helpful? "LIKE" these posts!
Have your question been answered successfully? Click 'ACCEPT SOLUTION' button.
Roman Zhelezniak
Robot Evangelist & Passionate Civil Structural Engineer
Hello,
I just came to the point in my code where I am going to define code design parameters. I am working with Canadian code.
IRobotApplication robApp = new RobotApplication();
RobotStructure structure = robApp.Project.Structure;
robApp.Project.Preferences.SetActiveCode(IRobotCodeType.I_CT_STEEL_STRUCTURES, designCode);
RobotLabelServer labelServer = structure.Labels;
IRobotLabel beamDesignParametersLabel = labelServer.Create(IRobotLabelType.I_LT_MEMBER_TYPE, "simple beam");
IRDimMembDefData beamDesignParametersData = (IRDimMembDefData)beamDesignParametersLabel.Data;
IRDimMembParamsCAN beamDesignParameters = (IRDimMembParamsCAN)beamDesignParametersData.CodeParams;
labelServer.Store(beamDesignParametersLabel);
but I am getting this error. Can anyone help with this?