Move Bodies Example (VB)

 


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

I'm using these codes from the API help file to move all ofthe bodies in a part document to a specified location. But I'mgetting error at this line :

swSelData.Mark = 1

The error message is "Object variable or With block variable notset".

Can someone check and fix the code.

TIA
SolidworksApi macros