mnmnvmm2 发表于 2017-8-31 14:09:45

本人萌新)请教一个lisp思路 选定的矩形里面怎样画它的对角线?

如何在选定的矩形里面怎样用lisp画它的对角线? 请大神教导:'(

fangmin723 发表于 2017-8-31 16:01:47

本帖最后由 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)
)

669423907 发表于 2018-5-10 22:31:16

qwerqweraaa 发表于 2018-5-10 22:04
目的就是框选所有矩形,批量加对角线,我不知道具体循环代码怎么写, 上面贴的代码是全的,是我从其他lis ...

http://bbs.mjtd.com/thread-99400-1-1.html

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)
)


Andyhon 发表于 2017-8-31 15:37:44

当我是个新手

先去找一个函数能返回四个点
1 3 ; 2 4 对连

or
找一个函数能返回左下右上(1 3)
再配出 (2 4) 两个点

但如果非是坐水平坐向的 此法无效...

mnmnvmm2 发表于 2017-8-31 16:43:08

fangmin723 发表于 2017-8-31 16:01


感谢先生)

mnmnvmm2 发表于 2017-8-31 16:43:51

Andyhon 发表于 2017-8-31 15:37
当我是个新手

先去找一个函数能返回四个点


感谢提示,我照着你的提示去尝试看看)

fangmin723 发表于 2017-8-31 16:46:33

mnmnvmm2 发表于 2017-8-31 16:43
感谢提示,我照着你的提示去尝试看看)

之前忘了声明局部变量了,我加进去了!

yoyoho 发表于 2017-9-1 07:54:54

感谢分享程序!!!!

fangmin723 发表于 2017-9-1 08:15:02

yoyoho 发表于 2017-9-1 07:54
感谢分享程序!!!!

不谢!!!!:D

qwerqweraaa 发表于 2018-5-10 09:22:47

fangmin723 发表于 2017-8-31 16:01


大神你好,这个LISP很好用,我想把它变成框选,用(SETQ ENT_SET (SSGET '((-4 . "<AND") (0 . "LWPOLYLINE") (90 . 4) (70 . 1) (-4 . "AND>"))))自动识别,再用循环进行批量操作,由于初次接触,昨天试了一天没成功,能不能麻烦你修改一下,谢谢!

fangmin723 发表于 2018-5-10 12:32:10

qwerqweraaa 发表于 2018-5-10 09:22
大神你好,这个LISP很好用,我想把它变成框选,用(SETQ ENT_SET (SSGET '((-4 . ""))))自动识别,再用循 ...

(SETQ ENT_SET (SSGET (list '(0 . "LWPOLYLINE") '(90 . 4) '(70 . 1))))
页: [1] 2 3
查看完整版本: 本人萌新)请教一个lisp思路 选定的矩形里面怎样画它的对角线?