Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  sphärische Punkteingabe

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:  sphärische Punkteingabe (1521 mal gelesen)
Werner-Maahs.de
Mitglied
CAD-Dozent + Konstrukteur + Autor


Sehen Sie sich das Profil von Werner-Maahs.de an!   Senden Sie eine Private Message an Werner-Maahs.de  Schreiben Sie einen Gästebucheintrag für Werner-Maahs.de

Beiträge: 626
Registriert: 04.05.2005

Win XP
AC 2005/6
Manchmal AC 2011

erstellt am: 28. Feb. 2008 13:41    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

In AutoCAD habe ich die Möglichkeit der sphärischen Punkteingabe -> Abstand<Winkel<Winkel. In Lisp habe ich bisher immer erst das BKS verändert um dann mit der Funktion (polar Punkt Winkel Abstand) ans gewünschte Ziel zu kommen. Dies zieht aber immer den, wie ich finde lästigen Schwanz (trans ..), mit der Koordinatenumwandlung mit sich. Daher hier meine Frage:

Kann ich in Lisp eine Punktberechnung (ohne BKS-Änderung) vornehmen, die der sphärischen Punkteingabe in AutoCAD vergleichbar ist?

------------------
strukturiertes Zeichnen mit Werner-Maahs

[Diese Nachricht wurde von Werner-Maahs.de am 28. Feb. 2008 editiert.]

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: 28. Feb. 2008 13:50    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 Werner-Maahs.de 10 Unities + Antwort hilfreich

X=A*sin W1
Y=A*cos W1
Z=A*sin W2

so?

------------------
  - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

Werner-Maahs.de
Mitglied
CAD-Dozent + Konstrukteur + Autor


Sehen Sie sich das Profil von Werner-Maahs.de an!   Senden Sie eine Private Message an Werner-Maahs.de  Schreiben Sie einen Gästebucheintrag für Werner-Maahs.de

Beiträge: 626
Registriert: 04.05.2005

Win XP
AC 2005/6
Manchmal AC 2011

erstellt am: 28. Feb. 2008 14: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

Hallo Thomas,
Ohne Deinen Beitrag irgend wie geprüft zu haben, hier mal ein Beispiel

in AutoCAD:

Code:
1 Linie
2 0,0,0
3 100<90<60
4

in LISP:

Code:
(command
"Linie"
'(0 0 0)
(List 0 (* 100 (sin (/ pi 2))) (* 100 (sin (/ pi 3))))
"")

Hast Du das gemeint?

------------------
strukturiertes Zeichnen mit Werner-Maahs

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

Werner-Maahs.de
Mitglied
CAD-Dozent + Konstrukteur + Autor


Sehen Sie sich das Profil von Werner-Maahs.de an!   Senden Sie eine Private Message an Werner-Maahs.de  Schreiben Sie einen Gästebucheintrag für Werner-Maahs.de

Beiträge: 626
Registriert: 04.05.2005

Win XP
AC 2005/6
Manchmal AC 2011

erstellt am: 28. Feb. 2008 14:43    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

Oh ja,
ich weiß schon was Du meinst!
Bleibt jedoch noch die Frage nach dem 3D-Abstand, in meinem Beispiel der Wert 100, unbeantwortet.

Trotzdem schon mal Danke!

------------------
strukturiertes Zeichnen mit Werner-Maahs

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 28. Feb. 2008 14: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 Nur für Werner-Maahs.de 10 Unities + Antwort hilfreich

Hallo Werner,
oder erst Polar in der Ebene anhängen und dann um z korrigieren:
Code:

(defun c:test ( / )
  (setq pkt '(0.0 0.0 0.0)
dist 10.0
w1 (/ pi 2.0)
w2 (/ pi 3.0))
  (command "_.line" pkt (mapcar '+(polar pkt w1 (*(cos w2) dist))
(list 0.0 0.0 (*(sin w2) dist)))""))

------------------
viele Grüße

Jörn

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

scj
Mitglied
 


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

Beiträge: 554
Registriert: 09.08.2001

erstellt am: 28. Feb. 2008 15:27    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 Werner-Maahs.de 10 Unities + Antwort hilfreich

Mein Vorschlag ist sicher nicht sehr elegant - aber er funktioniert:

(setq a (strcat (rtos l) "<" (rtos ang1) "<" (rtos ang2)))
(command "_line" "0,0,0" a "")

Mit besten Grüßen aus der Rhön
Jochen
PS: Man kann so auch noch den "Klammeraffen" mit einbasteln...

[Diese Nachricht wurde von scj am 28. Feb. 2008 editiert.]

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: 28. Feb. 2008 20:38    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 Werner-Maahs.de 10 Unities + Antwort hilfreich

   
Zitat:
Original erstellt von Werner-Maahs.de:
...mit der Funktion (polar Punkt Winkel Abstand)...sphärischen Punkteingabe...


Mach dir einfach eine Funktion (Polar3D pt dist ang1 ang2)
genau wie von Jörn vorgeschlagen.
Hier aus meinem Fundus - und sie sieht exakt wie die Funktion von Jörn aus
Code:
((defun Polar3D (3dpt 3ddist xyAng zAng)
  (mapcar '+ (polar 3dpt xyAng (* (cos zAng) 3ddist))
              (list 0.0 0.0 (* (sin zAng) 3ddist))
  )
)


Die Winkel kann man sich vorher ja mit (ANGTOF Winkeltext) umrechnen lassen.


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

Udo Hübner
www.CAD-Huebner.de


[Diese Nachricht wurde von CAD-Huebner am 01. Mrz. 2008 editiert.]

[Diese Nachricht wurde von CAD-Huebner am 01. Mrz. 2008 editiert.]

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

Werner-Maahs.de
Mitglied
CAD-Dozent + Konstrukteur + Autor


Sehen Sie sich das Profil von Werner-Maahs.de an!   Senden Sie eine Private Message an Werner-Maahs.de  Schreiben Sie einen Gästebucheintrag für Werner-Maahs.de

Beiträge: 626
Registriert: 04.05.2005

Win XP
AC 2005/6
Manchmal AC 2011

erstellt am: 29. Feb. 2008 13: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

Super,

Danke an alle für die schnelle Hilfe!

Ich habe inzwischen mit CADmiums Hilfe gearbeitet, indem ich den Zielpunkt durch Schnittpunktfunktion ermittelt habe und dann einfach eine Linie von Punkt nach Punkt gezeichnet habe.

Je nach Aufgabe finde ich in fast allen Hilfen etwas was mich auf dem Weg ein wenig mehr zu LISPeln unterstützt.
Versucht habe ich zwar erst die Tipps von Thomas aber insbesondere die Funktion von Udo macht mich neugierig. Habe bisher nur sehr wenig mit 'mapcar' gearbeitet um es zu verstehen.

Nochmals Danke an alle

------------------
strukturiertes Zeichnen mit Werner-Maahs

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

Werner-Maahs.de
Mitglied
CAD-Dozent + Konstrukteur + Autor


Sehen Sie sich das Profil von Werner-Maahs.de an!   Senden Sie eine Private Message an Werner-Maahs.de  Schreiben Sie einen Gästebucheintrag für Werner-Maahs.de

Beiträge: 626
Registriert: 04.05.2005

Win XP
AC 2005/6
Manchmal AC 2011

erstellt am: 01. Mrz. 2008 09:53    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


3D-PolarPEV.LSP.txt

 
Jetzt habe ich auch das mit der Mapcar-Funktion verstanden. Ist einfach genial!

Udo, klappt eigentlich Dein Fundus bei Dir? Ich habe es damit jedenfalls nicht hinbekommen. Aber Dein Hinweis, dass es exakt die Funktion von Jörn ist, hat mich veranlaßt die Sachen zu vergleichen.
Die Funktion von Jörn funktionierte jedenfalls auf anhieb. Ich hatte zunächst nur nicht seine Erklärung verstanden.

Da Ihr ja in der Regel wissen wollt wie das Ergebnis Eurer Hilfe ausschaut, hier meine Vereinigung von Jörn's und Udo's Funktionien:

Code:
(defun Polar3D ( 3DPkt 3DDist xyAng zAng )
  (setq xyAng (* pi (/ xyAng 180.0))
        zAng  (* pi (/ zAng  180.0)))
  (mapcar '+
          (polar 3DPkt xyAng (* (cos zAng) 3DDist))
          (list 0.0 0.0 (* (sin zAng) 3DDist))
          )
  )

------------------
strukturiertes Zeichnen mit Werner-Maahs

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: 01. Mrz. 2008 10: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 Werner-Maahs.de 10 Unities + Antwort hilfreich

Nun ja, die Funktion polar (und meine daraus entwickelte Funktion Polar3D) erwarten den Winkel - wie üblich - im Bogelmaß.
Deshalb der Hinweis, evt. Winkeleingaben mit Angtof umzurechnen.

So eine Funktion muss algemeingültig laufen - ich habe auch viele Vermessungszeichmungen, da ist das Winkeleinheitensystem auf Gon (Neugrad) eingestellt). Da wäre der Faktor 180/PI schlichtweg falsch.

Allerdings hatte meine ursprüngliche Funktion oben einen Tippfehler (beim Formatieren eingeschlichen) enthalten, deswegen lief sie nicht - mein Versehen Werner - habs jetzt korrigiert.

Hier die Funktion und eine dazu passende Testfunktion

Code:
;;; Allgemeine 3D Polarfunktion, Winkel werden im Bogenmaß erwartet
(defun Polar3D (3dpt 3ddist xyAng zAng)
   (mapcar '+ (polar 3dpt xyAng (* (cos zAng) 3ddist))
              (list 0.0 0.0 (* (sin zAng) 3ddist))
  )
)
;;; Testfunktion ;;;
(defun c:Test ( / pt dist w1 w2)
  (setq pt   (getpoint "Startpunkt:")
        dist (getdist pt "\n3D-Länge:")
        w1   (getangle pt "Winkel in XY Ebene:")
        w2   (getangle pt "Winkel in Z Ebene:")
  )
  (command "_line" pt (Polar3D pt dist w1 w2) "")
)

Die Winkel kann man natürlich in Grad eingeben, werden von getangle automatisch ins Bogenmaß umgerechnet.

Befehl: TEST
Startpunkt:
3D-Länge:100
Winkel in XY Ebene:30
Winkel in Z Ebene:60 
   


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

Udo Hübner
www.CAD-Huebner.de

[Diese Nachricht wurde von CAD-Huebner am 01. Mrz. 2008 editiert.]

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