Autor
|
Thema: Automatische Translation der Parts eines Products (1721 mal gelesen)
|
gebbo Mitglied Analyse
Beiträge: 10 Registriert: 29.09.2013 Catia V5 R19
|
erstellt am: 23. Jan. 2014 10:22 <-- editieren / zitieren --> Unities abgeben:
Hallo! Ich bin im Makro-Programmieren für Catia V5 leider nicht wirklich fit. Ich habe mich zwar schon bisschen eingelesen aber mir fehlt noch viel. Ich habe mehrere größere Products, deren Einzelparts ich gerne für eine schöne Darstellung auseinanderrücken würde. Nun ist die Explosionsfunktion in Catia nur bedingt sinnvoll, sodass ich die Lösung über den DMU Navigator – Translation bevorzuge. Dort rücke ich die Teile wie sie verbaut sind um einen bestimmten x-Wert auseinander, die Außenhaut muss also am weitesten weg gerückt werden. Da ich nun viele Products habe würde ich das ganze gern über ein Makro automatisieren aber stelle mir die Frage wie ich das lösen könnte. Das Hauptproblem sehe ich darin, dass ich eine unterschiedliche Anzahl Einzelparts und sogar Unterbaugruppen habe. Somit muss das äußerste Teil mal um a in x verschoben werden, sind es mehr Einzelparts dann muss es weiter weg geschoben werden. Ein möglicher Weg wäre ja vorher zählen zu lassen wie viel Einzelteile zu verrücken sind und dann für jede Bewegung den Wert ausrechnen zu lassen. Eine halbautomatische, für mich auch vertretbare Umsetzung wäre, wenn ich als Bediener nach Starten des Makros die Parts einzeln anklicken kann und die es dann sofort entsprechend verschiebt. Wähle ich danach eines dahinter an, dann soll es natürlich den ersten Part auch wieder um den gleichen Wert verschieben. Im Endeffekt finde ich diese Lösung vielleicht noch besser. Zuzüglich soll noch von jedem Part in einer 3D-Annotation der Name des Parts angezeigt werden. Ist der Aufwand für diesen Lösungsweg halbwegs in einem erträglichen Maß? Gibt es noch andere Lösungswege? Wie könnte diese Umsetzung aussehen? Mir fehlt es leider völlig an der Programmiertechnischen Umsetzung Für Hilfe wäre ich sehr dankbar! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
xam0560 Mitglied Konstruktion / Administration
Beiträge: 445 Registriert: 11.08.2008
|
erstellt am: 23. Jan. 2014 10:46 <-- editieren / zitieren --> Unities abgeben: Nur für gebbo
Hossa, das was du vorhast ist schon eine ander Hausnummer. Ich bin zwar auch nicht der imba spezialist in VB, aber das wird scher. Ich persönlich würde eine schleife programmieren mit manueller Abfrage. D.H. 1. Musst du deinem Makro sagen um welchen Wert das ganze verschoben werden soll. 2. In welche Richtung? Alle gleich oder unterschiedliche? 3. Startbauteil 4. Ab hier jetzt die Schleife mit, das nächste Teil anklicken in Caita. 4.1 Schleifendurchlauf = Verschiebe Auswahl um X in Richtung Y 4.2 next I (mit abbruch funktion) 5. End sub Das bedeutet aber, deine klickreihenfolge muss absolut passen. Ein Fehler und dein makro baut es dir andes auseinander. Das du alles Automatisch machst, wird meines Wissens schwer werden. Catia kann unmöglich wissen, was wann wo wie kommt, ausser du Programmiert KI, was schwer werden wird.
------------------ Gruß, Maximilian
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hamlet Mitglied Konstruktions- und Entwicklungsingenieur
Beiträge: 57 Registriert: 14.05.2013 Catia V5 R21 Windows 7 64bit using: Microsoft Visual Basic
|
erstellt am: 23. Jan. 2014 10:47 <-- editieren / zitieren --> Unities abgeben: Nur für gebbo
Hi, meiner Meinung nach ist anfangs alle Parts zählen und um einen Faktor der Anzahl (bzw. position) verschieben, sehr viel einfacher als erst z.b. 3 parts auswählen -> verschieben und sofern noch ein part angewählt wird, anhand ihrer ursprünglichen position verschieben. sollen die einzelparts in den unterbaugruppen auch verschoben werden, oder nur die unterbaugruppe an sich? (unterscheidung ist sehr wichtig, da man entweder nur eine ebene unter dem hauptproduct suchen, oder aber alle ebenen nach unten hin absuchen muss) ansonsten würde ich einfach alle x-werte der parts/baugruppen bzgl. des hauptproducts auslesen, nach größe sortieren und ja nach position im speicher-array einfach verschieben gruß hamlet [Diese Nachricht wurde von Hamlet am 23. Jan. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gebbo Mitglied Analyse
Beiträge: 10 Registriert: 29.09.2013 Catia V5 R19
|
erstellt am: 26. Jan. 2014 18:25 <-- editieren / zitieren --> Unities abgeben:
hallo und danke schonmal ihr beiden für die ersten antworten! villeicht wäre es auch eine Lösung, die verschiebung nicht sofort vorzunehmen, sondern durch anklicken eine liste zu füllen und quasi durch die anklickreihenfolge eine abarbeitungsfolge für das makro zu erstellen, dann muss das noch zählen wieviel in der liste sind, das mit dem gewünschten Abstand multiplizieren und dann ausführen. wie wäre das? das würde immer noch viel arbeit abnehmen, trotzdem noch variabel sein und ein gutes ergebnis liefern. ist das eine gute möglichkeit? 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: 26. Jan. 2014 18:33 <-- editieren / zitieren --> Unities abgeben: Nur für gebbo
Servus Was du beschreibst ist so möglich, und macht das Makro (dann aber nur in VBA (oder sogar VB.net) möglich) besser kontrollierbar. Ist aber bestimmt immer noch ein hoher Aufwand dies zu programmieren (ohne Erfahrung 2-3 Tage??). Für ein paar wenige Baugruppen würde ich die manuelle Methode nehmen: - geeignete Schrittweite beim Kompass einstellen - Instanzen mit dem Kompass verschieben Gruß Bernd
------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gebbo Mitglied Analyse
Beiträge: 10 Registriert: 29.09.2013 Catia V5 R19
|
erstellt am: 26. Jan. 2014 18:45 <-- editieren / zitieren --> Unities abgeben:
Es sind ja nicht nur ein paar wenige Baugruppen und schon auch nicht wenige Einzelteile, daher ja meine Motivation dieses Makro anzusteuern erhoffe mir halt durch dieses makro eine schöne darstellungsoption die bei meiner arbeit sehr hilfreich wäre. wenn ich so darüber nachdenke würde mir die zuletzt aufgeführte listenoption sogar am besten gefallen, weil am variabelsten und dennoch effektiv... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gebbo Mitglied Analyse
Beiträge: 10 Registriert: 29.09.2013 Catia V5 R19
|
erstellt am: 27. Jan. 2014 19:54 <-- editieren / zitieren --> Unities abgeben:
Hallo! Ich habe mal ein Macro aufgezeichnet:
Code: Language="VBSCRIPT" Sub CATMain() Set productDocument1 = CATIA.ActiveDocument Set product1 = productDocument1.Product Set products1 = product1.Products Set product2 = products1.Item("beispiel.1") Set move1 = product2.Move Set move1 = move1.MovableObject Dim arrayOfVariantOfDouble1(11) arrayOfVariantOfDouble1(0) = 1.000000 arrayOfVariantOfDouble1(1) = 0.000000 arrayOfVariantOfDouble1(2) = 0.000000 arrayOfVariantOfDouble1(3) = 0.000000 arrayOfVariantOfDouble1(4) = 1.000000 arrayOfVariantOfDouble1(5) = 0.000000 arrayOfVariantOfDouble1(6) = 0.000000 arrayOfVariantOfDouble1(7) = 0.000000 arrayOfVariantOfDouble1(8) = 1.000000 arrayOfVariantOfDouble1(9) = 200.000000 arrayOfVariantOfDouble1(10) = 0.000000 arrayOfVariantOfDouble1(11) = 0.000000 move1.Apply arrayOfVariantOfDouble1 End Sub
und eine Form erstellt: http://www.myimg.de/?img=form8d548.png allerdings bin ich schlichtweg zu unerfahren beides nun zu verbinden. also den code so mit variablen zu belegen, dass sie sich aus der form ergeben, egal ob es nun 5 teile sind oder 20. außerdem fehlt es mir leider daran, die teile so anzuwählen dass sie in der liste auftauchen. 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: 27. Jan. 2014 21:32 <-- editieren / zitieren --> Unities abgeben: Nur für gebbo
Servus Um das Makro richtig umsetzen zu können solltest du dir die Grundlagen zu VBA (gibt sicher genügend Tutorials dafür) aneignen und ggf ein Buch zur Makroprogrammierung in CATIA besorgen. Zusätzlich solltest du dir mit der API-Doku vertraut machen. Grundsätzlich würde ich so vorgehen (als Beispiel): - mir zB SelectElement3 die Teile/Unterbaugruppen selektieren lassen - Selektion ggf in einer Collection zwischenspeichern - ListBox mit dem Namen der Instanzen füllen - ListBox ordnen - mit Move die Instanzen verschieben (Weg berechnet sich aus der Stellung in der Listbox) Gruß Bernd PS: Ich selbst würde für das Makro sicher 1,5 Tage einplanen bis es halbwegs sicher läuft. ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |