Vytisknout stránku | Zavřít okno

zadání bodu

Vytištěno z: CAD Fórum
Kategorie: Autodesk - stavebnictví, strojírenství, CAD/GIS
Název fóra: CAD programování
Popis fóra: Otázky programování - nadstavby a utility pro CAD a GIS aplikace Autodesk (VBA, AutoLISP, ARX/C++, .Net, JavaScript, Python, MEL...)
URL: https://www.cadforum.cz/forum/forum_posts.asp?TID=7800
Datum vytištění: 11.čer.2026 v 20:30


Téma: zadání bodu
Odeslal: zchmela
Předmět: zadání bodu
Datum odeslání: 21.pro.2008 v 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



Odpovědi:
Odeslal: alfred
Datum odeslání: 21.pro.2008 v 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







Odeslal: chlebovsky
Datum odeslání: 22.pro.2008 v 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.


 


-------------
Ing. Martin Chlebovský

www.kde-je-auto.cz

GPS monitoring provozu vozidel a osob.

WebDeveloper.

Programátor aplikací pro Autocad a MS Office.

Tvorba WWW aplikací.

Modelování domů a staveb.&l


Odeslal: alfred
Datum odeslání: 22.pro.2008 v 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... Embarrassed






Vytisknout stránku | Zavřít okno