lsp程序怎么实现预览所要画的图形
www.dimcax.com
lsp程序怎么实现预览所要画的图形
lsp程序怎么实现预览所要画的图形,就像cad里你插入图块时还没指定点但可以看到图块的样子(不好意思没有截图)
比如下面这个简单的画一条线及在中间加个园的程序,我在没有指定pt2前,怎么可以看到从pt1到光标的连线以及那个园(我就知道连线呵呵)
(defun c:ll( / )
(setvar "osmode" 0)
(setq pt1 (getpoint "\n第一点: "))
(if (= nil pt1) (quit))
(setq pt2 (getpoint pt1 "\n下一点: "))
(if (= nil pt2) (quit))
(setq ang (angle pt1 pt2))
(setq dis (distance pt1 pt2))
(setq pt3 (polar pt1 ang (/ dis 2)))
(command "line" pt1 pt2 "")
(command "circle" pt3 10)
(princ)
)
怎么没有人回啊!痛苦等待中............
比如下面这个简单的画一条线及在中间加个园的程序,我在没有指定pt2前,怎么可以看到从pt1到光标的连线以及那个园(我就知道连线呵呵)
可用简单的文字来说明,在给第二点前一点到二点是有线的你可看到图,只是不知数数据.用下面的程序:
程序中只举了圆和线简单的说出它的参数.
(defun c:ll( / )
(setvar "osmode" 0)
(setq pt1 (getpoint "\n第一点: ") p1 (polar pt1 (* pi 0.25) 10) p2 (polar pt1 (* pi 1.25) 10))
(setq en (ssget "c" p1 p2))
(if (/= en nil)
(progn
(setq n (sslength en) i 0)
(repeat n
(setq en1 (entget (ssname en i)) nn (cdr (assoc 0 en1)) i (+ i 1))
(if (= nn "circle")
(progn
(setq la (cdr (assoc 8 en1)) ce (cdr (assoc 10 en1)) r (rtos (* (cdr (assoc 40 en1)) 2) 2 4))
(setq aa (strcat "是圆在" la "层直径为" r))
)
(if (= nn "line")
(progn
(setq la (cdr (assoc 8 en1)) p1 (cdr (assoc 10 en1)) p2 (cdr (assoc 11 en1)) l (rtos (distance p1 p2) 2 4))
(setq aa (strcat "是线在" la "层长度为" l))
)
))
(prompt aa) (terpri))
))
(if (= nil pt1) (quit))
(setq pt2 (getpoint pt1 "\n下一点: "))
(if (= nil pt2) ()
(progn
(setq ang (angle pt1 pt2))
(setq dis (distance pt1 pt2))
(setq pt3 (polar pt1 ang (/ dis 2)))
(command "line" pt1 pt2 "")
(command "circle" pt3 10)
))
(princ)
)
gbg
谢谢老顾,回去研究研究,不懂再来问您!