| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: Drehwinkel von BKS (1556 mal gelesen)
|
SHP Mitglied Konstrukteur
Beiträge: 1331 Registriert: 17.07.2003 Win2k IV7-SP1 IV8 IV9
|
erstellt am: 02. Mrz. 2006 20:36 <-- editieren / zitieren --> Unities abgeben:
|
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 02. Mrz. 2006 23:18 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
|
danielboukreev Mitglied
Beiträge: 27 Registriert: 10.03.2005
|
erstellt am: 03. Mrz. 2006 08:12 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
Nur eine Idee (vielleicht gehts auch komfortabler): Man nehme einen Punkt (z.b. '(1 1 1)) und transformiere diesen mittels trans dann ins wks, anschließend kann man aus dem Winkel zwischen Ursprung und dem transformierten Punkt die einzelnen Drehwinkel herausrechnen (stichwort Winkelfunktionen) daniel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SHP Mitglied Konstrukteur
Beiträge: 1331 Registriert: 17.07.2003 Win2k IV7-SP1 IV8 IV9
|
erstellt am: 03. Mrz. 2006 21:52 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von danielboukreev: Nur eine Idee (vielleicht gehts auch komfortabler): Man nehme einen Punkt (z.b. '(1 1 1)) und transformiere diesen mittels trans dann ins wks, anschließend kann man aus dem Winkel zwischen Ursprung und dem transformierten Punkt die einzelnen Drehwinkel herausrechnen (stichwort Winkelfunktionen)daniel
So hab ich das schon versucht. Das funzt aber nur bei der 1. Drehung. Bei der 2. bekomm auch ich den Winkel zum WKS, der stimmte aber nicht mit Winkel zusammen, mit dem ich das 2.x gedreht habe. @Udo Hübner, vielleicht ein kleiner Tip?
------------------ Gruß Hans-Peter Der Wahnsinn in Sachen Musik. Das Saxregister Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 04. Mrz. 2006 12:13 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
Vorgestern abend war es schon so spät - da hats nur für ein Ja gereicht. Hier mal ein LISP-Programm für diesen speziellen Fall. Für Allgemeinfunktionalität muss zuvor noch die Drehung um die Z-Achse bestimmt werden und die Verschiebung des BKS Ursprungs berücksichtigt werden.
Code:
; Udo Hübner alias CAD-Huebner für CAD.de Beitrag: ; http://ww3.cad.de/foren/ubb/Forum145/HTML/001558.shtml ; 3.3.2006 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(DEFUN C:UCSROTATION ( / ); Xdir Ydir) ; Unterfunktionen (DEFUN SIGN (X) (IF (/= x 0.0) (FIX (/ x (abs x))) 0 ) ) (DEFUN ASIN (ang) (IF (/= (Abs ang) 1.0) (Atan (/ ang (Sqrt (- 1 (* ang ang))))) (* 0.5 PI (Sign ang)) ) ) ;;; Hauptprogramm (SETQ Xdir (GETVAR "UCSXDIR") ; Achsvektor des aktuellen BKS Ydir (GETVAR "UCSYDIR") ) (IF (EQUAL (ABS (CAR Ydir)) 0.0 1.0E-10) ; BKS Y-Achse liegt in WKS Y-Z Ebene (PROGN ; spezielle Lösung für die Annahme das das WKS erst um die X-Achse, und dann um die Y-Achse (des dann schon aktuellen BKS gedreht wurde) ; Z-Verdrehung und Nullpunktverschiebung nicht berücksichtigt. (PRINT "\nBKS Rückdrehung zum BKS") (PROMPT (STRCAT "\nRückdrehung um Y-Achse: " (ANGTOS (* -2.0 (ASIN (* 0.5 (SQRT (APPLY '+ (MAPCAR '(LAMBDA (val) (* val val))(MAPCAR '- Xdir '(1.0 0.0 0.0))))))))) ) ) (PROMPT (STRCAT "\nRückdrehung um X-Achse: " (ANGTOS (* -2.0 (ASIN (* 0.5 (SQRT (APPLY '+ (MAPCAR '(LAMBDA (val) (* val val))(MAPCAR '- Ydir '(0.0 1.0 0.0))))))))) ) ) ) (PROMPT "\nBKS Y-Achse liegt nicht in WKS Y-Z Ebene!") ) (PRINC) ); Ende
------------------ Mit freundlichem Gruß Udo Hübner Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SHP Mitglied Konstrukteur
Beiträge: 1331 Registriert: 17.07.2003 Win2k IV7-SP1 IV8 IV9
|
erstellt am: 04. Mrz. 2006 13:10 <-- editieren / zitieren --> Unities abgeben:
|
SHP Mitglied Konstrukteur
Beiträge: 1331 Registriert: 17.07.2003 Win2k IV7-SP1 IV8 IV9
|
erstellt am: 04. Mrz. 2006 20:55 <-- editieren / zitieren --> Unities abgeben:
Der Code läuft einwandfrei, aber ich möchte diesen, und auch die Hintergründe verstehen. Mit "ucsxdir" bekomme ich einen Punkt im WKS, dessen Verbindung zu 0,0,0 gleich 1 beträgt. Ebenso bei "ucsydir". Soweit bin ich dabei, nur den Code kann ich nicht deuten. (ANGTOS (* -2.0 (ASIN (* 0.5 (SQRT (APPLY '+ (MAPCAR '(LAMBDA (val) (* val val))(MAPCAR '- Xdir '(1.0 0.0 0.0))))))))) (MAPCAR '- Xdir '(1.0 0.0 0.0)) warum wird hier der X-Wert um 1.0 reduziert? (LAMBDA (val) (* val val)) wie groß ist hier val? wird hier x*x y*y z*z gerechnet? Ich hab noch nicht mit LAMBDA und MAPCAR gearbeitet, möchte es aber verstehen. Mit den Angaben in der Hilfe allein komm ich nicht durch. Könnte mir jemand den Code zum Besseren Verständnis aufsplitten? meine Lösung: 1. (MAPCAR '- Xdir '(1.0 0.0 0.0)) = neuer Punkt um Winkelhalbierende gespiegelt 2. x² + y² + z² des neuen Punktes 3. Wurzel daraus und halbieren 4. ergibt den Sinus des halben Drehwinkels um Y
(SETQ Xdir (GETVAR "UCSXDIR")) (setq e (* 0.5 (SQRT (APPLY '+ (MAPCAR '(LAMBDA (val) (* val val))(MAPCAR '- Xdir '(1.0 0.0 0.0))))))) (arxload "geomcal" "geladen") (setq dreh_y (* (cal "asin(e)") 2)) ------------------ Gruß Hans-Peter Der Wahnsinn in Sachen Musik. Das Saxregister [Diese Nachricht wurde von SHP am 04. Mrz. 2006 editiert.] [Diese Nachricht wurde von SHP am 04. Mrz. 2006 editiert.] [Diese Nachricht wurde von SHP am 04. Mrz. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2494 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 05. Mrz. 2006 13:29 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
|
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 05. Mrz. 2006 16:46 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
Der Lisp Ausdruck Zitat:
(ASIN (* 0.5 (SQRT (APPLY '+ (MAPCAR '(LAMBDA (val) (* val val))(MAPCAR '- Xdir '(1.0 0.0 0.0))))))
Berechnet die Winkelverdrehung nach folgender Formel: Als Grundlage habe ich folgendes Bild genommen: Die Verwendung von LAMDA mit APPLY (hier zum Quadieren der X, Y und Z Werte mit anschließender Addition) und von MAPCAR (zum Abziehen der Koordinatenwerte) kann man erschöpfend im Handbuch oder auf Axel Seiten (siehe oben) nachlesen.
------------------ Mit freundlichem Gruß Udo Hübner Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 05. Mrz. 2006 16:49 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
Ach ja, ASIN (Arcus Sinus) und SIGN gibts nicht in Autolisp, deshalb habe ich diese Funktionen (schon im obigen Quelltext) beigelegt: Code:
(DEFUN SIGN (X) ; Vorzeichen ermitteln (IF (/= x 0.0) (FIX (/ x (abs x))) 0 ) )(DEFUN ASIN (ang) ; Acrus Sinus mit Hilfe von Arcus Tangens berechnen (IF (/= (Abs ang) 1.0) (Atan (/ ang (Sqrt (- 1 (* ang ang))))) (* 0.5 PI (Sign ang)) ) )
------------------ Mit freundlichem Gruß
Udo Hübner [Diese Nachricht wurde von CAD-Huebner am 05. Mrz. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SHP Mitglied Konstrukteur
Beiträge: 1331 Registriert: 17.07.2003 Win2k IV7-SP1 IV8 IV9
|
erstellt am: 05. Mrz. 2006 18:15 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von CAD-Huebner: Der Lisp Ausdruck [QUOTE] (ASIN (* 0.5 (SQRT (APPLY '+ (MAPCAR '(LAMBDA (val) (* val val))(MAPCAR '- Xdir '(1.0 0.0 0.0))))))
Berechnet die Winkelverdrehung nach folgender Formel: Als Grundlage habe ich folgendes Bild genommen: Die Verwendung von LAMDA mit APPLY (hier zum Quadieren der X, Y und Z Werte mit anschließender Addition) und von MAPCAR (zum Abziehen der Koordinatenwerte) kann man erschöpfend im Handbuch oder auf Axel Seiten (siehe oben) nachlesen. [/QUOTE]
Allerbesten Dank für die Bemühungen. Bin gestern noch sehr lange gesessen um auf die Lösung zu kommen. Die Mühe hat sich gelohnt, und nun auch noch die Bestätigung. Danke nochmal.
------------------ Gruß Hans-Peter Der Wahnsinn in Sachen Musik. Das Saxregister Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 05. Mrz. 2006 18:54 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
Zitat: Original erstellt von CAD-Huebner: Ach ja, ASIN (Arcus Sinus) und SIGN gibts nicht in Autolisp, deshalb habe ich diese Funktionen (schon im obigen Quelltext) beigelegt:
Code:
(DEFUN SIGN (X) ; Vorzeichen ermitteln (IF (/= x 0.0) (FIX (/ x (abs x))) 0 ) )(DEFUN ASIN (ang) ; Acrus Sinus mit Hilfe von Arcus Tangens berechnen (IF (/= (Abs ang) 1.0) (Atan (/ ang (Sqrt (- 1 (* ang ang))))) (* 0.5 PI (Sign ang)) ) )
zu sign .. warum soviele Operationen? (defun DT:SIGN (ZAHL) (if(numberp ZAHL)(if(< Zahl 0 ) -1.0 1.0)) ) tut's auch .. 0 nehme ich mal mit zu den Pos.Zahlen
und zu asin : (defun DT:ASIN ( SINUS / WINKEL ) (if (numberp SINUS) (cond ((= SINUS 1) (* PI 0.5)) ((= SINUS -1) (* PI -0.5)) ((and(<= SINUS 1.0)(>= SINUS -1.0)) (setq WINKEL (atan (/ SINUS (sqrt (- 1.0 (* SINUS SINUS)))))) ) ) ) ) ..brauch ich das sign nicht und ein cond sollte hier auch effektiver sein als die Rechenoparationen. Aber das nur am Rande.. Schön erklärt Udo !! ------------------ - Thomas - "Du bist einen uns unbekannten Weg in eine andere Form des Seins gegangen. - Wir sehen uns wieder in deinem Paradies! - Tschüß Axel.." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |