1 Reply Latest reply on Nov 21, 2013 1:10 PM by Cheryl O'Neill

    Insert -> Surface -> Fill via API calls?

    Torsten Pfuetzenreuter

      Hello,

       

      I'm trying to automate a prrocess that creates a solid from curves. This works very well using the menu, but in the SolidWorks Journal one function call is missing: The Insert -> Surface -> Fill command is not shown in the journal, only the selection of the different curves is logged. A call of InsertFillSurface2 does not work as expected, the returnd feature is Null. I'm also missing an option from the menu command in the API: repair boundary.

       

      Any help or advice?

       

      Torsten

        • Re: Insert -> Surface -> Fill via API calls?
          Cheryl O'Neill

          Below is a simple VBA macro that creates a fill-surface feature that might help you get started.

           

          '--------------------------------------------------
          ' Preconditions: Ensure that the part template file named
          ' part.prtdot exists in the specified path.
          '
          ' Postconditions:
          ' 1. Sketches a circle on the Front Plane.
          ' 2. Offsets the Front Plane to create Plane1.
          ' 3. Sketches a circle on Plane1.
          ' 4. Creates a thin-feature loft using the circles
          '    created in steps 1 and 3.
          ' 5. Selects one of the sketches to use for
          '    the fill-surface feature.
          ' 6. Creates a fill-surface feature named Surface-Fill1.
          ' 7. To verify step 6, examine the FeatureManager
          '    design tree.
          '---------------------------------------------------
          Option Explicit


          Dim swApp As SldWorks.SldWorks
          Dim swModel As SldWorks.ModelDoc2
          Dim swModelDocExt As SldWorks.ModelDocExtension
          Dim swSelMgr As SldWorks.SelectionMgr
          Dim swSketchMgr As SldWorks.SketchManager
          Dim swSketchSegment As SldWorks.SketchSegment
          Dim swFeatMgr As SldWorks.FeatureManager
          Dim swRefPlane As SldWorks.RefPlane
          Dim swFeat As SldWorks.Feature
          Dim selObj As Object
          Dim status As Boolean

           

          Sub main()


              Set swApp = Application.SldWorks   


              'Open a new model document
              Set swModel = swApp.NewDocument("C:\ProgramData\SolidWorks\SolidWorks 2014\templates\part.prtdot", swDwgPaperAsize, 0, 0)   


              'Select the front plane and sketch a circle
              Set swModelDocExt = swModel.Extension
              status = swModelDocExt.SelectByID2("Front Plane", "PLANE", 0, 0, 0, False, 0, Nothing, swSelectOptionDefault)
              swModel.ClearSelection2 True
              Set swSketchMgr = swModel.SketchManager
              Set swSketchSegment = swSketchMgr.CreateCircle(0#, 0#, 0#, 0.018863, -0.048015, 0#)
              swModel.ClearSelection2 True
              swSketchMgr.InsertSketch True   

              'Offset the front plane to create Plane1
              status = swModelDocExt.SelectByID2("Front Plane", "PLANE", 0, 0, 0, True, 0, Nothing, 0)
              Set swFeatMgr = swModel.FeatureManager
              Set swRefPlane = swFeatMgr.InsertRefPlane(8, 0.0762, 0, 0, 0, 0)
              status = swModelDocExt.SelectByID2("Plane1", "PLANE", 0, 0, 0, False, 0, Nothing, swSelectOptionDefault)
              Set swSketchSegment = swSketchMgr.CreateCircle(0#, 0#, 0#, 0.005144, -0.017148, 0#)
              swModel.ClearSelection2 True
              swSketchMgr.InsertSketch True

            
              'Create a loft as a thin feature
              status = swModelDocExt.SelectByID2("Sketch2", "SKETCH", -1.20997659765269E-02, 1.31954647737917E-02, 0, False, 1, Nothing, 0)
              status = swModelDocExt.SelectByID2("Sketch1", "SKETCH", -1.37458916138411E-02, 4.97220981864567E-02, 0, True, 1, Nothing, 0)
              swFeatMgr.InsertProtrusionBlend False, True, False, 1, 0, 0, 1, 1, True, True, True, 0.000254, 0.000254, 0, True, True, True   


              'Get the sketch for the fill-surface feature
              status = swModelDocExt.SelectByID2("Sketch2", "SKETCH", -3.09259362651374E-02, -1.50632202505945E-02, 2.65529245975468E-02, True, 257, Nothing, swSelectOptionDefault)
              Set swSelMgr = swModel.SelectionManager
              Set selObj = swSelMgr.GetSelectedObject6(1, 257)   


              'Insert the fill-surface feature
              Set swFeat = swFeatMgr.InsertFillSurface2(2, swOptimizeSurface, selObj, swContact, Nothing, Nothing) 

           
          End Sub