[原创]动态矩形
<p>小程序,简单的动态</p> <p>很不错,支持源码</p><p>修改一下,按50的模数,便于画结构构件截面</p><p><font face="Courier New" color="#800080">;;luyu9635动态矩形<br/></font></p><p>(defun c:rg (/ gr grr p1 p2 p3 p4 po pt px pxy py text textent x z)<br/> (setq pt (getpoint "\n指定第一个角点:") z t)<br/> (prompt "\n指定另一个角点:")<br/> (while z<br/> (initget 128)<br/> (setq grr (grread t 4 1));请求输入<br/> (setq gr (car grr) po (cadr grr))<br/> (cond<br/> ((= gr 5);移动时<br/> (setq px (* 50 (fix (/ (- (car po) (car pt)) 50)))<br/> py (* 50 (fix (/ (- (cadr po) (cadr pt)) 50)))<br/> pxy (list (abs px) (abs py)))<br/> (setq p1 (list (car pt) (cadr pt))<br/> p2 (list (car pt) (+ py (cadr pt)))<br/> p3 (list (+ px (car pt)) (+ py (cadr pt)))<br/> p4 (list (+ px (car pt)) (cadr pt)))<br/> (redraw)<br/> (grvecs (list 7 p1 p2 7 p2 p3 7 p3 p4 7 p4 p1))<br/> (if text<br/> (progn<br/> (setq textent (subst (cons 1 (vl-princ-to-string pxy)) (assoc 1 textent) textent))<br/> (setq textent (subst (cons 10 po) (assoc 10 textent) textent))<br/> (entmod textent)<br/> )<br/> (progn<br/> (entmake (list '(0 . "TEXT") (cons 1 (vl-princ-to-string pxy)) (cons 10 po) (cons 40 100)(cons 41 0.7) (cons 50 0)(cons 62 2)))<br/> (setq text (entlast)<br/> textent (entget text))<br/> )<br/> )<br/> )<br/> ((or (= gr 3);左击<br/> (equal grr '(2 32));空格<br/> (equal grr '(2 13));回车<br/> (equal grr' (11 0)));右击<br/> (setq z nil)<br/> )<br/> )<br/> )<br/> (redraw)<br/> (entmake (append' ((0 . "lwpolyline") (100 . "AcDbEntity") (100 . "AcDbPolyline") (90 . 4) (70 . 1) ) <br/> (mapcar '(lambda (x) (cons 10 x))(list p1 p2 p3 p4))))<br/> (if text (entdel text)<br/> )<br/> (princ)<br/>)</p> 对啊 需要能输入的吗:(不然只是好看{:1_1:} <p>谢谢楼主,能否再完善一下:</p><p>1,程序按Esc键,文字还是留在屏幕上不消失</p><p>2,小数点位太长,仅保留2位小数如何?</p><p>3,最重要的一点,能否让用户输入长宽就能按用户输入的数据来画矩形的尺寸</p><p>下面是我常用的矩形程序,主要是没有动态显示,每次输数据时看世界cad的自动坐标不好用,所以想用你的程序加入上面3点的效果!</p><p>(defun c:rec ()<br/> (prompt "矩形绘制")<br/> (setq m:err *error* *error* *merr*)<br/> (setvar "cmdecho" 0)<br/> (setq OS (getvar "osmode"))<br/> (while(SETQ PT1(GETPOINT "\n指定起始位置或输入数值/<退出>: "))<br/> (initget 128)<br/> (setq pt2(GETCORNER PT1 "\n对角点位或矩形宽/<退出>:"))<br/> (command "rectang" pt1)<br/> (cond<br/> ((not pt2)(command)(exit))<br/> ((listp pt2)(command pt2))<br/> ((distof pt2) (setvar "osmode" 0)<br/> (command (strcat "@" pt2 "," (rtos(getdist "\n矩形高:")))))<br/> ))<br/>(setvar "osmode" OS)<br/>(setq *error* m:err m:err nil)<br/>(princ)<br/>)</p> <p>不能输入数值,看着怪着好看,不太实用</p> 是啊﹐只是好看不太實用﹐能輸數字就好了 有没有人能将这个程序在原有的基础上加上用户输入长*宽的功能呀 啵浪鼓发表于2009-9-16 18:17:00static/image/common/back.gif是啊﹐只是好看不太實用﹐能輸數字就好了<p>请参照动态拉伸,自己修改一下</p> 高手! 很好啊,学习,学习,在学习!!! luyu9635 发表于 2009-9-23 00:39 static/image/common/back.gif
请参照动态拉伸,自己修改一下
希望楼主能继续完善功能:动态输入矩形宽、高。
页:
[1]
2