Hallo Bernd,
das Endergebnis soll eine Liste für den Elektro-/Pneumatikkonstrukteur sein, in der er alle für ihn relevanten Teile mit diversen Properties hat. Die Properties auslesen ist kein Problem. Mit dem Makro kann ich alle Notes identifizieren, die einen Text haben. Mein Problem ist, den Dateinamen oder die Zeichnungsnummer der Komponenten herauszubekommen, zu denen diese Notes gehören. Dann könnte ich die Notes anhand bestimmter Kriterien eingrenzen, die ich noch vom Elektriker brauche und daraus dann die Liste mit allen Informationen generieren.
Danke für die Info, dass das auch mit den Bezugshinweisen geht. Ich arbeite öfters mit SWX, bin aber kein Konstrukteur und dieser sagte mir, dass es nur zwischen Stücklistensymbolen und den Komponenten eine Beziehung gibt. Deswegen habe ich erst einmal diesen Ansatz verfolgt. Da die meisten Notes in den alten Zeichnungen Bezugshinweise sind, könnte ich auch diese mit abfragen.
Da ich erst wenige Erfahrungen mit SWX VBA habe (bin meistens in Excel oder SAP unterwegs), wäre es schön, wenn mir jemand zeigen könnte, wie man bei Bezugshinweisen und Stücklistensymbolen den dazugehörigen Dateinamen ausließt. Danke!
Hier nochmal mein bisheriges Makro.
Option Explicit
Public swApp As SldWorks.SldWorks
Public swModel As SldWorks.ModelDoc2
Public swDrawing As SldWorks.DrawingDoc
Public swView As SldWorks.View
Public swNote As SldWorks.Note
Public swEntity As Entity
Public ViewName As String
Public Position As String
Public Rückmeldung As Integer
Sub PosNrSuchen()
Set swApp = CreateObject("SldWorks.Application")
Set swModel = swApp.ActiveDoc
If swModel.GetType <> 3 Then
Rückmeldung = MsgBox("Aktives Dokument ist keine Zeichnung", vbOKOnly + vbInformation, "Information")
Exit Sub
End If
Set swDrawing = swApp.ActiveDoc
Set swView = swDrawing.GetFirstView
Set swView = swView.GetNextView
If swView Is Nothing Then
Rückmeldung = MsgBox("Aktive Zeichnung hat keine Ansichten!", vbOKOnly + vbExclamation, "Information")
Exit Sub
Else
While Not swView Is Nothing
ViewName = swView.Name
Set swNote = swView.GetFirstNote
While Not swNote Is Nothing
MsgBox swNote.GetText
If swNote.IsBomBalloon Then
Position = swNote.GetBomBalloonText(True)
If IsNumeric(Left(Position, 1)) = False Then
MsgBox "Text"
MsgBox Position
End If
End If
Set swNote = swNote.GetNext
Wend
Set swView = swView.GetNextView
Wend
End If
End Sub
Gruß
Dariusz
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP