Zobrazit plnou verzi příspěvku: zadání bodu

zchmela
21.12.2008, 21:51
Dobrý den potřeboval bych poradit s jednoduchým prográmkem v lispu na kreslení křivky určené body x,y :
 
  (setq pocet 601)  (while (> pocet 0)    (setq x (* 0.01 (- pocet 601)))    (setq y (* 2 pocet))    (command "_point" x y)  ----- zde nevím jak zadat správnou syntaxi !!!    (setq pocet (- pocet 1))
  )
Díky za radu

alfred
21.12.2008, 22:32
bod musí být ve formátu LIST.(list x y z)např. bod X,Y,Z=1,2,3  je :(list 1 2 3)jde to zadat i takhle:'(1 2 3)Pokud Vám to nepůjde zkuste se podívat jaký formát vrací funkce (getpoint)Ve Vašem případě to bude : (command "_point" (list x y) "")PZN: ty koncové uvozovky "" jsou protože při příkazu _POINT je potřeba odentrovat pro ukončení příkazu

chlebovsky
22.12.2008, 10:09
Pokud se jedná o křivku tak bych to řešil takto :
(defun c:kkk (/)  (setq pocet 601)  (setq ent (list (cons 0 "LWPOLYLINE")    (cons 100 "AcDbEntity")    (cons 67 0)    (cons 410 "Model")    (cons 8 "0")    (cons 100 "AcDbPolyline")    (cons 90  pocet)    (cons 70 0)    (cons 43 0.0)    (cons 38 0.0)    (cons 39 0.0)))  (while (> pocet 0)    (setq x (* 0.01 (- pocet 601)))    (setq y (* 2 pocet))    (setq ent (append ent (list (cons 10 (list x y 0.0)))))    (setq ent (append ent (list (cons 40 0.0))))    (setq ent (append ent (list (cons 41 0.0))))    (setq ent (append ent (list (cons 42 0.0))))    (setq pocet (- pocet 1))  )  (setq ent (append ent (list (cons 210 (list 0.0 0.0 1.0)))))  (entmakex ent))
 
Jinak s těma uvozovkama to ale není tak úplně pravda. Záleží na verzi cadu, jestli se jedná o samotný dod, či multibod.
To ale otestujete tak že prostě napíšete :
a) (command "_point" (list x y)) a příkaz skončí
nebo
b) (command "_point" (list x y)) a příkaz bude chtít zadávat další bod, pak budete muset ty uvozovky napsat.
 

alfred
22.12.2008, 17:15
Ano, máte pravdu. V MAPu 2006 se v příkazu [CMD]BOD[/CMD] (_POINT) zadá jeden bod a příkaz končí, nemusí se entrovat prázdné zadání a tudíž ta dvojce uvozovek je zbytečná.Nezkoušel jsem to před napsáním příspěvku a už si ani nepamatuji v jaké verzi to takhle fungovalo a jestli jsem se prostě nespletl...