Autor
|
Thema: Prüfen, ob Ansicht in Drawing vorhanden (2267 mal gelesen)
|
n4426 Mitglied CAx-Administration, Technischer Zeichner (Maschinen- und Anlagentechnik)
Beiträge: 65 Registriert: 17.01.2003 Windows 7 Prof. 64-Bit CATIA V5-6 R2014 SP04
|
erstellt am: 14. Apr. 2011 13:14 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich bin gerade dabei ein VBA-Makro zu bastenl, welches mir den Pfad der Verlinkten Datei einer View im Drawing ausließt. Jetzt möchte ich vorm auslesen Prüfen, ob die Ansicht überhaubt auf dem aktuellem Blatt vorhanden ist. Code: Dim drawingDocument1 As Document Set drawingDocument1 = CATIA.ActiveDocument Dim drawingSheets1 As DrawingSheets Set drawingSheets1 = drawingDocument1.SheetsDim drawingSheet1 As DrawingSheet 'Set drawingSheet1 = drawingSheets1.ActiveSheet Set drawingSheet1 = drawingSheets1.Item("01") drawingSheet1.Activate Dim drawingViews1 As DrawingViews Set drawingViews1 = drawingSheet1.Views Dim drawingView1 As DrawingView Set drawingView1 = drawingViews1.ActiveView 'drawingView1.Activate Set drawingViews1 = drawingSheet1.Views Set drawingView1 = drawingViews1.Item("Front view") drawingView1.Activate Name = drawingView1.GenerativeLinks.FirstLink.Parent.Path & "\" & drawingView1.GenerativeLinks.FirstLink.Parent.Name
Hat da einer von euch einen VBA-Code dafür? ------------------ MfG N4426 [Diese Nachricht wurde von n4426 am 14. Apr. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 14. Apr. 2011 14:24 <-- editieren / zitieren --> Unities abgeben: Nur für n4426
Hallo, meinst du soetwas? Code: Dim drawingDocument1 As Document Set drawingDocument1 = CATIA.ActiveDocument Dim drawingSheets1 As DrawingSheets Set drawingSheets1 = drawingDocument1.SheetsDim drawingSheet1 As DrawingSheet 'Set drawingSheet1 = drawingSheets1.ActiveSheet Set drawingSheet1 = drawingSheets1.Item("03") if drawingSheet1 = Nothing then exit sub drawingSheet1.Activate Dim drawingViews1 As DrawingViews Set drawingViews1 = drawingSheet1.Views Dim drawingView1 As DrawingView Set drawingView1 = drawingViews1.ActiveView 'drawingView1.Activate Set drawingViews1 = drawingSheet1.Views Set drawingView1 = drawingViews1.Item("Front view") drawingView1.Activate Name = drawingView1.GenerativeLinks.FirstLink.Parent.Path & "\" & drawingView1.GenerativeLinks.FirstLink.Parent.Name
------------------ MFG Rick Schulz Nettiquette (CAD.de) - Was ist die Systeminfo? - Wie man Fragen richtig stellt. - Unities Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
n4426 Mitglied CAx-Administration, Technischer Zeichner (Maschinen- und Anlagentechnik)
Beiträge: 65 Registriert: 17.01.2003
|
erstellt am: 14. Apr. 2011 14:31 <-- editieren / zitieren --> Unities abgeben:
Hi Rick, nicht so ganz. Ich möchte prüfen, ob auf Blatt "01" (war vorher ein Fehler, ist aber vom Prinzib her ja egal) eine View Namens "Front View" vorhanden ist. Ich habs dann so versucht. Code: Dim drawingDocument1 As Document Set drawingDocument1 = CATIA.ActiveDocument Dim drawingSheets1 As DrawingSheets Set drawingSheets1 = drawingDocument1.SheetsDim drawingSheet1 As DrawingSheet Set drawingSheet1 = drawingSheets1.Item("01") drawingSheet1.Activate Dim drawingViews1 As DrawingViews Set drawingViews1 = drawingSheet1.Views Dim drawingView1 As DrawingView Set drawingView1 = drawingViews1.ActiveView 'drawingView1.Activate Set drawingViews1 = drawingSheet1.Views Set drawingView1 = drawingViews1.Item("Front view") If drawingView1 = Null Then MsgBox "ist nicht da" Else MsgBox "ist da" End If
aber Nothing kennt VBA bei mir nicht (Compile error: Invalid use of object). Hast Du da noch eine Idee? ------------------ MfG N4426 [Diese Nachricht wurde von n4426 am 14. Apr. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 14. Apr. 2011 14:53 <-- editieren / zitieren --> Unities abgeben: Nur für n4426
|
n4426 Mitglied CAx-Administration, Technischer Zeichner (Maschinen- und Anlagentechnik)
Beiträge: 65 Registriert: 17.01.2003
|
erstellt am: 14. Apr. 2011 15:02 <-- editieren / zitieren --> Unities abgeben:
Also, Is Nothing kennt VBA. Es ist nur das problem, das wenn ich jetzt z.B. nach Blatt 05 suche (was es in der Drawing nicht gibt), steigt er mir schon eine zeile vorher mit einem Runt-time error 438 (Object dosn't support this property or method) aus. Code: Set drawingSheet1 = drawingSheets1.Item("05") If drawingSheet1 Is Nothing Then Exit Sub
Hab ich da jetzt was falsch gemacht?
------------------ MfG N4426 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: 14. Apr. 2011 15:09 <-- editieren / zitieren --> Unities abgeben: Nur für n4426
Servus Du kannst einfach die Fehlerbehandlung kurzfristig ausschalteten: Code: On error resume next Set drawingSheet1 = drawingSheets1.Item("05") If drawingSheet1 Is Nothing Then Exit Sub on error goto 0
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
n4426 Mitglied CAx-Administration, Technischer Zeichner (Maschinen- und Anlagentechnik)
Beiträge: 65 Registriert: 17.01.2003
|
erstellt am: 14. Apr. 2011 15:27 <-- editieren / zitieren --> Unities abgeben:
|
mycon Mitglied
Beiträge: 58 Registriert: 14.02.2011 Catia V5R19
|
erstellt am: 17. Apr. 2011 19:25 <-- editieren / zitieren --> Unities abgeben: Nur für n4426
Hi, ich versuche gerade etwas ähnliches, allerdings funktioniert bei mir das drawingView1.firstlink nicht. Er gibt dann nur aus: Run-time error '-2147467259 (8000-4005)': Method 'Firstlink' of object 'DrawingViewGenerativeLinks' failed Weiss jemand wieso? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
n4426 Mitglied CAx-Administration, Technischer Zeichner (Maschinen- und Anlagentechnik)
Beiträge: 65 Registriert: 17.01.2003
|
erstellt am: 17. Apr. 2011 19:35 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 17. Apr. 2011 19:38 <-- editieren / zitieren --> Unities abgeben: Nur für n4426
|
mycon Mitglied
Beiträge: 58 Registriert: 14.02.2011 Catia V5R19
|
erstellt am: 17. Apr. 2011 20:12 <-- editieren / zitieren --> Unities abgeben: Nur für n4426
Mit .parent tritt der gleiche Fehler auf. Die Ansicht ist abgeleitet von der XY-Ebene eines .CatPart Und von diesem CatPart (erstmal das finden *g) möchte ich den Instancename und die Nomenclature auslesen. 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: 17. Apr. 2011 20:14 <-- editieren / zitieren --> Unities abgeben: Nur für n4426
Servus Versuch es mal mit drawingView1.GenerativeBehavior.Document das Dokument, von dem die Ansicht abgleitet ist abzufragen. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mycon Mitglied
Beiträge: 58 Registriert: 14.02.2011 Catia V5R19
|
erstellt am: 17. Apr. 2011 20:20 <-- editieren / zitieren --> Unities abgeben: Nur für n4426
Ebenfalls failed. Run-time error '-2147418113 (8000ffff): Method 'Document' of object 'DrawingViewGenerativeBehavior' failed
Code: Sub CATMain()Dim drawingDocument1 As Document Set drawingDocument1 = CATIA.ActiveDocument Dim drawingSheets1 As DrawingSheets Set drawingSheets1 = drawingDocument1.Sheets Dim drawingSheet1 As DrawingSheet 'Set drawingSheet1 = drawingSheets1.ActiveSheet Set drawingSheet1 = drawingSheets1.Item(1) drawingSheet1.Activate Dim drawingViews1 As DrawingViews Set drawingViews1 = drawingSheet1.Views Dim drawingView1 As DrawingView Set drawingView1 = drawingViews1.ActiveView 'drawingView1.Activate Set drawingViews1 = drawingSheet1.Views Set drawingView1 = drawingViews1.Item(1) 'Set drawingView1 = drawingViews1.Item("Front view") drawingView1.Activate MsgBox drawingView1.GenerativeBehavior.Document.Name End Sub
[Diese Nachricht wurde von mycon am 17. Apr. 2011 editiert.] 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: 17. Apr. 2011 20:27 <-- editieren / zitieren --> Unities abgeben: Nur für n4426
Servus Du verwendest die falsche View: Item(1) = Vordergrund, Item(2) = Hintergrund, Item(3) ist die erste selbst erzeuge Ansicht Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. [Diese Nachricht wurde von bgrittmann am 17. Apr. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mycon Mitglied
Beiträge: 58 Registriert: 14.02.2011 Catia V5R19
|
erstellt am: 17. Apr. 2011 20:46 <-- editieren / zitieren --> Unities abgeben: Nur für n4426
|