Autor
|
Thema: Load/Unload eines Parts in einem Product (6619 mal gelesen)
|
Shamrock2 Mitglied CAD-Admin
Beiträge: 33 Registriert: 24.09.2009 CATIA V5 R16/R17 - x32 R18/R19 - x64 mit VISTAx64 auf HP XW4600
|
erstellt am: 28. Sep. 2009 11:29 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich versuche PARTs, die geladen (=load) sind, per Macro zu entladen (unload). Im Forum habe ich (bis jetzt) nichts gefunden. Dann habe ich aus Catia heraus ein Macro erstellt: - rechte Maustaste auf das geladene Dokument/PART - "Components" / "Unload" Erzeugt wurde: Sub CATMain() Set productDocument1 = CATIA.ActiveDocument Set product1 = productDocument1.Product Set products1 = product1.Products Set product2 = products1.Item("ZYLINDER.1") Set products2 = product2.Products End Sub Ich sehe darin keinen "unload"-Befehl und ausserdem bricht es, wenn ich das Macro ausführe, an der letzten Zeile mit Fehler ab. Kann mir jemand weiter helfen?
Danke und Gruß Joachim Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 28. Sep. 2009 11:44 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Ich nehme an mit laden meinst du den Designmode. Den schaltest du über oSubProducts.ApplyWorkMode DESIGN_MODE um. Abbrechen tut dein Makro in der letzten Zeile sicher, weil dein Product keine Products enthält. ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shamrock2 Mitglied CAD-Admin
Beiträge: 33 Registriert: 24.09.2009 CATIA V5 R16/R17 - x32 R18/R19 - x64 mit VISTAx64 auf HP XW4600
|
erstellt am: 28. Sep. 2009 12:02 <-- editieren / zitieren --> Unities abgeben:
Hallo Henry, "geladen" ist das Produkt/Parts im DEFAULT_MODE. Hier liegt nicht mein Problem. Bzgl. dem erzeugten Macro sehe ich das auch so, dass in der letzten Zeile keine "Products" vorhanden sind. Aber: wie schon geschrieben, das Macro ist aus Catia heraus per MacroGenerator erzeugt - sollte also tun. Somit ist meine FRAGE nach wie vor OFFEN: ??? wie entlade "unload" ich ein z.B. PART ??? Gruß Joachim Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
richter2 Mitglied
Beiträge: 81 Registriert: 21.10.2009
|
erstellt am: 28. Okt. 2009 17:05 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
|
Shamrock2 Mitglied CAD-Admin
Beiträge: 33 Registriert: 24.09.2009 CATIA V5 R16/R17 - x32 R18/R19 - x64 mit VISTAx64 auf HP XW4600
|
erstellt am: 29. Okt. 2009 07:22 <-- editieren / zitieren --> Unities abgeben:
Hallo Klaus, mit folgenden Zeilen konnte ich den Punkt lösen: Entladen (unload) For l = catProducts.Count to 1 step -1 Set myAktiProd = catProducts.Item(l) Set myRefProduct = myAktiProd.ReferenceProduct myAktiProd.ApplyWorkMode VISUALIZATION_MODE Next ... und wieder laden (load) For l = 1 To catProducts.Count Set myAktiProd = catProducts.Item(l) myAktiProd.ApplyWorkMode DEFAULT_MODE Next hoffe, das hilft. Gruß Joachim Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
richter2 Mitglied
Beiträge: 81 Registriert: 21.10.2009
|
erstellt am: 29. Okt. 2009 12:32 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Hallo Joachim, das Laden funktioniert. Jedoch funktioniert das Entladen (VISUALIZATION_MODE) nicht. Das heißt zumindest wird das Part nicht in eckigen Klammern dargestellt. Gibt es keinen Befehl für das wirkliche Entladen der Parts? Was ist mit den Catia.StartCommands Load und Unload ? Kann man diese dazu verwenden? Mir ist es bisher allerdings nicht gelungen. Die Frage ist auch ob der Speicherbedarf beim Umschalten in den Visualisierungsmodus geringer wird und somit große Baugrubben trotz keines eigentlichen Entladevorgangs dargestellt werden können. Gruß Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shamrock2 Mitglied CAD-Admin
Beiträge: 33 Registriert: 24.09.2009 CATIA V5 R16/R17 - x32 R18/R19 - x64 mit VISTAx64 auf HP XW4600
|
erstellt am: 29. Okt. 2009 12:41 <-- editieren / zitieren --> Unities abgeben:
|
tberger Mitglied Application Manager CATIA V5 / V6
Beiträge: 1385 Registriert: 13.01.2007 WIN 7 64bit V5R21SP3HF49 3DX/V6 R2016x
|
erstellt am: 29. Okt. 2009 13:06 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Beim Umschalten in den Visualisierungsmodus wird definitiv weniger Speicher benötigt. Meine Schweissbaugruppen z.B. haben nativ geladen (also Design Mode) CNEXT mit 2,3 GB belastet, nach Umschalten in Visu Mode waren es noch 600 MB. Es kommt auch darauf an, wie genau die cgr-Rasterung eingestellt ist. Ist sie (General Display Performance, 3D Accuracy) standardmäßig 0.2, ist das ca. mein Wert. Ist sie genauer eingestellt (0.02), dann braucht CNEXT auch wieder mehr, da ja auch wesentlich mehr Dreiecke dargestellt werden müssen. Ebenso werden nicht unbedingt alle Teile in den Visu Mode zurückgesetzt, wenn sie z.B. noch nicht gesichert sind oder nur Drähte enthalten. Ich würde dir aber generell zum cache mode raten, wenn ihr mit größeren Baugruppen hantiert (macht ihr wahrscheinlich eh schon). ------------------ Grüße aus dem Rheinland Thomas +++++++++++++++++++++++++++++++++ CATIA - eine Laune der Natur ... "Phase 2 in CATIA V5" - www.tobeplus.de tberger@tobeplus.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MICHLICK Mitglied CAD Methodik Entwickler (CATIA; NX)
Beiträge: 454 Registriert: 20.06.2001 Der Aufwand bei Änderungen ist groß, wenn die Finger schneller klicken als das Gehirn denkt.
|
erstellt am: 03. Nov. 2009 07:19 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
|
Shamrock2 Mitglied CAD-Admin
Beiträge: 33 Registriert: 24.09.2009 CATIA V5 R16/R17 - x32 R18/R19 - x64 mit VISTAx64 auf HP XW4600
|
erstellt am: 03. Nov. 2009 07:56 <-- editieren / zitieren --> Unities abgeben:
|
richter2 Mitglied
Beiträge: 81 Registriert: 21.10.2009
|
erstellt am: 03. Nov. 2009 13:40 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
|
Smerg Mitglied Student
Beiträge: 43 Registriert: 20.03.2008
|
erstellt am: 11. Jan. 2010 16:34 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
So nach mehr als 40 Stunden probieren und probieren bin ich ziemlich verzweifelt. Es klappt einfach nicht. Zur Situation: Ich habe erst einmal alle Parts per Hand entladen um das Makro zum laden zu testen. Dabei hab ich den Zustand nach dem entladen auch gleich "per Hand" gespeichert. Das Makro sieht so aus:
Code: For l = 1 To CATIA.ActiveDocument.Product.Products.Count CATIA.ActiveDocument.Product.Products.ApplyWorkMode DEFAULT_MODE Next
Es bringt keinen Fehler. Macht aber auch nicht das was es soll. Das gleiche ist beim entladen per Makro... Mach ich irgendetwas grundsätzlich falsch, habe ich das System dahiner noch nicht erkannt. Hab mich dabei an Shamrock2s Code/Anweisungen gehalten. Hat jemand einen Tipp bzw. mal etwas fertiges zum anschauen. ------------------ ODI PROFANUM VULGUS Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
richter2 Mitglied
Beiträge: 81 Registriert: 21.10.2009
|
erstellt am: 12. Jan. 2010 13:14 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Hallo Smerg, du erstellst eine For Schleife und beziehst dich in den nachfolgenden Anwendungen gar nicht mehr auf deinen Zählparameter. Das heißt: Entweder ist deine Schleife sinnlos oder die nachfolgenden Anweisungen falsch. Hier ist wohl eher zweiteres der Fall, da ich glaube, dass es in Catia nicht möglich ist, alle Part gleichzeitig laden bzw. zu entladen. Also versuche einmal den kompletten Code von Shamrock2: For l = 1 To catProducts.Count Set myAktiProd = catProducts.Item(l) myAktiProd.ApplyWorkMode DEFAULT_MODE Next Solltest du dann dein Makro zum laufen gebracht haben (es läuft also ohne Fehlermeldung durch) und das laden / entladen funktioniert dennoch nicht, dann überprüfe ob du die entsprechende Catia-Bibliothek eingebunden hast. Das war glaube ich iregndetwas mit CatiaStructureInterface... oder so ähnlich. (Ich meine dies wenn du im VBA Editor programmierst) Gruß Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MICHLICK Mitglied CAD Methodik Entwickler (CATIA; NX)
Beiträge: 454 Registriert: 20.06.2001 Der Aufwand bei Änderungen ist groß, wenn die Finger schneller klicken als das Gehirn denkt.
|
erstellt am: 12. Jan. 2010 13:51 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Was man auch immer unter default work mode versteht (DEFAULT_MODE). Ich verwende immer DESIGN_MODE - da weiß man was man hat. myAktiProd.ApplyWorkMode DESIGN_MODE
------------------ Gruß Michael B. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Smerg Mitglied Student
Beiträge: 43 Registriert: 20.03.2008
|
erstellt am: 12. Jan. 2010 15:39 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
@richter2 upps, das x.Item(i).blabla ist mir beim kopieren entwischt. Natürlich hab ich es aber bei mir drin. Es funktioniert trotzdem nicht... @MICHLICK Welcher MODE ist ja erstmal egal, er macht keine Änderung und bringt auch keine Fehler ------------------ ODI PROFANUM VULGUS Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
richter2 Mitglied
Beiträge: 81 Registriert: 21.10.2009
|
erstellt am: 13. Jan. 2010 09:40 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Wenn der Code ohne Fehler durchläuft aber nichts passiert, dann wie gesagt mal die Einbindung der Bibliothek CATIA V5 ProductStructureInterface Object Library kontrollieren. In VBA muss dort der Haken gesetzt sein, damit die Befehle für das Laden und Entladen auch funktionieren. Gruß Klaus
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Smerg Mitglied Student
Beiträge: 43 Registriert: 20.03.2008
|
erstellt am: 14. Jan. 2010 16:35 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
|
richter2 Mitglied
Beiträge: 81 Registriert: 21.10.2009
|
erstellt am: 20. Jan. 2010 15:29 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
|
Smerg Mitglied Student
Beiträge: 43 Registriert: 20.03.2008
|
erstellt am: 21. Jan. 2010 10:55 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
In meinem kleinen Testproduct theoretisch geladen. Jedoch da es eher darum geht etwaige entladene Produkte zu laden, habe ich diese immer erst per Hand entladen um darauf das Makro anzuwenden. Nach dem entladen speicher das ganze Product noch. Ich probier heut es noch einmal anders herum, d.h. geladene zu entladen. Irgendwann muss es doch funktionieren Set myRefProduct = myAktiProd.ReferenceProduct Darüber bin ich gerade noch bei Shamrock gestoßen, siehe:
Code: Entladen (unload) For l = catProducts.Count to 1 step -1 Set myAktiProd = catProducts.Item(l) Set myRefProduct = myAktiProd.ReferenceProduct myAktiProd.ApplyWorkMode VISUALIZATION_MODE Next
Wozu genau ist das im Code da? Aus der CATIA-Hilfe werde ich nicht schlau, wieso das in dem Quelltext steht. Zitat: Property ReferenceProduct( ) As CATIAProduct (Read Only) Returns the Reference Product of this instance.
Desweiteren wurde ja geschrieben zum entladen muss ich alle Documents Items schließen muss. Zitat: sind die Documente auch geschlossen? Documents.Item(i).CloseVorher ev. ein Documents.Item(i).Save Sonst können sie nicht entladen werden.
Da kann ich dann jedoch beim entladen nicht mehr auf mein ActiveDocument zu greifen, dazu ist dann bestimmt das ReferenceProduct gut? Mein Betreuer/Chef weiß auch nicht weiter. Es sieht doch alles so einfach und logisch aus. Haben es auf mehreren Rechnern mit verschiedenen Releases von Catia probiert (R17,R18,R19), kein Erfolg. An der Uni bei mir kann auch keiner helfen. Aber aufgeben ist nicht. gruß Stefan
------------------ ODI PROFANUM VULGUS Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
richter2 Mitglied
Beiträge: 81 Registriert: 21.10.2009
|
erstellt am: 22. Jan. 2010 08:47 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Hallo, stell doch mal deinen gesmaten Quellcode hier rein. Dann finden wir oder ein anderer bestimmt auch deinen Fehler. Ich glaube mittlerweile nämlich eher, dass deine Schleife und der darin enthaltene Zugriff auf die Parts nicht i.O. ist. Und dann wäre es nämlich mgl., dass du den Befehl für das umschalten in den Darstellungsmodus auf irgendetwas anwendest was gar nicht entladen werden kann. Das ReferenceProdukt ist übrigens das Vaterprodukt im Stammbaum, also eben das Produkt (Baugruppe) auf das sich das aktuelle Bauteil oder die aktuelle Baugruppe bezieht. Daher eben Referenz... Gruß Klaus Gruß Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Smerg Mitglied Student
Beiträge: 43 Registriert: 20.03.2008
|
erstellt am: 22. Jan. 2010 23:08 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Der Code: Code:
SUB CATMain() { Dim i As Integer Dim aktProd As Product For (i=CATIA.ActiveDocument.Product.Products.count To i=1 Step -1 { Set aktProd = CATIA.ActiveDocument.Product.Products.Item(i) aktProd.ApplyWorkMode = DEFAULT_MODE /*bzw. VISUALIZATION_MODE*/ } }
Habe den Quelltext leider nur aus dem Kopf schreiben können. Hab zurzeit ihn nicht bei der Hand. Hab es in einem extra Modul drin, wollt es noch nicht in mein Projekt einfügen bevor es funktioniert. Wozu dient die Refernce in der Schleife bei Shamrocks Beispiel? Man verwendet Sie dort schließlich nicht?
Leider versteh ich von dem Ingenieur-Sachen wenig, da ich es selber nicht studiere. Bis jetzt hab ich mir da alles selber bei gebracht. Ich hab ein Product mit verschieden Baugruppen(Parts) zum testen. Wenn ich so mal schaue, versuche ich doch eigentlich von meinem Product(aus dem ProductDocument/ActiveDocument) die PartDocuments zu entladen!? Dies wäre eigentlich falsch. Müsste ich nicht die Teile in dem PartDocuments entladen. @Klaus: danke dir für deine Hilfe gruß Stefan ------------------ ODI PROFANUM VULGUS Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
richter2 Mitglied
Beiträge: 81 Registriert: 21.10.2009
|
erstellt am: 10. Feb. 2010 14:20 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Hallo, sorry dass ich mich erst jetzt wieder melde. Die Referenz in obigen Beispiel kannst du weglassen. Das hast du richtig erkannt. In deinem Quellcode erkenne ich momentan keinen Fehler bis auf dass das = zwischen aktProd.ApplyWorkMode und DEFAULT_MODE weg muss. Ist aber wohl in den "richtigen" Quellcode auch der Fall. Funktioniert das Laden und Entladen den überhaupt wenn du es händisch in Catia machst? Gruß Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Smerg Mitglied Student
Beiträge: 43 Registriert: 20.03.2008
|
erstellt am: 17. Feb. 2010 11:29 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Händisch geht es. Hab es jetzt noch auf einer anderen Maschine mit V5R19P4 getestet. Es läuft dort auch nicht. D.h. es arbeitet alles sauber ab, bringt jedoch nicht das gewünschte Ergebnis. @richter2: hast du vielleicht zum testen eine Datei mit Code von dir für mich! Damit ich weiß, ob es an CATIA oder an meinem Quellcode liegt. Im Anhang mein Testmodul. gruß Stefan ------------------ ODI PROFANUM VULGUS Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
richter2 Mitglied
Beiträge: 81 Registriert: 21.10.2009
|
erstellt am: 18. Feb. 2010 09:41 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Hm, also ich habe deinen Code bei mir ausprobiert - er funktioniert. Was mir nicht gefällt: Du lädts bzw. entlädts immer komplette Baugruppen nicht ein einzelnes Part. Aber damit wird es wohl nichts zu tun haben. Was du noch probieren kannst: Vorher immer mal noch einen save Befehl für die Baugruppen einbauen. Daran kann ein entladen auch scheitern. Aber insgesamt scheint es so, als hätte es etwas mit deinem Catia zu tun. Möglicherweise kann man da auch irgendetwas einstellen. Aber da bin ich überfragt. Da es aber händisch funktioniert wäre auch das nicht richtig schlüssig. So richtig kann ich das alles nicht glauben. Irgendeine Lösung muss es eigentlich geben. Zeichne doch mal das Makro auf wenn du es händisch machst. Und führe es dann mal aus. (nachdem du es vorher händisch wieder geladen bzw. entladen hast) Funktioniert wenigstens das? Oder führt dein Catia gar keine Makro Befehle aus... Gruß Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Smerg Mitglied Student
Beiträge: 43 Registriert: 20.03.2008
|
erstellt am: 21. Feb. 2010 15:25 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Schön zu sehen, dass es bei dir funtkioniert. Jetzt weiß ich zumindest, dass es an CATIA liegt. Ein kleiner Schritt weiter. Händisch funtkioniert es, wie bereits erwähnt. Jedoch nimmt der Macrorecorder nichts Sinnvolles auf. Hat jemand eine Ahnung, was ich in CATIA ein-/umstellen muss. Bzw. welche Richtung ich witer recherchieren muss, damit das eigentlich funtkionierente Skript bei mir läuft. ------------------ ODI PROFANUM VULGUS 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: 21. Feb. 2010 17:44 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Servus Zwischen welchen Modi willst du umschalten? Willst du nicht auf den DESIGN_MODE schalten (komplette Geometrie)? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
richter2 Mitglied
Beiträge: 81 Registriert: 21.10.2009
|
erstellt am: 22. Feb. 2010 12:44 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
|
Aitec Mitglied
Beiträge: 30 Registriert: 25.04.2018 Catia V5-R2016
|
erstellt am: 12. Jul. 2018 16:33 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
|