Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Winkel von GetComponents.Position

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:  Winkel von GetComponents.Position (929 mal gelesen)
KADv5
Mitglied
Ingenieur


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

Beiträge: 13
Registriert: 22.01.2018

Intel Xeon E5-2643 3,4Ghz
12,0 GB Ram
Win 7 Enterprise 64-bit
Catia V5R26 SP3 HF21

erstellt am: 15. Feb. 2018 15:30    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


Unbenannt.jpg

 
Hi,

ich möchte von einem Part in einem Product die Koordinaten und Winkel der Verschiebung per macro abrufen.

Manuell mache ich das über den "Translation or Rotation"-Befehl in der "DMU-Navigator" Umgebung.

Ich habe ein Part in einem Product dass ich über den "Translation or Rotation"-Befehl verschoben bzw. gedreht habe.
X=1mm
Y=2mm
Z=3mm
RotX=0deg
RotY=45deg
RotZ=90deg
(siehe auch Screenshot im Anhang)

Mit folgendem Code bekomme ich die Werte:

Code:

Sub CATMain()
    '***DEKLARATIONEN
    Dim intProdDocObj As ProductDocument
    Dim intRootProdObj As Product
    Dim intProdsObj As Products
    Dim intProdObj As Product
    Dim intPositionObj As Object
    Dim intPosArr(11)
 
    '***OBJEKTE HOLEN
    Set intProdDocObj = CATIA.ActiveDocument
    Set intRootProdObj = intProdDocObj.Product
    Set intProdsObj = intRootProdObj.Products
    Set intProdObj = intProdsObj.Item(57) '(intProdsObj.Count)
 
    Set intPositionObj = intProdObj.position
 
    '***POSITION IN ARRAY SCHREIBEN
    intPositionObj.GetComponents intPosArr
End Sub

Das Macro gibt folgende Werte zurück:
intPosArr(0) = 0
intPosArr(1) = 0,707
intPosArr(2) = -0,707
intPosArr(3) = -1
intPosArr(4) = 0
intPosArr(5) = 0
intPosArr(6) = 0
intPosArr(7) = 0,707
intPosArr(8) = 0,707
intPosArr(9) = 1        (Verschiebung in X)
intPosArr(10) = 2        (Verschiebung in Y)
intPosArr(11) = 3        (Verschiebung in Z)

Die Verschiebung ist mir klar. Die steht in intPosArr(9) - intPosArr(11)

Aber wie bekomme ich nun die Winkel aus den Werten intPosArr(0) - intPosArr(8)?
Idealerweise möchte ich eine MsgBox die mir dann einfach zum Beispiel für RotY = 45 grad ausgibt

Ich habe den ganzen Tag etwas über Drehmatrizen und Transformationsmatrizen gelesen. Komme damit aber nicht weiter bzw. verstehe nicht wie ich darüber ans Ziel kommen soll.

Ich habe die Werte die das Macro zurück gibt mal etwas durchgerechnet.
Zu erst habe ich den ArcSin davon gebildet:
intPosArr(0) = 0
intPosArr(1) = 0,78524716
intPosArr(2) = -0,78524716
intPosArr(3) = -1,57079633
intPosArr(4) = 0
intPosArr(5) = 0
intPosArr(6) = 0
intPosArr(7) = 0,78524716
intPosArr(8) = 0,78524716

Dann diese Werte von Rad nach grad umgeformt (durch 0,01745 geteilt):
intPosArr(0) = 0
intPosArr(1) = 44,999
intPosArr(2) = -44,999
intPosArr(3) = -90,016
intPosArr(4) = 0
intPosArr(5) = 0
intPosArr(6) = 0
intPosArr(7) = 44,999
intPosArr(8) = 44,999

Somit bekomme ich schonmal Werte die nahe an das ran kommen was ich suche. Aber die Logik dahinter verstehe ich nicht.

Hat jemand einen Beispiel-Code wie man an die Winkel kommt?
Ich denke mein Problem ist überwiegend mathematischer Natur ^^

[Diese Nachricht wurde von KADv5 am 16. Feb. 2018 editiert.]

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: 16. Feb. 2018 09:20    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 KADv5 10 Unities + Antwort hilfreich

Servus

So einfach ist das leider nicht, da (siehe auch hier) die meisten Komponenten aus allen drei Winkel berechnet werden.
Für die Umrechnung gibt es zB diese Formeln (ich denke das ist die richtige Dreh-Konvention.

Gruß
Bernd

------------------
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