Option Explicit
Public Enum swBodyType_e
swAllBodies = -1
swSolidBody = 0
swSheetBody = 1
swWireBody = 2
swMinimumBody = 3
swGeneralBody = 4
swEmptyBody = 5
End Enum
Sub SelectOrigin(swApp As SldWorks.SldWorks, swModel AsSldWorks.ModelDoc2, nSelMark As Long)
Dim swFeat As SldWorks.Feature
Dim bRet As Boolean
Set swFeat = swModel.FirstFeature
Do While Not swFeat Is Nothing
If "OriginProfileFeature" = swFeat.GetTypeName Then
bRet = swFeat.Select2(True, nSelMark): Debug.Assert bRet
Exit Do
End If
Set swFeat = swFeat.GetNextFeature
Loop
End Sub
Sub SelectBodies(swApp As SldWorks.SldWorks, swModel AsSldWorks.ModelDoc2, vBodyArr As Variant)
Dim swSelMgr As SldWorks.SelectionMgr
Dim swSelData As SldWorks.SelectData
Dim vBody As Variant
Dim swBody As SldWorks.Body2
Dim bRet As Boolean
If IsEmpty(vBodyArr) Then Exit Sub
For Each vBody In vBodyArr
Set swBody = vBody
swSelData.Mark = 1
bRet = swBody.Select2(True, swSelData): Debug.Assert bRet
Next vBody
End Sub
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swPart As SldWorks.PartDoc
Dim vBodyArr As Variant
Dim swFeatMgr As SldWorks.FeatureManager
Dim swFeat As SldWorks.Feature
Dim bRet As Boolean
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swPart = swModel
Set swFeatMgr = swModel.FeatureManager
swModel.ClearSelection2 True
vBodyArr = swPart.GetBodies(swAllBodies)
SelectBodies swApp, swModel, vBodyArr
SelectOrigin swApp, swModel, 8
Set swFeat = swFeatMgr.InsertMoveCopyBody2(0.1, 0.2, 0.3, 0#, 0#,0#, 0#, 0#, 0#, 0#, False, 1): Debug.Assert Not swFeat Is Nothing
End Sub
swSelData.Mark = 1
The error message is "Object variable or With block variable notset".
Can someone check and fix the code.
TIA
SolidworksApi macros
