2 Replies Latest reply on Sep 14, 2017 2:35 AM by Dennis Beeren

    API: How to sketch a line on the flat-pattern

    Dennis Beeren

      I would like to draw sketch lines onto the same plane (or face) as the bend-lines and the bounding-box of a flat-pattern.

      Does anybody know a way to select the plane (or face) by the API and draw sketch lines on it.


      In fact I am asking two questions here:

      - How to get a handle to the plane/face of the flat-pattern through the API.

      - How to draw a sketch on that plane through the API


      I have been searching through the API documents and on this forum but have not been able to find any helpful information yet.

      All help is appreciated.




        • Re: API: How to sketch a line on the flat-pattern
          Manikandan Babu

          Hi Dennis,


          Try this code.helps to draw a line normal to the plane.


          Dim swApp As SldWorks.SldWorks

          Dim swModel As SldWorks.ModelDoc2

          Dim longstatus As Long

          Dim swRefPlane As SldWorks.RefPlane

          Dim swfeat As SldWorks.Feature

          Dim swsketch As SldWorks.Sketch

          Dim swSketchPlane As Object

          Dim swOriginPoint As SldWorks.MathPoint

          Dim swRefPlaneTransform As SldWorks.MathTransform

          Dim swMathUtility As SldWorks.MathUtility

          Dim aPointData(2) As Double

          Dim vPointData As Variant

          Dim swOriginPointOnRefPlane As SldWorks.MathPoint

          Dim swNormalVector As SldWorks.MathVector

          Dim swNormalVectorRefPlane As SldWorks.MathVector

          Dim aVectorData(2) As Double

          Dim vVectorData  As Variant

          Dim dScaleFactor As Double

          Dim strRefPlaneName As String

          Dim aRefPlanes(6) As String

          Sub main()

          Set swApp = Application.SldWorks

          Set swModel = swApp.ActiveDoc

          Set swfeat = swModel.FeatureByName("Bend-Lines2")

          Set swsketch = swfeat.GetSpecificFeature2

          Set swSketchPlane = swsketch.GetReferenceEntity(longstatus)

          Set swRefPlane = swSketchPlane

          Set swRefPlaneTransform = swRefPlane.Transform

                  ' Create a math point that represents the reference plane's origin

                  ' in the canonical position in world coordinates; this is

                  ' (0.0, 0.0, 0.0)

                  ' Create array data

                  aPointData(0) = 0#

                  aPointData(1) = 0#

                  aPointData(2) = 0#

                  ' Turn into a Variant

                  vPointData = aPointData

                  ' Create a math point

                     Set swMathUtility = swApp.GetMathUtility

                  Set swOriginPoint = swMathUtility.CreatePoint(vPointData)

                  ' Transform the reference plane origin from its canonical

                  ' position to its actual position

                  Set swOriginPointOnRefPlane = swOriginPoint.MultiplyTransform(swRefPlaneTransform)

                  ' Get point data

                  vPointData = swOriginPointOnRefPlane.ArrayData

                  ' Create a math vector that represents the reference plane's normal in

                  ' the canonical orientation in world coordinates; this is [0.0, 0.0, 1.0]

                  ' Create array data

                  aVectorData(0) = 0#

                  aVectorData(1) = 0#

                  aVectorData(2) = 1#

                  ' Turn into a Variant

                  vVectorData = aVectorData

                  ' Create a math vector

                  Set swNormalVector = swMathUtility.CreateVector(vVectorData)

                   ' Now transform the reference plane normal from its canonical

                  ' orientation to its actual orientation

                  Set swNormalVectorRefPlane = swNormalVector.MultiplyTransform(swRefPlaneTransform)

                  ' Get vector data

                  vVectorData = swNormalVectorRefPlane.ArrayData

                  ' Visualize

                  ' As the reference plane normal is normalized, it may be bit out of

                  ' proportion; this factor is arbitrary

                  dScaleFactor = 0.1

                  ' Insert a 3D sketch

                  swModel.Insert3DSketch2 True

                  ' Create a line from the reference plane origin in the direction

                  ' of the reference plan normal

                  swModel.CreateLine2 vPointData(0), vPointData(1), vPointData(2), vPointData(0) + dScaleFactor * vVectorData(0), vPointData(1) + dScaleFactor * vVectorData(1), vPointData(2) + dScaleFactor * vVectorData(2)

                  ' Close the sketch

                  swModel.Insert3DSketch2 True

                  ' The sketch is still selected

                  Set swFeature = swModel.SelectionManager.GetSelectedObject6(1, 0)

                   ' Rename it

                  swFeature.Name = strRefPlaneName & "-Normal"

                  ' Clear selection for the next pass

                  swModel.ClearSelection2 True

          End Sub