Hallo Ihr API-Wissenden,
kann mir jemand helfen, weiß jemand Rat?
Seit SXW2005 SP03 funktionieren wichtige Makros bei den Zeichnungen nicht mehr. Die Methode swDrawComp.GetChildren liefert zwar noch ein Array, aber dessen Elemente stehen alle auf Nothing. Wie kann ich das umschiffen.
Zum schnellen Probieren habe ich hier mal den Code aus der SWX
-API-Hilfe angehängt, der auch an der Stelle nicht funktioniert.
'-----------------------------------------------
'
' Preconditions:
' (1) Drawing document is open.
' (2) Drawing view of an assembly is selected.
'
' Postconditions: Drawing components in the selected drawing view are hidden.
'
'-----------------------------------------------
Option Explicit
' Types of drawing views
Public Enum swDrawingViewTypes_e
swDrawingSheet = 1
swDrawingSectionView = 2
swDrawingDetailView = 3
swDrawingProjectedView = 4
swDrawingAuxiliaryView = 5
swDrawingStandardView = 6
swDrawingNamedView = 7
swDrawingRelativeView = 8
End Enum
Sub ProcessDrawingComponent _
( _
swDrawComp As SldWorks.DrawingComponent, _
sPadStr As String _
)
Dim vDrawCompChildArr As Variant
Dim vDrawCompChild As Variant
Dim swDrawCompChild As SldWorks.DrawingComponent
Debug.Print sPadStr & swDrawComp.Name 'Abbruch wegen swDrawComp=Nothing
' Does not affect root component
swDrawComp.Visible = False
vDrawCompChildArr = swDrawComp.GetChildren
If Not IsEmpty(vDrawCompChildArr) Then
For Each vDrawCompChild In vDrawCompChildArr
Set swDrawCompChild = vDrawCompChild
ProcessDrawingComponent swDrawCompChild, sPadStr + " "
Next
End If
End Sub
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDraw As SldWorks.DrawingDoc
Dim swSelMgr As SldWorks.SelectionMgr
Dim swView As SldWorks.view
Dim swDrawComp As SldWorks.DrawingComponent
Dim swComp As SldWorks.Component2
Dim bRet As Boolean
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swDraw = swModel
Set swSelMgr = swModel.SelectionManager
Set swView = swSelMgr.GetSelectedObject5(1)
Set swDrawComp = swView.RootDrawingComponent
Debug.Print "File = " & swModel.GetPathName
Debug.Print " " & swView.Name & " [" & swView.Type & "]"
ProcessDrawingComponent swDrawComp, " "
End Sub
'---------------------------------------
Viele Grüße
Thomas
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP