The IronPython script dm.py follows. This script defines all
functions executed by the callbacks in the steps for the DesignModeler wizard
CreateBridge
.
import units def CreateDeck(ag): ExtAPI.CreateFeature("Deck") def CreateSupport(ag): ExtAPI.CreateFeature("Support") def GenerateDeck(feature,fct): length = feature.Properties["Length"].Value length = units.ConvertUnit(length, ExtAPI.DataModel.CurrentUnitFromQuantityName("Length"), "m") width = feature.Properties["Width"].Value width = units.ConvertUnit(width, ExtAPI.DataModel.CurrentUnitFromQuantityName("Length"), "m") num = feature.Properties["Beams"].Value builder = ExtAPI.DataModel.GeometryBuilder bodies = [] boxGen = builder.Primitives.Solid.CreateBox([0.,-width/2.,-0.3],[length,width/2.,0.]) bodies.Add(boxGen.Generate()) w = (length-0.1*num)/(num-1.)+0.1 for i in range(num-1): beamGen = builder.Primitives.Solid.CreateBox([i*w,-width/2.,-0.6],[i*w+0.1,width/2.,-0.3]) bodies.Add(beamGen.Generate()) beamGen = builder.Primitives.Solid.CreateBox([length-0.1,-width/2.,-0.6],[length,width/2.,-0.3]) bodies.Add(beamGen.Generate()) beamGen = builder.Primitives.Solid.CreateBox([0.,-width/2.,-1.],[length,-width/2.+0.2,-0.6]) bodies.Add(beamGen.Generate()) beamGen = builder.Primitives.Solid.CreateBox([0.,width/2.-0.2,-1.],[length,width/2.,-0.6]) bodies.Add(beamGen.Generate()) feature.Bodies = bodies feature.MaterialType = MaterialTypeEnum.Add return True def GenerateSupport(feature,fct): length = feature.Properties["Length"].Value length = units.ConvertUnit(length, ExtAPI.DataModel.CurrentUnitFromQuantityName("Length"), "m") height = feature.Properties["Height"].Value height = units.ConvertUnit(height, ExtAPI.DataModel.CurrentUnitFromQuantityName("Length"), "m") width = feature.Properties["Width"].Value width = units.ConvertUnit(width, ExtAPI.DataModel.CurrentUnitFromQuantityName("Length"), "m") num = feature.Properties["Number"].Value builder = ExtAPI.DataModel.GeometryBuilder bodies = [] w = (length-2.*num)/(num+1.)+2. for i in range(num): beamGen = builder.Primitives.Solid.CreateBox([(i+1)*w,-width/2.,-1.-height], [(i+1)*w+2.,width/2.,-1.]) bodies.Add(beamGen.Generate()) beamGen = builder.Primitives.Solid.CreateBox([0.,-width/2.,-5.],[2.,width/2.,-1.]) bodies.Add(beamGen.Generate()) beamGen = builder.Primitives.Solid.CreateBox([length-2.,-width/2.,-5.],[length,width/2.,-1.]) bodies.Add(beamGen.Generate()) feature.Bodies = bodies feature.MaterialType = MaterialTypeEnum.Freeze return True def UpdateDeck(step): deck = ExtAPI.CreateFeature("Deck") deck.Properties["Length"].Value = step.Properties["Deck/Length"].Value deck.Properties["Width"].Value = step.Properties["Deck/Width"].Value deck.Properties["Beams"].Value = step.Properties["Deck/Beams"].Value ExtAPI.DataModel.FeatureManager.Generate() def UpdateSupports(step): supports = ExtAPI.CreateFeature("Support") supports.Properties["Length"].Value = step.PreviousStep.Properties["Deck/Length"].Value supports.Properties["Width"].Value = step.PreviousStep.Properties["Deck/Width"].Value+6 supports.Properties["Height"].Value = step.Properties["Supports/Height"].Value supports.Properties["Number"].Value = step.Properties["Supports/Number"].Value ExtAPI.DataModel.FeatureManager.Generate()