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

受教了,学习中
页: 1 [2] 3
查看完整版本: 本人萌新)请教一个lisp思路 选定的矩形里面怎样画它的对角线?