明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1107|回复: 4

[基础] 请高手指教,下面这段lisp怎样才能实现对PLINE线也适用??

[复制链接]
发表于 2013-4-9 23:38 | 显示全部楼层 |阅读模式
请教下面这段lisp只能针对普通的线修改线型,譬如对封闭矩形就没法实现
怎么才能实现对多段线即PLINE也适用,请高手指教
;;;改线型为PHANTOM2
(defun c:222( )
  (setq ss (ssget '((0 . "*line"))))
  (setq ssnum(sslength ss))
  (setq nb 0)
  (while (< nb ssnum)
  (progn (setq en (entget (ssname ss nb)))
  (setq oli (assoc 6 en))
  (setq nli (cons 6 "PHANTOM2"))
  (if (= oli nil)
  (setq en (cons nli en))
    (setq en (subst nli oli en))
    );endif
  (entmod en)
     (setq nb (1+ nb))
)
  ))

 楼主| 发表于 2013-4-10 00:02 | 显示全部楼层
呜呼  都没人理偶 啊,只好自己顶一下,估计是太晚了,大侠们都休息了。
发表于 2013-4-10 10:12 | 显示全部楼层
本帖最后由 llsheng_73 于 2013-4-10 10:15 编辑

看了一下,好象你这不是对pline无效,而是对线型随层的无效吧,因为当线型为随层的时候,oli为NIL
因为组码6  线型名(如果不是“随层”,则出现)
你在IF里边对(= OLI NIL)为真时的处理是 (setq en (cons nli en)),nli在前边是 (setq nli (cons 6 "PHANTOM2")),这样一来EN不再是一个合法的图元数据了,后边的ENTMOD会无效
你把 (setq en (cons nli en))改成(setq en(append en(list nli)))试下?
发表于 2013-4-10 12:28 | 显示全部楼层
用CHPROP就可以了,即使很多人覺得沒水平,別在意
 楼主| 发表于 2013-4-29 00:15 | 显示全部楼层
非常感谢llsheng_73,我试了一下确实可以,解决了这个问题,好开心。在此表示感谢!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-28 07:40 , Processed in 0.263698 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表