本人萌新)请教一个lisp思路 选定的矩形里面怎样画它的对角线?
如何在选定的矩形里面怎样用lisp画它的对角线? 请大神教导:'(本帖最后由 fangmin723 于 2017-8-31 16:44 编辑
(defun c:tt(/ ent entdata ptlst)
(if (and (= "LWPOLYLINE" (cdr (assoc 0 (setq entdata (entget (setq ent (car (entsel)))))))) (= 4 (cdr (assoc 90 entdata))) (= 1 (cdr (assoc 70 entdata))))
(progn
(setq ptlst nil)
(foreach x entdata
(if (= (car x) 10) (setq ptlst (cons (cdr x) ptlst)))
)
(setq ptlst (reverse ptlst))
(entmake (list '(0 . "LINE") (cons 10 (car ptlst)) (cons 11 (caddr ptlst))))
(entmake (list '(0 . "LINE") (cons 10 (cadr ptlst)) (cons 11 (cadddr ptlst))))
)
(alert "选择错误,请选择封闭的四边形!")
)
(prin1)
)
qwerqweraaa 发表于 2018-5-10 22:04
目的就是框选所有矩形,批量加对角线,我不知道具体循环代码怎么写, 上面贴的代码是全的,是我从其他lis ...
http://bbs.mjtd.com/thread-99400-1-1.html qwerqweraaa 发表于 2018-5-10 22:04
目的就是框选所有矩形,批量加对角线,我不知道具体循环代码怎么写, 上面贴的代码是全的,是我从其他lis ...
全,全个鬼啊,你贴的代码,defun都没有!
这个也是我发的
算了,给你把
(defun c:tt1(/ ent ent_get entdata kye n ptlst)
(setq n 0 kye T)
(while key
(if (setq ent_get (ssget (list '(0 . "LWPOLYLINE") '(90 . 4) '(70 . 1))))
(repeat (sslength ent_get)
(setq ptlst nil entdata (entget (ssname ent_get n)))
(foreach x entdata
(if (= (car x) 10) (setq ptlst (cons (cdr x) ptlst)))
)
(setq ptlst (reverse ptlst))
(entmake (list '(0 . "LINE") (cons 10 (car ptlst)) (cons 11 (caddr ptlst))))
(entmake (list '(0 . "LINE") (cons 10 (cadr ptlst)) (cons 11 (cadddr ptlst))))
(setq n (+ n 1))
)
(progn
(setq kye nil)
(alert "选择错误,请选择封闭的四边形!")
)
)
)
(prin1)
)
当我是个新手
先去找一个函数能返回四个点
1 3 ; 2 4 对连
or
找一个函数能返回左下右上(1 3)
再配出 (2 4) 两个点
但如果非是坐水平坐向的 此法无效... fangmin723 发表于 2017-8-31 16:01
感谢先生) Andyhon 发表于 2017-8-31 15:37
当我是个新手
先去找一个函数能返回四个点
感谢提示,我照着你的提示去尝试看看) mnmnvmm2 发表于 2017-8-31 16:43
感谢提示,我照着你的提示去尝试看看)
之前忘了声明局部变量了,我加进去了!
感谢分享程序!!!! yoyoho 发表于 2017-9-1 07:54
感谢分享程序!!!!
不谢!!!!:D fangmin723 发表于 2017-8-31 16:01
大神你好,这个LISP很好用,我想把它变成框选,用(SETQ ENT_SET (SSGET '((-4 . "<AND") (0 . "LWPOLYLINE") (90 . 4) (70 . 1) (-4 . "AND>"))))自动识别,再用循环进行批量操作,由于初次接触,昨天试了一天没成功,能不能麻烦你修改一下,谢谢! qwerqweraaa 发表于 2018-5-10 09:22
大神你好,这个LISP很好用,我想把它变成框选,用(SETQ ENT_SET (SSGET '((-4 . ""))))自动识别,再用循 ...
(SETQ ENT_SET (SSGET (list '(0 . "LWPOLYLINE") '(90 . 4) '(70 . 1))))