Solidworks Macro - Trim Sketch Entities

13 minute read

In this post, I tell you about how to Trim Sketch Entities using Solidworks VBA Macros in a Sketch.


Video of Code on YouTube

Please see below video how visually we Trim Sketch Entities in Solidworks VBA macro.

Please note that there are no explaination given in the video.

Explaination of each line and why we write code this way is given in this post.


For Experience Macro Developer

If you are an experience Solidworks Macro developer, then you are looking for a specific code sample.

Below is the code for Trim Sketch Entities from Solidworks VBA Macro.

' Boolean Variable
Dim BoolStatus As Boolean

' Select Line 1
BoolStatus = swDoc.Extension.SelectByID2("Line1", "SKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, swSelectOption_e.swSelectOptionDefault)

' Select Line 2
BoolStatus = swDoc.Extension.SelectByID2("Line2", "SKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, swSelectOption_e.swSelectOptionDefault)

' Trim Solidworks Sketch segment by "SketchTrim" method from Solidworks sketch manager
BoolStatus = swSketchManager.SketchTrim(swSketchTrimChoice_e.swSketchTrimCorner, 0, 0, 0)

For Trim Solidworks Sketch segment, first you need to Create a variable of Boolean type.

After creating variable, you need to set the value of this Boolean variable.

For this you used SketchTrim method from Solidworks Sketch Manager.

This SketchTrim method set the value of Boolean type variable.

If Trim is successful then SketchTrim method return True otherwise SketchTrim returns False.

This SketchTrim method takes following parameters as explained:

  • Option : Sketch trim options as defined in swSketchTrimChoice_e

  • X : X pick location

  • Y : Y pick location

In swSketchTrimChoice_e we have following options:

  • swSketchTrimClosest : This option Trim Closest selected Sketch Entity.

  • swSketchTrimCorner : This option Trim/Extend Corners of selected Sketch Entity.

  • swSketchTrimEntities : This option Trim/Delete selected Sketch Entity.

  • swSketchTrimEntityPoint : This option migth be Trim selected Sketch Point or Entity. (I did not know what it do!!!)

  • swSketchTrimInside : This option Trim selected Sketch Entity between two boundaries.

  • swSketchTrimOutside : This option Keep selected Sketch Entity between two boundaries and Trim outside of the boundaries.

  • swSketchTrimTwoEntities : This option Trim/Delete selected two Sketch Entities.

If you want a more detail explaination then please read further otherwise this will help you to Trim Sketch Entities From VBA Macro.


For Beginners Macro Developers

In this post, I tell you about SketchTrim method from Solidworks SketchManager object.

This method is most updated method, I found in Solidworks API Help.

So use this method if you want to Trim Sketces..

Below is the code sample for Trim Sketces.

Option Explicit

' Create variable for Solidworks application
Dim swApp As SldWorks.SldWorks

' Create variable for Solidworks document
Dim swDoc As SldWorks.ModelDoc2

' Boolean Variable
Dim BoolStatus As Boolean

' Create variable for Solidworks Sketch Manager
Dim swSketchManager As SldWorks.SketchManager

' Create Variable for Solidworks Sketch Segment
Dim swSketchSegment As SldWorks.SketchSegment

' Main function of our VBA program
Sub main()

  ' Set Solidworks variable to Solidworks application
  Set swApp = Application.SldWorks
  
  ' Create string type variable for storing default part location
  Dim defaultTemplate As String
  ' Set value of this string type variable to "Default part template"
  defaultTemplate = swApp.GetUserPreferenceStringValue(swUserPreferenceStringValue_e.swDefaultTemplatePart)

  ' Set Solidworks document to new part document
  Set swDoc = swApp.NewDocument(defaultTemplate, 0, 0, 0)

  ' Select Front Plane
  BoolStatus = swDoc.Extension.SelectByID2("Front Plane", "PLANE", 0, 0, 0, False, 0, Nothing, swSelectOption_e.swSelectOptionDefault)

  ' Set Sketch manager for our sketch
  Set swSketchManager = swDoc.SketchManager

  ' Insert a sketch into selected plane
  swSketchManager.InsertSketch True
  
  ' Set Sketch Segment value and Create Line 1
  Set swSketchSegment = swSketchManager.CreateLine(0, 0, 0, 1, 0, 0)
  
  ' Set Sketch Segment value and Create Line 2
  Set swSketchSegment = swSketchManager.CreateLine(1.5, 0, 0, 1.5, 1, 0)
  
  ' De-select the lines after creation
  swDoc.ClearSelection2 True
  
  ' Select Line 1
  BoolStatus = swDoc.Extension.SelectByID2("Line1", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, swSelectOption_e.swSelectOptionDefault)

  ' Select Line 2
  BoolStatus = swDoc.Extension.SelectByID2("Line2", "SKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, swSelectOption_e.swSelectOptionDefault)

  ' Trim selected Sketch Segments by "SketchTrim" method from Solidworks sketch manager
  BoolStatus = swSketchManager.SketchTrim(swSketchTrimChoice_e.swSketchTrimCorner, 0.0, 0.0, 0.0)

  ' De-select the Sketch Segment after Trim
  swDoc.ClearSelection2 True
  
  ' Show Front View after Trim Sketch Segments
  swDoc.ShowNamedView2 "", swStandardViews_e.swFrontView
  
  ' Zoom to fit screen in Solidworks Window
  swDoc.ViewZoomtofit2

End Sub

Understanding the Code

Now let us walk through each line in the above code, and understand the meaning of every line.

Option Explicit

This line forces us to define every variable we are going to use.

For more information please visit Solidworks Macros - Open new Part document post.

' Create variable for Solidworks application
Dim swApp As SldWorks.SldWorks

In this line, we create a variable which we named as swApp and the type of this swApp variable is SldWorks.SldWorks.

' Create variable for Solidworks document
Dim swDoc As SldWorks.ModelDoc2

In this line, we create a variable which we named as swDoc and the type of this swDoc variable is SldWorks.ModelDoc2.

' Boolean Variable
Dim BoolStatus As Boolean

In this line, we create a variable named BoolStatus as Boolean object type.

' Create variable for Solidworks Sketch Manager
Dim swSketchManager As SldWorks.SketchManager

In above line, we create variable swSketchManager for Solidworks Sketch Manager.

As the name suggested, a Sketch Manager holds variours methods and properties to manage Sketches.

To see methods and properties related to SketchManager object, please visit this page of Solidworks API Help

' Create variable for Solidworks Sketch Segment
Dim swSketchSegment As SldWorks.SketchSegment

In this line, we Create a variable which we named as swSketchSegment and the type of this swSketchSegment variable is SldWorks.SketchSegment.

We create variable swSketchSegment for Solidworks Sketch Segments.

To see methods and properties related to swSketchSegment object, please visit this page of Solidworks API Help

These all are our global variables.

As you can see in code sample, they are Solidworks API Objects.

So basically I group all the Solidworks API Objects in one place.

I have also place boolean type object at top also, because after certain point we will need this variable frequently.

Thus, I have started placing it here.

Next is our Sub procedure which has name of main.

This procedure hold all the statements (instructions) we give to computer.

' Set Solidworks variable to Solidworks application
Set swApp = Application.SldWorks

In this line, we are setting the value of our Solidworks variable which we define earlier to Solidworks application.

' Create string type variable for storing default part location
Dim defaultTemplate As String
' Set value of this string type variable to "Default part template"
defaultTemplate = swApp.GetUserPreferenceStringValue(swUserPreferenceStringValue_e.swDefaultTemplatePart)

In 1st statement of above example, we are defining a variable of string type and named it as defaultTemplate.

This variable defaultTemplate, hold the location the location of Default Part Template.

In 2nd line of above example. we assign value to our newly define defaultTemplate variable.

We assign the value by using a Method named GetUserPreferenceStringValue().

This GetUserPreferenceStringValue() method is a part of our main Solidworks variable swApp.

' Set Solidworks document to new part document
Set swDoc = swApp.NewDocument(defaultTemplate, 0, 0, 0)

In this line, we set the value of our swDoc variable to new document.

For detailed information about these lines please visit Solidworks Macros - Open new Part document post.

I have discussed them thoroghly in Solidworks Macros - Open new Part document post, so do checkout this post if you don’t understand above code.

' Select Front Plane
BoolStatus = swDoc.Extension.SelectByID2("Front Plane", "PLANE", 0, 0, 0, False, 0, Nothing, swSelectOption_e.swSelectOptionDefault)

In above line, we select the front plane by using SelectByID2 method from Extension object.

For more information about selection method please visit Solidworks Macros - Selection Methods post.

' Set Sketch manager for our sketch
Set swSketchManager = swDoc.SketchManager

In above line, we set the sketch manager variable to current document’s sketch manager.

' Insert a sketch into selected plane
swSketchManager.InsertSketch True

In above line, we use InsertSketch method of SketchManager and give True value.

This method allows us to insert a sketch in selected plane.

' Set Sketch Segment value and Create Line 1
Set swSketchSegment = swSketchManager.CreateLine(0, 0, 0, 1, 0, 0)

In above line, we set the value of Solidworks Sketch Segment variable swSketchSegment by CreateLine method from Solidworks Sketch Manager.

This CreateLine method creates Lines between 2 given points.

For more information about CreateLine method, you can read my Solidworks Sketch Macros - Create Line post..

This post describe all the parameters we need for this CreateLine method.

In above line, we create a Line between origin of Sketch (0, 0, 0) and 1 distance in X-axis direction.

' Set Sketch Segment value and Create Line 2
Set swSketchSegment = swSketchManager.CreateLine(1.5, 0, 0, 1.5, 1, 0)

In above line we create Line 2 by using same CreateLine method from Solidworks Sketch Manager.

In above code, we create our 2nd line between point (1.5, 0, 0) and point (1.5, 1, 0).

This line start at 1.5 distance in X-axis and ends at a distance of 1 in Y-axis.

' De-select the lines after creation
swDoc.ClearSelection2 True

After creating both lines we de-select those lines.

We don’t need to de-select the lines for Trim operation as I will select those lines agains in next 2 lines. I just want to show you how to select a Sketch Segment with SelectById Menthod.

' Select Line 1
BoolStatus = swDoc.Extension.SelectByID2("Line1", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, swSelectOption_e.swSelectOptionDefault)

' Select Line 2
BoolStatus = swDoc.Extension.SelectByID2("Line2", "SKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, swSelectOption_e.swSelectOptionDefault)

In above line, we select Line 1 and 2.

The thing to notice here is that Append value I set to False for Line 1 and True for Line 2.

Line 1 is 1st entity in items of selection hence we can use False here.

For Line 2, we want to add this line into Selection List, hence Append value I set to True.

' Trim selected Sketch Segments by "SketchTrim" method from Solidworks sketch manager
BoolStatus = swSketchManager.SketchTrim(swSketchTrimChoice_e.swSketchTrimCorner, 0.0, 0.0, 0.0)

In above line, we Trim selected Sketch Segments by SketchTrim method from Solidworks sketch manager.

This SketchTrim method takes following parameters:

Option : Sketch trim options as defined in swSketchTrimChoice_e

The swSketchTrimChoice_e we have following options:

  • swSketchTrimClosest : This option Trim Closest selected Sketch Entity.

  • swSketchTrimCorner : This option Trim/Extend Corners of selected Sketch Entity.

  • swSketchTrimEntities : This option Trim/Delete selected Sketch Entity.

  • swSketchTrimEntityPoint : This option migth be Trim selected Sketch Point or Entity. (I did not know what it do!!!)

  • swSketchTrimInside : This option Trim selected Sketch Entity between two boundaries.

    NOTES: Please note following point for this Trim option:

    • Lines needed: For this we need at-least 3 lines.

    • Boudaries: 1st and 2nd seletced sketch act as the Boundaries for this option.

    • Trim Entity: 3rd sketch is the Trimed entity. In this option, 3rd sketch between the boundary is trimed.

  • swSketchTrimOutside : This option Keep selected Sketch Entity between two boundaries and Trim outside of the boundaries.

    NOTES: Please note following point for this Trim option::

    • Lines needed: For this we need at-least 3 lines.

    • Boudaries: 1st and 2nd seletced sketch act as the Boundaries for this option.

    • Trim Entity: 3rd sketch is the Trimed entity. In this option, 3rd sketch outside of the boundary is trimed.

  • swSketchTrimTwoEntities : This option Trim/Delete selected two Sketch Entities.

X : X pick location

Y : Y pick location

Z : Z pick location

NOTE:

  • X, Y and Z arguments are passed in the swSketchTrimClosest and swSketchTrimEntityPoint options.

  • Z arguments is needed only for 3D Sketch.

Return Value:

  • True: If Trim operation is Success.

  • False: If Trim operation is Fail.

In our code, I have used following values:

Option : I have used swSketchTrimChoice_e.swSketchTrimCorner enumerator as the type of Sketch Trim option.

X : I have used 0.0 value for X pick location.

Y : I have used 0.0 value for Y pick location.

Z : I have used 0.0 value for Z pick location.

Below image shows before and after Trim operation on the sketch.

Before Trim Operation

before_trim

After Trim Operation

after_trim


NOTE

It is very important to remember that, when you give distance or any other numeric value in Solidworks API, Solidworks takes that numeric value in Meter only.

Solidworks API does not care about your application’s Unit systems.

For example, I works in ANSI system means inches for distance. But when I used Solidworks API through VBA macros or C#, I need to use converted numeric values.

Because Solidworks API output the distance in Meter which is not my requirement.


' De-select the Sketch after creation
swDoc.ClearSelection2 True

In the above line of code, we deselect the Sketch after the Trim operation.

For de-selecting, we use ClearSelection2 method from our Solidworks document name swDoc.

' Show Front View after Sketch Trim
swDoc.ShowNamedView2 "", swStandardViews_e.swFrontView

In the above line of code, we update the view orientation to Front View.

In my machine, after inserting a sketch view orientation does not changed.

Because of this I have to update the view to Front view.

For showing Front View we used ShowNamedView2 method from our Solidworks document name swDoc.

This method takes 2 parameter described as follows:

  • VName : Name of the view to display or an empty string to use ViewId instead

  • ViewId : ID of the view to display as defined by swStandardViews_e or -1 to use the VName argument instead.

NOTE: If you specify both VName and ViewId, then ViewId takes precedence if the two arguments do not resolve to the same view.

swStandardViews_e has following Standard View Types:

  • swBackView

  • swBottomView

  • swDimetricView

  • swFrontView

  • swIsometricView

  • swLeftView

  • swRightView

  • swTopView

  • swTrimetricView

In our code, we did not use VName instead I used empty string in form of ”“ symbol.

I used ViewId value to specify view and used swStandardViews_e.swFrontView value to use Standard Front View.

' Zoom to fit screen in Solidworks Window
swDoc.ViewZoomtofit

In this last line we use zoom to fit command.

For Zoom to fit, we use ViewZoomtofit method from our Solidworks document variable swDoc.

This is it !!!

If you found anything to add or update, please let me know on my e-mail.


VBA Language feature used in this post

In this post used some features of VBA programming language.

This section of post, has some brief information about the VBA programming language specific features.

  1. We use Option Explicit for capturing un-declared variables. If you want to read more about Option Explicit then please visit Declaring and Scoping of Variables.

  2. Then we create variable for different data types. If you don’t know about them, then please visit Variables and Data-types posts of this blog. These posts will help you to understand what Variables are and how to use them.

  3. Then we create main Sub procedure for our macro. If you don’t know about the Sub procedure, then I suggest you to visit VBA Sub and Function Procedures and Executing Sub and Function Procedures posts of this blog. These posts will help you to understand what Procedures are and how to use them.

  4. In most part we create some variables and set their values. We set those values by using some functions provided from objects. If you don’t know about the functions, then you should visit VBA Functions and VBA Functions that do more posts of this blog. These posts will help you to understand what functions are and how to use them.


Solidworks API Objects

In this post of Sketch Trim, we use Solidworks API objects and their methods.

This section contains the list of all Solidworks Objects used in this post.

I have also attached links of these Solidworks API Objects in API Help website.

If you want to explore those objects, you can use these links.

These Solidworks API Objects are listed below:

  • Solidworks Application Object

    If you want explore Properties and Methods/Functions of Solidworks Application Object object you can visit this link.

  • Solidworks Document Object

    If you want explore Properties and Methods/Functions of Solidworks Document Object object you can visit this link.

  • Solidworks Sketch Manager Object

    If you want explore Properties and Methods/Functions of Solidworks Sketch Manager Object you can visit this link.

  • Solidworks Sketch Segment Object

    If you want explore Properties and Methods/Functions of Solidworks Sketch Segment Object you can visit this link.


Hope this post helps you to Trim Sketch Entities with Solidworks VB Macros.

For more such tutorials on Solidworks VBA Macros, do come to this blog after sometime.

Till then, Happy learning!!!

Updated: