Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Drehwinkel von BKS

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Drehwinkel von BKS (1436 mal gelesen)
SHP
Mitglied
Konstrukteur


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

Beiträge: 1331
Registriert: 17.07.2003

Win2k
IV7-SP1
IV8
IV9

erstellt am: 02. Mrz. 2006 20:36    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,
schon wieder eine Frage an die Experten.
Ich habe das WKS um die X-Achse gedreht, und dann um die Y-Achse.
Kann man die einzelnen Drehwinkel im nachhinein herausfinden?

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



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

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 02. Mrz. 2006 23:18    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 SHP 10 Unities + Antwort hilfreich

Ja.

------------------
Mit freundlichem Gruß

Udo Hübner

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

danielboukreev
Mitglied



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

Beiträge: 27
Registriert: 10.03.2005

erstellt am: 03. Mrz. 2006 08:12    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 SHP 10 Unities + Antwort hilfreich

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


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

Beiträge: 1331
Registriert: 17.07.2003

Win2k
IV7-SP1
IV8
IV9

erstellt am: 03. Mrz. 2006 21:52    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

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



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

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 04. Mrz. 2006 12:13    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 SHP 10 Unities + Antwort hilfreich

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


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

Beiträge: 1331
Registriert: 17.07.2003

Win2k
IV7-SP1
IV8
IV9

erstellt am: 04. Mrz. 2006 13:10    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

@Udo Hübner,
danke für Deine Lösung, die funzt einwandfrei.
Werde mir den Code mal zerlegen um diesen zu verstehen.

------------------
Gruß
Hans-Peter
Der Wahnsinn in Sachen Musik.

  Das Saxregister
 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

SHP
Mitglied
Konstrukteur


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

Beiträge: 1331
Registriert: 17.07.2003

Win2k
IV7-SP1
IV8
IV9

erstellt am: 04. Mrz. 2006 20:55    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

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



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

Beiträge: 2490
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 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 SHP 10 Unities + Antwort hilfreich

Hi SHP,
ich glaube nirgendwo ist Lisp im Allgemeinen und mapcar und lambda im speziellen besser beschrieben als unter: http://www.autolisp-tutorial.mapcar.net/

Du mußt es nur LESEN!

------------------
Ciao,
Marc

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



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

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 05. Mrz. 2006 16: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 SHP 10 Unities + Antwort hilfreich


Formel.jpg


ucsrotation.jpg

 
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



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

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 05. Mrz. 2006 16:49    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 SHP 10 Unities + Antwort hilfreich

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


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

Beiträge: 1331
Registriert: 17.07.2003

Win2k
IV7-SP1
IV8
IV9

erstellt am: 05. Mrz. 2006 18:15    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

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




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 05. Mrz. 2006 18: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 Nur für SHP 10 Unities + Antwort hilfreich

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

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