FastFiber

Gebruik van pi in een lisp-routine

Gestart door Snuffel, di 19 12 2006, 13:46:15

Vorige topic - Volgende topic

Snuffel

2pi is 360°
pi dus 180°
en 0.5pi 90°

Nu wil ik dat in een lispje gebruiken en alles werkt perfect als ik 0 of pi gebruik.
Als ik 0.5pi of 0.25pi wil gebruiken dan werkt het niet als ik de lisp inlaad.
Met autocad 2002 leek ik dat probleem niet te hebben maar nu we autocad 2006 gebruiken wel.
Of misschien maak ik wel een fout in de notering ervan.
Een vb:
(defun c:sysv120 (/ p1 pt p2)
   (command "layer" "s" "A32-_BINNENSCHRIJNWERK_NIEUW" "")
(setq p1(getpoint "\nInsertionpoint? (linksonder)"))
(setq pt (polar p1 0.25pi 5))
...

Weet iemand wat er fout gaat?
Alvast bedankt

Goetjes Snuffel

bart

Citaat van: Snuffel op di 19 12 2006, 13:46:15
2pi is 360°
pi dus 180°
en 0.5pi 90°

Nu wil ik dat in een lispje gebruiken en alles werkt perfect als ik 0 of pi gebruik.
Als ik 0.5pi of 0.25pi wil gebruiken dan werkt het niet als ik de lisp inlaad.
Met autocad 2002 leek ik dat probleem niet te hebben maar nu we autocad 2006 gebruiken wel.
Of misschien maak ik wel een fout in de notering ervan.
Een vb:
(defun c:sysv120 (/ p1 pt p2)
   (command "layer" "s" "A32-_BINNENSCHRIJNWERK_NIEUW" "")
(setq p1(getpoint "\nInsertionpoint? (linksonder)"))
(setq pt (polar p1 0.25pi 5))
...

Weet iemand wat er fout gaat?
Alvast bedankt

Goetjes Snuffel


Als je zegt dat 2 pi 360 graden is moet je er wel bij zeggen dat de hoek dan in radialen wordt aangegeven

(setq pt (polar p1 (* 0.25 PI) 5)) zou moeten werken (niet getest)
Domme vragen bestaan niet.
Domme antwoorden wel.

m.vr. groet Bart

HofCAD

#2
Citaat van: Snuffel op di 19 12 2006, 13:46:15
2pi is 360°
pi dus 180°
en 0.5pi 90°

Nu wil ik dat in een lispje gebruiken en alles werkt perfect als ik 0 of pi gebruik.
Als ik 0.5pi of 0.25pi wil gebruiken dan werkt het niet als ik de lisp inlaad.
Met autocad 2002 leek ik dat probleem niet te hebben maar nu we autocad 2006 gebruiken wel.
Of misschien maak ik wel een fout in de notering ervan.
Een vb:
(defun c:sysv120 (/ p1 pt p2)
   (command "layer" "s" "A32-_BINNENSCHRIJNWERK_NIEUW" "")
(setq p1(getpoint "\nInsertionpoint? (linksonder)"))
(setq pt (polar p1 0.25pi 5))
...

Weet iemand wat er fout gaat?
Alvast bedankt

Goetjes Snuffel


Beste Snuffel,

Men kan haast zeggen dat standaard onderstaande procedures
gebruikt worden om hoeken om te zetten.


(defun dtr (a)
   (setq a (/ (* a pi) 180))
)
(defun rtd (a)
   (setq a (* (/ a pi) 180))
)


Men gebruikt DTR om van decimale graden naar radialen te gaan,
en men gebruikt RTD om van radialen naar decimalen graden te gaan.
Je kan dus zo als Bart schreef:

(defun c:sysv120 (/ p1 pt p2)
(command "layer" "s" "A32-_BINNENSCHRIJNWERK_NIEUW" "")
(setq p1(getpoint "\nInsertionpoint? (linksonder)"))
(setq pt (polar p1 (* 0.25 pi) 5))
...


of je kan:

(defun dtr (a)
   (setq a (/ (* a pi) 180))
)
(defun c:sysv120 (/ p1 pt p2)
(command "layer" "s" "A32-_BINNENSCHRIJNWERK_NIEUW" "")
(setq p1(getpoint "\nInsertionpoint? (linksonder)"))
(setq pt (polar p1 (dtr 45) 5))
...


Let dus op de prefix notatie in Lisp.

Met vriendelijke groet,
HofCAD CSI

PS
(dtr 45) geeft 0.785398
(/ pi 4) geeft 0.785398
(* 0.25 pi) geeft 0.785398
(atan 1) geeft ook 0.785398
ACADcadabra