Autor
|
Thema: Part oder Product aus Drawing öffnen (6919 mal gelesen)
|
GeorgK Mitglied
Beiträge: 619 Registriert: 06.06.2001
|
erstellt am: 08. Jun. 2010 10:44 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, wie kann ich ein Part oder Product aus einem Drawing öffnen? Der folgende Code funktioniert nicht immer z.B. wenn die Zeichnungsableitung von einer Szene stammt. Sub CATMain() CATIA.StatusBar = "Part öffnen, Version 1.0" Dim ReferenceComponent Set ReferenceComponent = drawingView1.GenerativeBehavior.Document.Parent CATIA.Documents.Open (ReferenceComponent.FullName) End Sub Welche Möglichkeiten gibt es noch den Namen abzufragen? Danke schon mal Georg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
V5Playaz Mitglied Dipl.-Ing (BA)
Beiträge: 447 Registriert: 12.07.2005 DELL PRECISION 390 3,25 GB RAM WIN XP PRO SP2 CATIA V5 R16-19 Delmia V5 R19 VB6, VB2008 Adobe Acrobat 9 Pro Extended
|
erstellt am: 08. Jun. 2010 12:02 <-- editieren / zitieren --> Unities abgeben: Nur für GeorgK
|
GeorgK Mitglied
Beiträge: 619 Registriert: 06.06.2001
|
erstellt am: 08. Jun. 2010 13:00 <-- editieren / zitieren --> Unities abgeben:
|
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 09. Jun. 2010 00:20 <-- editieren / zitieren --> Unities abgeben: Nur für GeorgK
Hallo GeorgK, ich stelle mich mal ganz dumm und frage: "Wer oder was sollen denn die 'Eltern' einer Datei sein?" Aus meiner (bescheidenen) Sicht sollte Dein Skript wie folgt lauten: Code: Sub CATMain()CATIA.StatusBar = "Part öffnen, Version 1.0" Dim ReferenceComponent Set ReferenceComponent = drawingView1.GenerativeBehavior.Document CATIA.Documents.Open (ReferenceComponent.FullName) End Sub
mfg, Lusilnie
------------------ Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GeorgK Mitglied
Beiträge: 619 Registriert: 06.06.2001 Inventor 2017 Siemens NX 8.5 - 12.0 Autocad Mechanical 2017 Catia V5R19 3,4 GHz; 64 GB RAM Windows 10 openSUSE Leap 42.3 Visual Studio 2010 - 2017 Windows 2012 R2 Vault 2017
|
erstellt am: 11. Jun. 2010 13:57 <-- editieren / zitieren --> Unities abgeben:
|
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 13. Jun. 2010 15:24 <-- editieren / zitieren --> Unities abgeben: Nur für GeorgK
Hallo GeorgK, als erstes einmal "Sorry", denn meine Aussage ist falsch! War wohl doch schon zu spät! Dein Code stimmt so: Code: Sub CATMain()CATIA.StatusBar = "Part öffnen, Version 1.0" Dim ReferenceComponent Set ReferenceComponent = drawingView1.GenerativeBehavior.Document.Parent CATIA.Documents.Open (ReferenceComponent.FullName) End Sub
Allerdings funktioniert er nur bei "normalen" Ableitungen vom 3D! Bei "Szenen" läuft er auf einen Fehler, da hier das "Document" die Szene ist und deren "Parent" dann die "Scenes-Collection". Theoretisch müsste man von hier über "Parent" auf das "Product" und über "Parent.Parent" auf das "ProductDocument" zugreifen können.Wie gesagt, theoretisch! Leider funtkioniert das nicht, was daran liegen könnte, das die "Scenes-Collection" ein "TechnologicalObject" ist. Vielleicht kennt sich hier ja jemand mit diesen "TechnologicalObject"'s aus und weiß, wie man von diesen auf ihre "Parent" zugreift. Ich bin mir hier aber nicht sicher, ob dies funktioniert oder ob hier wirklich die strukturelle Verknüpfung einfach "vergessen" wurde. mfg, Lusilnie
------------------ Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 13. Jun. 2010 16:00 <-- editieren / zitieren --> Unities abgeben: Nur für GeorgK
Servus Also bei funktioniert über: Code: Set oProduct = oView.GenerativeBehavior.Document.Parent.Parent.Parent CATIA.Documents.Open oProduct.FullName
das Product zu öffnen. Dabei müsste nur noch eine Fallunterscheidung eingebaut werden (also wenn die Ansicht nicht aus einer Szene abgeleitet wurde).Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GeorgK Mitglied
Beiträge: 619 Registriert: 06.06.2001
|
erstellt am: 13. Jun. 2010 19:11 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 13. Jun. 2010 19:45 <-- editieren / zitieren --> Unities abgeben: Nur für GeorgK
Servus Die Fall unterscheidng könnte über das Abfangen eines Fehlers geschehen. zB: Code: Sub CATMain()On Error Resume Next Set odoc = CATIA.ActiveDocument Set oView = odoc.Sheets.ActiveSheet.Views.ActiveView Set oProduct = oView.GenerativeBehavior.Document.Parent oName = oProduct.FullName If Err.Number <> 0 Then Set oProduct = oView.GenerativeBehavior.Document.Parent.Parent.Parent oName = oProduct.FullName Err.Clear End If On Error GoTo 0 CATIA.Documents.Open (oName) End Sub
(ungetestet). Allerdings fehlen dabei noch: zb CATDrawing geöffnet? Vordergrund aktiv? Ansicht aktiv? ...Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GeorgK Mitglied
Beiträge: 619 Registriert: 06.06.2001
|
erstellt am: 13. Jun. 2010 19:49 <-- editieren / zitieren --> Unities abgeben:
|
Pietzonka Mitglied Maschinening.
Beiträge: 114 Registriert: 14.03.2006 Catia V5 R2019 SP9 Build Number 19 SolidWorks 2020 Standard Win10 64 pro Fujitsu Celsius Xeon CPU E5-2643 V2 3.5 GHz, 16 GB
|
erstellt am: 10. Dez. 2010 12:12 <-- editieren / zitieren --> Unities abgeben: Nur für GeorgK
Hallo Bernd! Unten stehenden Code habe ich probiert. Leider bekomme ich nur die Fehlermeldung, dass das Dokument nicht geelesen werden kann. Liegt das eventuell an Smarteam in Kombination mit Scenes? Language="VBSCRIPT" Sub CATMain() On Error Resume Next Set odoc = CATIA.ActiveDocument Set oView = odoc.Sheets.ActiveSheet.Views.ActiveView Set oProduct = oView.GenerativeBehavior.Document.Parent oName = oProduct.Name If Err.Number <> 0 Then Set oProduct = oView.GenerativeBehavior.Document.Parent.Parent.Parent oName = oProduct.Name Err.Clear End If On Error GoTo 0 CATIA.Documents.Open (oName) End Sub Mein Ziel ist, an die CATProduct-ID zu kommen und in meinen Zeichnungskopf einzufügen.
Mit freundlichem Gruß Stephan
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 10. Dez. 2010 17:04 <-- editieren / zitieren --> Unities abgeben: Nur für GeorgK
Servus Lass dir mal die Varialbe "oName" in einer MesageBox ausgeben. Ich vermute dass du: Code: oName = oProduct.Fullname
verwenden (also mit Pfad und Dateiendung) verwenden musst.Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Pietzonka Mitglied Maschinening.
Beiträge: 114 Registriert: 14.03.2006
|
erstellt am: 13. Dez. 2010 08:19 <-- editieren / zitieren --> Unities abgeben: Nur für GeorgK
Danke für Deine Antwort, Bernd! Leider hat FullName auch noch nicht zum Ziel geführt. Damit Du Dir auch die Randbedingungen ansehen kannst, habe ich den Code und Bildschirmfotos beigefügt. Mein Eindruck ist, dass nur das erste .Parent ohne Fehler funktioniert. Schon die nächsthöhere Ebene .Parent ist leer. Mit freundlichem Gruß Stephan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 13. Dez. 2010 12:38 <-- editieren / zitieren --> Unities abgeben: Nur für GeorgK
Servus Bei mir läuft der Code, mit kleinen Änderungen (oName statt oFullname verwenden und oName = oProduct.Fullname) durch: Code: Sub CATMain() On Error Resume Next Set odoc = CATIA.ActiveDocument Set oView = odoc.Sheets.ActiveSheet.Views.ActiveView Set oProduct = oView.GenerativeBehavior.Document.Parent oName = oProduct.FullNameIf Err.Number <> 0 Then Set oProduct = oView.GenerativeBehavior.Document.Parent.Parent.Parent oName = oProduct.FullName Err.Clear End If On Error GoTo 0 MsgBox("oName = oProduct.FullName: " & oName) CATIA.Documents.Open (oName) End Sub
Hast du die Ansicht von der Szene abgeleitet oder nur vom Part?Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Pietzonka Mitglied Maschinening.
Beiträge: 114 Registriert: 14.03.2006
|
erstellt am: 13. Dez. 2010 13:05 <-- editieren / zitieren --> Unities abgeben: Nur für GeorgK
Hallo Bernd! Ich habe eine Ansicht von einem Produkt erstellt. Anschließend habe ich die Verknüpfung der Ansicht zu einer Szene erstellt. Sobald eine Szene abgefragt wird, bekomme ich eine Fehlermeldung. Eventuell ist noch interessant, dass wir SmarTeam verwenden. Die Abhängigkeitsanalyse habe ich auch mal als Bild angehangen. Mit freundlichem Gruß Stephan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 13. Dez. 2010 13:15 <-- editieren / zitieren --> Unities abgeben: Nur für GeorgK
Servus Stephan Also bei mir funktioniert es (der Pfad wird richtig ermittelt). Ist auch die entsprechende Ansicht aktiv? (deshalb gehören zu dem Script noch einige Abfragen/Fehlerbehandlungen) Ist das Product im "work-Verzeichnis" abgelegt? Gruß Bernd
------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Pietzonka Mitglied Maschinening.
Beiträge: 114 Registriert: 14.03.2006
|
erstellt am: 13. Dez. 2010 13:33 <-- editieren / zitieren --> Unities abgeben: Nur für GeorgK
Hallo Bernd! Das Makro starte ich nachdem ich die Ansicht aktiviert habe. (Zeichnung und Produkt liegen nach dem Checkout im Work.) Das Ergebnis Deines letzten Codes ist sowohl im Hintergrund und in der Arbeitsansicht ein leerer Inhalt. Damit gibt es beim Dateiaufruf eine Fehlermeldung. Der Test an den Dateien, die ich in einen separaten Ordner gesendet hatte, war ebenfalls erfolglos. Mit freundlichem Gruß Stephan
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 13. Dez. 2010 15:09 <-- editieren / zitieren --> Unities abgeben: Nur für GeorgK
Servus Also im Hintergrund kann das Makro nicht funktionieren. Verschiebe mal das On Error Resume Next nach Set oProduct = oView.GenerativeBehavior.Document.ParentWo steigt das Makro aus (mit welcher Fehlermeldung)? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Pietzonka Mitglied Maschinening.
Beiträge: 114 Registriert: 14.03.2006
|
erstellt am: 13. Dez. 2010 15:22 <-- editieren / zitieren --> Unities abgeben: Nur für GeorgK
|
Pietzonka Mitglied Maschinening.
Beiträge: 114 Registriert: 14.03.2006 Catia V5 R2019 SP9 Build Number 19 SolidWorks 2020 Standard Win10 64 pro Fujitsu Celsius Xeon CPU E5-2643 V2 3.5 GHz, 16 GB
|
erstellt am: 13. Dez. 2010 15:51 <-- editieren / zitieren --> Unities abgeben: Nur für GeorgK
Hallo Bernd! Im Ausschlussverfahren habe ich mal Produkt und Zeichnung ohne Smarteam erstellt und getestet. Da es hiermit auch nicht klappt, rätsel ich um so mehr, dass Du scheinbar keine Probleme mit demselben Code hast. Jetzt erst einmal Dir einen schönen Feierabend! Mit freundlichem Gruß Stephan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 13. Dez. 2010 21:16 <-- editieren / zitieren --> Unities abgeben: Nur für GeorgK
Servus Stephan Ich hab nochmal dein Beispiel ausprobiert, mit dem gleichen Ergebnis wie bei dir (kein Pfad wird ausgegeben). Aber, nach einem Neustart von CATIA lief das Makro wieder (CATIA = close and try it again) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Pietzonka Mitglied Maschinening.
Beiträge: 114 Registriert: 14.03.2006
|
erstellt am: 14. Dez. 2010 15:49 <-- editieren / zitieren --> Unities abgeben: Nur für GeorgK
Hallo Bernd! Du hattest den Daumen drauf! Jetzt funktioniert mein Makro auch! Deinen Tipp werde ich mir merken, auch die Definition von CATIA. Hiermit ein herzliches Dankeschön an Dich!! Mit freundlichem Gruß Stephan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Junior Entwicklungsingenieur (m/w/d) Medizintechnik | Du teilst unsere Leidenschaft für Innovationen und Technologien und willst dich den Herausforderungen der Zukunft stellen? Dann komm zu FERCHAU: als ambitionierte:r Kolleg:in, der:die wie wir Technologien auf die nächste Stufe bringen möchte. Wir realisieren spannende Projekte für namhafte Kunden des Maschinenbaus und sorgen für sichere und nachhaltige Technologielösungen. Als Berufseinsteiger:in oder ... | Anzeige ansehen | Entwicklung |
|
sumo_miez Mitglied Konstrukteurin
Beiträge: 81 Registriert: 18.11.2004 Win XP, CATIA V5 R16
|
erstellt am: 09. Feb. 2011 10:06 <-- editieren / zitieren --> Unities abgeben: Nur für GeorgK
Hallo Bernd, ich habe eben das supernützliche Script hier entdeckt und gleichmal ausprobiert. Funktioniert auch bei Produkten sehr gut. Meine Frage allerdings: Wenn ich ein einzelnes Part aktiv schalte auf der Zeichnung und das Makro verwende, gibt er eine Fehlermeldung aus (Document can not be read). Vermutlich muss ich dem Makro irgendwie noch sagen, dass er noch Parts auswählen soll, ich hab aber keine Ahnung vom Programmieren. Kannst Du mir ev. einen Tip geben? Vielen Dank. Grüße Alex Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |