| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | | | SolidCAM bei der 23. Hausmesse des Technikszentrums by Werkzeug-Eylert |
Autor
|
Thema: API: referenziertes Modell der Zeichnung ermitteln (3392 mal gelesen)
|
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)
Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 12. Nov. 2010 08:54 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich hatte ein nette Anfrage nach einem Makrobeispiel bekommen, wie man für eine Zeichnung den Pfad des referenzierten Modells ermitteln könnte. Üblicherweise verweise ich solche Anfragen dann hier ins Brett, damit alle was davon haben, diesmal mache ich es andersrum, stelle die Lösung hier rein und schicke den Fragenden dann hierher zum gucken. Das ist allerdings eine Ausnahme, ich hoffe, dass die 50-EUR-Taktik auch diesmal aufgeht, dass also einfach diejenigen, die durch die Beipspielcodes Zeit und damit Geld sparen, einfach einen angemessenen Betrag an eine Tafel in der Nähe geben Also hier der Code, Ergänzungen und Hinweise wie immer gerne willkommen:
Code:
' ********************************************************************** ' * Beispielcode: Das Makro sucht für die aktive Zeichnung (aktuelles ' * Blatt) das referenzierte Modell raus. Dazu wird aus den ' * Blatteigenschaften gelesen, welche Zeichenansichten das ' * referenzierte Modelle nthalten soll, STandard bedeutet einfach der ' * erste eingefügte View ' * ' * 12.11.2010 Stefan Berlitz (stefan.berlitz@solidworks.cad.de) ' * http://solidworks.cad.de ' * http://swtools.cad.de ' * ' **********************************************************************' Konstante aus swconst.bas Const swDocDRAWING = 3 Sub main() Dim swApp As Object Dim DrawingDoc As Object Dim Sheet As Object Dim View As Object Dim RefModelView As String Dim RefModelName As String ' an die laufende SolidWorks Sitzung anhängen Set swApp = Application.SldWorks ' prüfen, ob überhaupt ein Dokument offen ist ... Set DrawingDoc = swApp.ActiveDoc If DrawingDoc Is Nothing Then MsgBox "Kein Dokument offen" Exit Sub End If ' ... und ob das auch eine Zeichnung ist If (DrawingDoc.GetType <> swDocDRAWING) Then MsgBox "Nur für Zeichnungen sinnvoll" Exit Sub End If ' dann schauen wir mal nach dem aktuellen Blatt Set Sheet = DrawingDoc.GetCurrentSheet ' von dem Blatt schauen wir uns die Zeichenansicht aus, die auch für ' Dateieigenschaften zuständig ist RefModelView = Sheet.CustomPropertyView ' dann durch die Zeichenansichten durchklappern, bis der gewünschte ' View gefunden wurde. Dazu einfach die Namen vergleichen. ' "Standard" bedeutet der erste View Set View = DrawingDoc.GetFirstView ' muss für nicht deutsches Englsich angepasst werden If RefModelView = "Standard" Then ' dann brauchen wir nur auf den ersten View zu springen Set View = View.GetNextView Else ' ansonsten solange weiterklappern bis wir den passenden ' View gefunden haben Do While Not View Is Nothing ' nächste Zeichenansicht Set View = View.GetNextView ' bis wir den passenden View gefunden haben If View.GetName2 = RefModelView Then Exit Do Loop End If ' so jetzt sollte die Ansicht mit dem referenzierten Modell aktiv sein If Not View Is Nothing Then RefModelName = View.GetReferencedModelName MsgBox "Referenziertes Modell dieses Blattes ist: " & vbCrLf & _ vbCrLf & _ RefModelName & vbCrLf & _ vbCrLf & _ "von Zeichenansicht" & vbCrLf & _ vbCrLf & _ RefModelView Else ' oh, dann gibt es den View nicht, leere Zeichnung? MsgBox "Kein referenziertes Modell gefunden, Zeichnung leer?" End If End Sub
Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Oberli Mike Ehrenmitglied V.I.P. h.c. Dipl. Maschinen Ing.
Beiträge: 3814 Registriert: 29.09.2004 SOLIDWORKS 2024 SP1.0 SOLIDWORKS 2023 SP5.0 SOLIDWORKS 2022 SP5.0 SOLIDWORKS 2021 SP5.1 SOLIDWORKS 2020 SP5 SOLIDWORKS 2019 SP5 (VM)
|
erstellt am: 12. Nov. 2010 13:00 <-- editieren / zitieren --> Unities abgeben: Nur für StefanBerlitz
Da ich nicht der Auftraggeber war, beläuft sich meine Spende auf 10Ü's Bei uns läuft die Abfrage so, dass man den View anwählen muss. Hintergrund für die Anwahl ist, dass mehrere Modell auf der gleichen Zeichnung sein können, aber nicht klar ist, welches Modell gemeint ist. Durch Löschen und neu erzeugen von Ansichten ist zwar immer noch eindeutig, welches der älteste View ist, allerdings ist das dem SolidWork User meistens egal. Hier ein Ausschnitt vom Makro: Code:
Dim swApp As Object Dim Part As Object Dim sPathName As String Dim nRetVal As Long Dim nErrors As Long Dim nWarnings As Long Dim bRet As Boolean Dim retval As Boolean Dim vSheetProps As Variant Dim blattsize As Long Dim SelObj As Object Set swApp = CreateObject("SldWorks.Application") Set Part = swApp.ActiveDoc Set DrawingDoc = swApp.ActiveDoc
Dim swDrawModel As SldWorks.ModelDoc2 PartTitle = Part.GetTitle Set SelMgr = Part.SelectionManager() Part.SelectByID "", "DRAWINGVIEW", 0, 0, 0 Set SelObj = SelMgr.GetSelectedObject3(1) SelObjType = SelMgr.GetSelectedObjectType2(1) ModelName = SelObj.GetReferencedModelName
Gleich wie bei Stefan. Wer es verwenden kann/will/darf/soll.... darf gerne etwas spenden. Gruss Mike ------------------ The Power Of Dreams Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|