qwerqweraaa
发表于 2018-5-10 16:05:57
fangmin723 发表于 2018-5-10 12:32
(SETQ ENT_SET (SSGET (list '(0 . "LWPOLYLINE") '(90 . 4) '(70 . 1))))
我的代码可以实现自动过滤,主要是自己加循环以后有各种错误,由于第一次接触,代码也是拼接的,不知道到底错在哪,代码如下,麻烦大神指正,最好有可以运行的代码可以让我对比学习,感谢!
(setq ent_set (ssget '((-4 . "<AND") (0 . "LWPOLYLINE") (90 . 4) (70 . 1) (-4 . "AND>"))))
(repeat (setq i (sslength ent_set))
(setq pn_ent (ssname ent_set (setq i (1- i)))
(setq entdata (entgetpn_ent))
(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))))
(command ".UNDO" "E") ; 设置UNDO终点
(setq *error* $orr)
(prin1)
)
fangmin723
发表于 2018-5-10 17:08:21
qwerqweraaa 发表于 2018-5-10 16:05
我的代码可以实现自动过滤,主要是自己加循环以后有各种错误,由于第一次接触,代码也是拼接的,不知道到 ...
怎么个循环法啊
fangmin723
发表于 2018-5-10 17:08:37
qwerqweraaa 发表于 2018-5-10 16:05
我的代码可以实现自动过滤,主要是自己加循环以后有各种错误,由于第一次接触,代码也是拼接的,不知道到 ...
还有,把你的代码贴全了
qwerqweraaa
发表于 2018-5-10 22:04:49
fangmin723 发表于 2018-5-10 17:08
还有,把你的代码贴全了
目的就是框选所有矩形,批量加对角线,我不知道具体循环代码怎么写, 上面贴的代码是全的,是我从其他lisp里拼接的,所以看着有问题,不知道怎么改
669423907
发表于 2018-5-10 22:31:16
qwerqweraaa 发表于 2018-5-10 22:04
目的就是框选所有矩形,批量加对角线,我不知道具体循环代码怎么写, 上面贴的代码是全的,是我从其他lis ...
http://bbs.mjtd.com/thread-99400-1-1.html
qwerqweraaa
发表于 2018-5-10 23:33:35
669423907 发表于 2018-5-10 22:31
http://bbs.mjtd.com/thread-99400-1-1.html
已成功实现目标功能,感谢两位!
顺便问一下,代码中reverse原因是什么?
fangmin723
发表于 2018-5-11 10:20:12
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)
)
qwerqweraaa
发表于 2018-5-11 10:32:50
fangmin723 发表于 2018-5-11 10:20
全,全个鬼啊,你贴的代码,defun都没有!
这个也是我发的
感谢感谢,请教一下ptlst为什么要reverse?
fangmin723
发表于 2018-5-11 15:59:21
本帖最后由 fangmin723 于 2018-5-11 16:01 编辑
qwerqweraaa 发表于 2018-5-11 10:32
感谢感谢,请教一下ptlst为什么要reverse?
用不用都可以,自己多尝试,我有强迫症
25705070
发表于 2018-5-12 00:49:53
受教了,学习中