ysq101 发表于 2014-4-13 00:03:49

找到最少entmake关键元素 作者:不死猫

(defun c:tt( / del_ent ele ent i must new_ent)
(setq ent (entget (car (entsel "\n请选择一个图元"))));得到组码
(setq i 0 must '());初始化
(repeat (length ent)
    (setq del_ent (vl-remove (nth i ent) ent));测试删除   
    (setq new_ent (entmake del_ent));测试生成
    (if (= 10 (car (nth i ent)))
      (progn
      (setq must (append must (list (nth i ent))))
      (if new_ent
          (entdel (entlast))
      )
      )
      (if new_ent;如果生成新图元则删除否则认为该元素为关键元素
      (entdel (entlast))
      (setq must (append must (list (nth i ent))))
      )
    )   
    (setq i (1+ i))
);end repeat

(cond
    ((= "LWPOLYLINE" (cdr (assoc 0 ent)))
      (setq must (append must (list (assoc 90 ent))))
    )
    ((= "SPLINE" (cdr (assoc 0 ent)))
      (setq must (append must (list (assoc 74 ent))))
      (foreach ele ent
      (if (= 11 (car ele))
          (setq must (append must (list ele)))
      )
      )
    )
    ((= "DIMENSION" (cdr (assoc 0 ent)))
      (foreach ele ent
      (if (or (= 11 (car ele))
            (= 21 (car ele))
            (= 31 (car ele))
            (= 70 (car ele))
            (= 71 (car ele))
            (= 1 (car ele))
            (= 3 (car ele))
          )
          (setq must (append must (list ele)))
      )
      )
    )
)
(print must)
(princ)
)这个程序真心好用..不敢独享...
分享给需要的同学,,,,好学的同学
感谢不死猫

重慶崽兒 发表于 2014-4-13 00:40:51

哦哦,是猫老师视频里的那个程序吧,但感觉还是不完全,很多图元还是需要自己去测试!

ysq101 发表于 2014-4-13 00:47:29

重慶崽兒 发表于 2014-4-13 00:40 static/image/common/back.gif
哦哦,是猫老师视频里的那个程序吧,但感觉还是不完全,很多图元还是需要自己去测试!

正是那个程序    这

菜卷鱼 发表于 2014-4-14 12:23:25

对于属性块的,这程序没什么用

xiaomm250 发表于 2014-4-14 12:30:21

这个还不如自己穷举一个一个弄呢

张大锤 发表于 2018-6-26 08:19:01

猫老师的教程我有看过 可能我刚看一点

张大锤 发表于 2018-6-26 11:07:16

为什么我用点击一根线 或块没有反映

我尝试的解读了一下
   (setq del_ent (vl-remove (nth i ent) ent));测试删除   
    (setq new_ent (entmake del_ent));测试生成
其实到这里 就可以得到 要创建的所有了 对吗?

ysq101 发表于 2018-6-28 00:05:38

张大锤 发表于 2018-6-26 11:07
为什么我用点击一根线 或块没有反映

我尝试的解读了一下


我现在也不会玩LISP了...
自己需要的常用LISP写完了...也就丢光了

对不起大佬的载歌载培

张大锤 发表于 2018-6-28 09:28:14

ysq101 发表于 2018-6-28 00:05
我现在也不会玩LISP了...
自己需要的常用LISP写完了...也就丢光了



没事已经解决了

(if new_ent;如果生成新图元则删除否则认为该元素为关键元素

这里; 有些问题 我前面已经加了空格 但是这句话 被当做;处理了 导致少句if 正套垮掉
后来我删掉就好了
页: [1]
查看完整版本: 找到最少entmake关键元素 作者:不死猫