| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co. |
| |
 | Erfolgreich unterwegs mit der KISTERS 3DViewStation, ein Whitepaper
|
Autor
|
Thema: Verschiebung ermitteln zwischen zwei Produkten (1612 mal gelesen)
|
V5-Macro-Noob Mitglied

 Beiträge: 15 Registriert: 14.01.2010
|
erstellt am: 14. Jan. 2010 22:16 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich habe die Aufgabe bekommen, mit Hilfe eines Makros die Verschiebung zwischen 2 beliebigen Produkten zu ermitteln. ich bin makro programmier anfänger und meine vorgehensweise habe ich mir im programm so vorgestellt: erstellung eines parts im ersten product erstellung eines parts im zweiten produkt auslesen der x,y,z verschiebung sowie -verdrehung zwischen beiden produkten ausgabe der komponenten löschen beider parts ich wollte fragen, ob diese vorgehensweise i.o ist bzw. ob jemand ncoh einen anderen und simpleren weg vorschlagen kann. zudem benötige ich ein paar tipps, wie ich die verschiebungen zwischen den beiden neu erstellten parts ermitteln kann (da bin ich mom noch etwas planlos), z.b. schwebt mir vor ein zugriff über die koordinatensysteme; jedoch erahne ich, das mir so nur zweimal 0,0,0 ausgegeben wird, da die koordinaten der beiden koordinatensysteme stets auf 0 liegen werden. für hilfe und ideen bin ich sehr dankbar. 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: 15. Jan. 2010 12:23 <-- editieren / zitieren --> Unities abgeben:          Nur für V5-Macro-Noob
Hallo und Willkommen im Forum, du kannst die Suchfunktion nutzen, dann wirst du schon einige Hinweise auf dein Problemfall finden.
Um eine Verschiebung zu ermitteln ist es natürlich notwendig dass beide Parts/Products in einem Product vorhanden sind. Du solltest außerdem in Koordinatentransformation fit sein, wegen der Verdrehung. Hast du mal ein Beispiel? Grüße Dominik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
V5-Macro-Noob Mitglied

 Beiträge: 15 Registriert: 14.01.2010
|
erstellt am: 18. Jan. 2010 15:50 <-- editieren / zitieren --> Unities abgeben:         
Danke und ein hallo zurück, zuerst die Antworten auf die gestellten Frage: ja, die Parts bzw. Produkte sind in einem Product zusammengebaut. in Koordinatentransformation bin ich wohl leider nicht so fit; siehe angehängte Datei. Um jeweils eine Achse zu drehen habe ich keine Probs, auch eine Drehung um 2 Achsen funktioniert, aber nur bei kleinen Winkel; schon ab einem Winkel von 20° stehen meine Achsen nicht mehr 100% senkrecht zueinander. Ich weiß momentan auch nicht, wo mein Fehler liegt, viell. hat jemand einen Tipp für mich? und mein bsp ist ganz einfach, nimm 2 produkte mit je 1 part, bau sie in einem weiteren produkt zusammen und verschiebe je 1 produkt mit part, und schon interessiert mich, wie ich an diese verschiebung heran komme. ein schlüsselwort würde mir ausreichen. nochmals danke LG Jörg
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
V5-Macro-Noob Mitglied

 Beiträge: 15 Registriert: 14.01.2010
|
erstellt am: 19. Jan. 2010 14:28 <-- editieren / zitieren --> Unities abgeben:         
|
V5-Macro-Noob Mitglied

 Beiträge: 15 Registriert: 14.01.2010
|
erstellt am: 22. Jan. 2010 13:17 <-- editieren / zitieren --> Unities abgeben:         
Danke für die Hilfe, das auslesen der Ursprungskoordinaten hat beim ersten Mal ohne Probleme geklappt; war einfacher als gedacht. Ein Problem bleibt momentan noch; meine Koordinatentransformation hat noch immer nicht hin. Ich habe auch schon im Forum gesucht aber nichts sinnvolles gefunden. Kann mir noch jemand einen Tipp geben, wo ich eine 3-dim. Koordinatentransformation (eventuell auch mit Programmcode) finden und verstehen kann. Das ist das letzte Puzzle in meinem Makro, doweit funktioniert alles richtig gut. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12054 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 22. Jan. 2010 15:41 <-- editieren / zitieren --> Unities abgeben:          Nur für V5-Macro-Noob
|
V5-Macro-Noob Mitglied

 Beiträge: 15 Registriert: 14.01.2010
|
erstellt am: 26. Jan. 2010 17:59 <-- editieren / zitieren --> Unities abgeben:         
Danke für den hilfreichen Tip, ich habe schon einige Bücher und Internetseiten durchsucht und gefunden, dass man eine beliebige rotation im 3d als jeweils eine rotation um eine achse erzeugen kann. (unter beachtung, dass die reihenfolge der rotation einfluss auf das endergebnis hat. dies habe ich im wuellcode umgesetzte (siehe angehängte datei ein paar abschnitte weiter oben), funktioniert auch für die rotatiom um je eine achse 1a. möchte ich nun aber um 2 achsen hintereinander rotieren, dann gibt es probs. habe verschiedene überlegungen angestellt, welche mein problem aber nicht gelöst haben, konnte aber bisher alles ausschließen. z.b. pi zu ungenau angegeben, double genauigkeit nicht genügend, vorzeichenfehler (hab einen gefunden und schon geändert) dennoch hat nichts geholfen, habe immernoch einen fehler, wahrscheinlich einen denkfehler, den ich momentan nicht erkenne. deswegen meine frage nach hilfe und prüfung meines quellcodes, wo mein fehler liegen könnte. um hilfe wäre ich sehr dankbar. gruß jörg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
V5-Macro-Noob Mitglied

 Beiträge: 15 Registriert: 14.01.2010
|
erstellt am: 27. Jan. 2010 14:52 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammmen, da es wohl hier im Forum niemanden gibt, der mir bei meinem Problem helfen kann, wollte ich eine andere Vorgehnsweise in den raum werfen, mit dem ich meinen Fehler viell. umgehen kann. Bisher ist es so, dass ich abstände und winkeldifferenzen ermittle und diese mit dem befehl MOVE nutzen wollten. Da ich sowieso die Endposition meiner Produkte einlese, kann ich bestimmt diese umrechnen und dem Koordinaten des Produktes zuweisen, in der art von GETKOORD. Könntet ihr eure Meinung darüber bitte posten, ob das geht und auch i.o. wäre. vielen dank gruß Jörg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
  
 Beiträge: 608 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 29. Jan. 2010 08:57 <-- editieren / zitieren --> Unities abgeben:          Nur für V5-Macro-Noob
Hallo, ich würde anders vorgehen. Mittels .Position.GetComponents kannst du die die Transformation eines Parts/Products bezogen auf den Ursprung des Products in welchem es verbaut ist, als 11-stelliges array ausgeben lassen. Rekursiv ausgeführt (bis hoch zum Root) erhälst du (unabhängig von der Verschachtelunstiefe) die absolute Transformation eines Parts/Products bezogen auf den Ursprung des Roots. Einfach für beide Parts/Products ausführen und die eine Matrix von der anderen subtrahieren und du erhälst die Verschiebung der beiden zueinander (bezogen auf die Hauptrichtungen des absoluten Achsensystems des Roots) unabhängig davon, ob sich die beiden im selben Product befinden (also in der gleichen Verschachtelungstiefe). Das ist im Prinzip nur Vektorrechnung. Und der o.b. Ablauf funktioniert einwandfrei. Falls dir was unklar ist, melde dich nochmal. Gruß TomTom ------------------ tomtom1972 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
   
 Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 01. Feb. 2010 22:49 <-- editieren / zitieren --> Unities abgeben:          Nur für V5-Macro-Noob
Hallo V5-Macro-Noob, ich bin leider derzeit nur sporadisch im Forum , daher erst jetzt die Antwort zu Deinem Matrizen-Problem: Ergänzend zu den Ausführungen von "tomtom1972" noch der Link auf meine Standard-Antwort auf Dein Matrizen-Problem: http://ww3.cad.de/foren/ubb/Forum137/HTML/003719.shtml#000004. Wenn Du geschickt gesucht hättest, wärst Du sicher auf den einen oder anderen Beitrag dazu gestoßen... Falls das noch nicht Dein Problem löst, einfach wieder (präzis) nachfragen... Vielleicht sollte ich hier noch erwähnen, das CATIA mit Vektoren rechnet und nicht mit Rotationen um Achsen. Dies ist der Fall im DELMIA, was immer eine Umrechnung bedeutet, wenn man die Angaben aus dem einem System im andern System verwenden will. 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 |
V5-Macro-Noob Mitglied

 Beiträge: 15 Registriert: 14.01.2010
|
erstellt am: 02. Feb. 2010 19:55 <-- editieren / zitieren --> Unities abgeben:         
Danke für eure Antworten, ich bin in meinem Programm jetzt auch übergegangen, direkt mit Vektoren zu rechnen und meine Produkte mit SetComponents zu positionieren. Vereinfacht einies im Quellcode, ist aber weniger Anschaulich als die Rotation um Achsen. Aber da werden meine Kollegen mit leben müssen. Habe auch schon ein kleines Programm erstellt, mit denen meine Kollegen Koordinaten von Produkten und Parts ermitteln können. Nun muss getestet und Bugs ausfindig gemacht werden. Nochmals Danke allen für alle Beiträge Gruß Jörg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |