Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations cowski on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

Getting relative views of each body of multibody part

Status
Not open for further replies.

mihalj

Mechanical
Apr 15, 2009
40
Hi,
I am trying to automatically create drawing document with number of sheets that match number of bodies in multibody part that is active and opened prior to running the macro. Each sheet would contain relative view of one body. What does happen when running macro as shown below, I do get number of sheets but without any models in it (empty template drawing). My guess is that I am missing the command that drops view onto the sheet, therefore please if anyone can take a look and let me know what I am missing here.
Thanks.


' Only precondition for macro is to have multibody part open
Dim swModel as ModelDoc2
Dim pathName As String = ""
Dim swPart as PartDoc = Nothing
Dim swFeature as Feature = Nothing
Dim swBodyFolder as BodyFolder = Nothing
Dim numberOfBodies As Integer = 0
Dim allBodies As Object ' array
Dim swBody As Body2 = Nothing
Dim swDoc As ModelDoc2 = Nothing
Dim bodyName As String = ""
Dim swDrawing As DrawingDoc = Nothing
Dim firstView As View = Nothing
Dim bolBody As Boolean = False

swModel = swApp.ActiveDoc

pathName = swModel.GetPathName ' path name is string value

swPart = swApp.ActiveDoc

If swPart Is Nothing Then
Exit Sub
End If

swModel = swApp.NewDocument("D:\Macros\Macro_A.drwdot", 0, 0.2159, 0.2794) ' opening new drawing document

swFeature = swPart.FirstFeature
Do While Not swFeature.GetTypeName2 = "SolidBodyFolder"
swFeature = swFeature.GetNextFeature
Loop

If swFeature.GetTypeName2 = "SolidBodyFolder" Then
swBodyFolder = swFeature.GetSpecificFeature2
numberOfBodies = swBodyFolder.GetBodyCount
allBodies = swBodyFolder.GetBodies()
For i = 0 To (numberOfBodies - 1)
swBody = allBodies(i) ' swBody is Body2 and allBodies is array of bodies (object)

bodyName = swBody.Name

swDoc = CType(swApp.ActiveDoc, ModelDoc2)

bolBody = swDoc.Extension.SelectByID2(bodyName, "SOLIDBODY", 0.0254, 0.038, 0.1135, True, 0, Nothing, 0)
bolBody = swDoc.Extension.SelectByID2("Front Plane", "PLANE", 0, 0, 0, True, 0, Nothing, 0)
bolBody = swDoc.Extension.SelectByID2("Right Plane", "PLANE", 0, 0, 0, True, 0, Nothing, 0)

swDrawing = CType(swDoc, DrawingDoc)

firstView = swDrawing.CreateRelativeView(pathName, 0.0972, 0.133, 0, 1)


If i < (numberOfBodies - 1) Then
swDrawing.NewSheet("Sheet" & (i + 2), 0, 0, 0, 0)
End If

Next

End If
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor