CADsite forum

AutoCAD => Autolisp => Topic gestart door: Snuffel op di 19 12 2006, 13:46:15

Titel: Gebruik van pi in een lisp-routine
Bericht door: 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
Titel: Re: Gebruik van pi in een lisp-routine
Bericht door: bart op di 19 12 2006, 16:40:50
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)
Titel: Re: Gebruik van pi in een lisp-routine
Bericht door: HofCAD op di 19 12 2006, 19:24:51
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