Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Automatische Translation der Parts eines Products

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Automatische Translation der Parts eines Products (1721 mal gelesen)
gebbo
Mitglied
Analyse


Sehen Sie sich das Profil von gebbo an!   Senden Sie eine Private Message an gebbo  Schreiben Sie einen Gästebucheintrag für gebbo

Beiträge: 10
Registriert: 29.09.2013

Catia V5 R19

erstellt am: 23. Jan. 2014 10:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von xam0560 an!   Senden Sie eine Private Message an xam0560  Schreiben Sie einen Gästebucheintrag für xam0560

Beiträge: 445
Registriert: 11.08.2008

erstellt am: 23. Jan. 2014 10:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für gebbo 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Hamlet an!   Senden Sie eine Private Message an Hamlet  Schreiben Sie einen Gästebucheintrag für Hamlet

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für gebbo 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von gebbo an!   Senden Sie eine Private Message an gebbo  Schreiben Sie einen Gästebucheintrag für gebbo

Beiträge: 10
Registriert: 29.09.2013

Catia V5 R19

erstellt am: 26. Jan. 2014 18:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 26. Jan. 2014 18:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für gebbo 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von gebbo an!   Senden Sie eine Private Message an gebbo  Schreiben Sie einen Gästebucheintrag für gebbo

Beiträge: 10
Registriert: 29.09.2013

Catia V5 R19

erstellt am: 26. Jan. 2014 18:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von gebbo an!   Senden Sie eine Private Message an gebbo  Schreiben Sie einen Gästebucheintrag für gebbo

Beiträge: 10
Registriert: 29.09.2013

Catia V5 R19

erstellt am: 27. Jan. 2014 19:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 27. Jan. 2014 21:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für gebbo 10 Unities + Antwort hilfreich

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz