![]() |
【转帖】lsp程序怎么实现预览所要画的图形
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 谢谢老顾,回去研究研究,不懂再来问您! |
所有的时间均为北京时间。 现在的时间是 03:18 PM. |