Example project page wizard to create geometry

Pernelle Marone-Hitz
Pernelle Marone-Hitz Member, Moderator, Employee Posts: 741
First Comment First Anniversary Ansys Employee Solution Developer Community of Practice Member
edited June 2023 in 3D Design

Is there an demo extension of a project page wizard that creates create geometry in SpaceClaim?

Tagged:

Best Answer

  • Pernelle Marone-Hitz
    Pernelle Marone-Hitz Member, Moderator, Employee Posts: 741
    First Comment First Anniversary Ansys Employee Solution Developer Community of Practice Member
    edited June 2023 Answer ✓

    An example extension is available in the post below.

    This extension illustrates how to add a "Static Structural" component system to the WB project schematic and to define the geometry in SpaceClaim through script. This example has two steps to illustrate two possible methods of sending the python script to SpaceClaim:

    • In step 1, an assembly of several cylinders is created. Geometry step 1 This is done by calling function onupdateSCDM1(). In this function, RunScript() to send a Python script to SpaceClaim: myGeometry.RunScript(ScriptFile=myScriptGeometry, GeometryContainer="Geometry", useAsMacro="false") and myScriptGeometry is defined in the main.py as: myScriptGeometry = myInstallDir + "\geometry\myDemoScript.py"

    • In step 2,two cubes and a sphere are created. GeometryStep2 This is done by calling function onupdateSCDM2(). In this function, SendCommand() is used to send the python commands as strings to SpaceClaim.

Answers

  • Pernelle Marone-Hitz
    Pernelle Marone-Hitz Member, Moderator, Employee Posts: 741
    First Comment First Anniversary Ansys Employee Solution Developer Community of Practice Member

    Here is the code:

    • For the .xml file:
    <extension name="DemoWizardCreateGeometry" icon="images/demo_01.png" version="1">
      <script src="main.py" />
      <wizard name="demoWizardGeometry" caption="demoWizardGeometry" version="1" context="Project">
        <step name="Geometry1" version="0" caption="SCDM - 1">
          <property control="float" name="myDummyParameter" caption="myDummyParameter" default="1.0" />
          <callbacks>
            <onupdate>onupdateSCDM1</onupdate>
          </callbacks>
        </step>
        <step name="myGeometry2" version="0" caption="SCDM - 2">
          <property control="float" name="height" caption="height" default="0.4 [m]" unit="Length" />
          <callbacks>
            <onupdate>onupdateSCDM2</onupdate>
          </callbacks>
        </step>
      </wizard>
    </extension>
    
    • For the main.py file
    myInstallDir = ExtAPI.Extension.InstallDir
    myScriptGeometry = myInstallDir + "\\geometry\\myDemoScript.py"
        
    def onupdateSCDM1(step):
        myTemplate = GetTemplate(TemplateName="Static Structural",Solver="ANSYS")
        mySystem = myTemplate.CreateSystem()
        myGeometry = mySystem.GetContainer(ComponentName="Geometry")
        myGeometry.Edit(IsSpaceClaimGeometry=True)
        myGeometry.RunScript(ScriptFile=myScriptGeometry, GeometryContainer="Geometry", useAsMacro="false")
        myGeometry.Exit()
        
    def myBlock(x1,x2,y1,y2,z1,z2):
        myCommand="""result = BlockBody.Create(Point.Create("""+str(x1)+""","""+str(y1)+""","""+str(z1)+"""), Point.Create("""+str(x2)+""","""+str(y2)+""","""+str(z2)+"""), ExtrudeType.ForceIndependent)"""
        return myCommand
        
    def onupdateSCDM2(step):
        myTemplate = GetTemplate(TemplateName="Static Structural",Solver="ANSYS")
        mySystem = myTemplate.CreateSystem()
        myGeometry = mySystem.GetContainer(ComponentName="Geometry")
        myGeometry.Edit(IsSpaceClaimGeometry=True)
        cmd=myBlock(-2,-1,-2,-1,-2,-1)
        myGeometry.SendCommand(Language="Python", Command=cmd)
        cmd=myBlock(0,1,0,1,0,step.Properties["height"].Value)
        myGeometry.SendCommand(Language="Python", Command=cmd)
        cmd="""myParameter=0.25"""
        myGeometry.SendCommand(Language="Python", Command=cmd)
        cmd="""SphereBody.Create(Point.Create(0,0,0), Point.Create(0,0,myParameter), ExtrudeType.ForceIndependent)"""
        myGeometry.SendCommand(Language="Python", Command=cmd)
        myGeometry.Exit()