3点画矩形的lisp |
您所在的位置:网站首页 › cad对角线画矩形命令 › 3点画矩形的lisp |
展开全部 62616964757a686964616fe59b9ee7ad9431333361323635AutoCAD再绘制一个矩形的话,使用偏移命令【OFFSET】或快捷键命令【O】 如果有很多矩形要进行偏移的话,可以使用编程来实现,选择矩形,输入偏移距离就可以偏移完成。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 (defun C:tes ( / #r1 &k1 &kw1 &ob1 &ob2 dis1 dis2 ent1 pt1 pt2 ss x) (if (null vlax-dump-object) (vl-load-com) );加载vlax函数 (if (and (setq &kw1 (ssget '((0 . "LWPOLYLINE") (70 . 1))));选择封闭多段线 (setq #r1 (getdist "\n请输入偏移距离")) (> #r1 0);距离是正值 ) (progn;;1 (while (setq &k1 (ssname &kw1 0));对象分析 (setq &kw1 (ssdel &k1 &kw1)) (setq ss (mapcar 'cdr (vl-remove-if '(lambda (X) (/= 10 (car x))) (entget &k1))));取得多段线坐标 (if (and (= (length ss) 4);如果是4个点,符合矩形一个条件;进入下一步 (= (distance (car ss) (caddr ss)) (distance (cadr ss) (cadddr ss)));对角线相同 ) (progn;;2 (setq &ob1 (vlax-ename->vla-object &k1)) (vla-GetBoundingBox &ob1 'pt1 'pt2);提取包围框 (setq pt1 (vlax-safearray->list pt1) pt2 (vlax-safearray->list pt2)) (setq pt1 (mapcar '(lambda (x) (* x 0.5)) (mapcar '+ pt1 pt2)));取得矩形中心点 (if (and (setq pt2 (inters (car ss) (caddr ss) (cadr ss) (cadddr ss)));对角线有交点 ( dis1 0) ) (progn;;4 (setq &ob2 (vlax-ename->vla-object ent1)) (setq dis2 (vlax-curve-getDistAtParam &ob2 (vlax-curve-getEndParam &ob2))) (vla-delete &ob2) (if (> dis2 dis1) (vla-offset &ob1 #r1) (vla-offset &ob1 (* #r1 -1)) ) );progn;4 );if;4 );progn;3 );if;3 );progn;2 );if;2 );while );progn;1 );if;1;矩形的特点,对角线相同,4个点,对角线有交点并与中心点重合 (prin1) );;复制到记事本,以【.lsp】为后缀命名,打开AutoCAD,autolisp加载,命令【TES】 追问 请问具体如何偏移呢? 我先画了外面的大矩形, 然后把它偏移缩小成这样 那 再接着怎么用偏移画出那三个相同大小的矩形,化成如问题那样的 已赞过 已踩过 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |