Zobrazit plnou verzi příspěvku: zadání bodu
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
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.
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...