Skip to main content

Fix errors when creating sketch segments using SOLIDWORKS API

Symptoms

SOLIDWORKS macro creates sketch segments (line, arcs, etc) or sketch points using SOLIDWORKS API. And in some cases the elements are not created while it works correct in other cases.

Cause

By default all entities inserted using the ISketchManager interface are created via user interface. That means that the entity cannot be created if the target area (i.e. boundaries of the segments) is not visible in the user interface (e.g. the view is moved or scaled).

Resolution

Set ISketchManager::AddToDB property to True before the entities creation and restore the original value once the job is finished. Setting this option to true will bypass the creation of entities via User Interface rather add the data directly to the model storage. This may also improve performance while creating the entities.

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2

Sub main()

Set swApp = Application.SldWorks

Set swModel = swApp.ActiveDoc

Dim addToDbOrig As Boolean

addToDbOrig = swModel.SketchManager.AddToDB 'get the original value
swModel.SketchManager.AddToDB = True

swModel.SketchManager.CreateLine 0, 0, 0, 0.01, 0.02, 0

swModel.SketchManager.AddToDB = addToDbOrig 'restore the original value

End Sub