| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Innovationstag mit SolidCAM und Plogmann bei HEDELIUS in Meppen |
Autor
|
Thema: Abfrage einer Modell-Dateieigenschaft in Zeichnungen (2327 mal gelesen)
|
hico Mitglied Konstrukteur
Beiträge: 258 Registriert: 03.03.2005
|
erstellt am: 19. Jul. 2007 10:04 <-- editieren / zitieren --> Unities abgeben:
Hallo API-Profis! Wie liest man in einem Makro die Dateieigenschaft eines in der Zeichnung befindlichen Modells (Baugruppe oder Einzelteil) aus? Das Problem: Ich möchte per Makro Zeichnungen als PDF abspeichern, dafür soll mir das Makro aber noch den zweistelligen Ausgabe-Index in den Dateinamen integrieren. Das zusammensetzen des Dateinamens an sich ist kein Problem, nur die Abfrage der Dateieigenschaft des in der Zeichnung befindlichen Modells gelingt mir nicht. Index = Model.CustomInfo2(glbConfName, "Ausgabe") bezieht sich leider nur auf die Eigenschaften der Zeichnung... ------------------
Gruß Hilmar Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Mitglied Teamleiter
Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 19. Jul. 2007 10:22 <-- editieren / zitieren --> Unities abgeben: Nur für hico
Hallo Hilmar, du musst dir nur das richtige ModelDoc2 Objekt besorgen. Folgendes vorgehen ist möglich:
Code:
Dim oDrawingDoc As SldWorks.DrawingDoc Dim oView As SldWorks.View Dim sModelName As String Dim oSwPartModel As SldWorks.ModelDoc2 Dim oSwViewPartModel As SldWorks.ModelDoc2Set oSwApp = Application.SldWorks Set oSwModel = oSwApp.ActiveDoc Set oDrawingDoc = oSwModel 'Das ist das Blatt Set oView = oDrawingDoc.GetFirstView() 'Die erste Ansicht im Blatt Set oView = oView.GetNextView 'Dokument der Ansicht sModelName = oView.GetReferencedModelName 'Jetzt hast du einen Pfad und kannst in den geöffneten ModelDocs nach dem richtigen Suchen. Set oSwPartModel = oSwApp.GetFirstDocument Do While Not oSwPartModel Is Nothing 'Haben wir das richtige ModelDoc? If oSwPartModel.GetPathName = sModelName Then 'Gefunden! set oSwViewPartModel = oSwPartModel Exit Do End If Set oSwPartModel = oSwPartModel.GetNext Loop 'Dokumenteigenschaft if not oSwViewPartModel is Nothing then Index = oSwViewPartModel.CustomInfo2(glbConfName, "Ausgabe") end if
------------------ Mfg Daniel Wer A sagt, der muss nicht B sagen. Er kann auch erkennen, dass A falsch war. Bertolt Brecht ------------------ SolidWorks | API | Makro | Schulung | Freeware | Schuler Design Automation GmbH Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
hico Mitglied Konstrukteur
Beiträge: 258 Registriert: 03.03.2005
|
erstellt am: 23. Jul. 2007 10:21 <-- editieren / zitieren --> Unities abgeben:
Hallo! Habe mich nun allmählich durchgekämpft und habe nun folgende Frage: Meine Part- und Assembly-Dateien besitzen Dateieigenschaften mit den Bezeichnungen "1aus", "2aus", "3aus"... "8aus". Diese sind je nach Ausgabeindex mit Zahlen oder Buchstaben gefüllt, z.B. 01, 02, a, b etc. oder sie sind leer. Wie kann man aus diesen Dateieigenschaften den höchsten Ausgabeindex abfragen? Höchster bezogen auf "1aus" bis "8aus", nicht Inhaltlich gesehen auf z.B. 03, 04, 05, c, e, 12, 15... Hoffe ich habe mich klar genug ausgedrückt Für den ersten Eintag wäre das... Index = SwModelDoc.CustomInfo2("", "1aus")
------------------ Gruß Hilmar Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Mitglied Teamleiter
Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 23. Jul. 2007 11:20 <-- editieren / zitieren --> Unities abgeben: Nur für hico
Hallo Hilmar, das kannst du wieder mit einer Schleife lösen. Dim sEigenschaft as String Dim sGefundeneEigenschaft as String Const sEigenschaftName as String = "aus" Dim sAktuellerEigenschaftName as String dim iZaehler as integer Do iZaehler = iZaehler + 1 'Eigenschaftsmane zusammensetzen sAktuellerEigenschaftName = iZaehler & sEigenschaftName sEigenschaft = SwModelDoc.CustomInfo2("", sAktuellerEigenschaftName ) if sEigenschaft = "" then 'Wenn Eigenschaft leer ist dann aus der Schleife raus Exit Do else 'Dateieigenschaften mit den höchsten Ausgabeindex sAktuellerEigenschaftName = sEigenschaft End if Loop
------------------ Mfg Daniel Wer A sagt, der muss nicht B sagen. Er kann auch erkennen, dass A falsch war. Bertolt Brecht ------------------ SolidWorks | API | Makro | Schulung | Freeware | Schuler Design Automation GmbH Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
hico Mitglied Konstrukteur
Beiträge: 258 Registriert: 03.03.2005
|
erstellt am: 23. Jul. 2007 13:45 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel! Dank Deiner Hilfe habe ich es geschafft! Habe den Code minimal verändert, nun funktioniert es prima... Code: Dim Index As String Const IndexName As String = "aus" Dim aktIndexName As String Dim Zaehler As IntegerZaehler = 9 Do Zaehler = Zaehler - 1 'Eigenschaftsmane zusammensetzen aktIndexName = Zaehler & IndexName Index = SwModelDoc.CustomInfo2("", aktIndexName) If Index <> "" Then 'Wenn Dateieigenschaft (Index) NICHT leer ist dann aus der Schleife raus Exit Do End If Loop
10 U's 4 U! ------------------ Gruß Hilmar Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |