使用Autolisp删除Autocad指定图层内的实体

  次阅读 作者:智能小宝 来源:互联网 2016-01-19 12:44 我要评论(0)

如何用autolisp获取cad图形文件中直线和多义线的图层名?

用(cdr(assoc 8 (entget (car (entsel)))))就可以得到直线和其他实体的图层名。

想要的程序是:点取一条直线,得到该直线的层名,然后将该层所有直线的线宽改为某个值。我现在想要的是 点取直线,获得层名 这一步。

(setq lyname (cdr(assoc 8 (entget (car (entsel)))))) that's it!, What else d

(setq lyname (cdr(assoc 8 (entget (car (entsel)))))) that's it!, What else do you want?

绘图过程中经常会碰到这种情况:某个图层已被 清空 ,但却无法将其删除,究竟是什么回事?其实,图层中还可能含有不可见的实体。例如,使用 mtext命令输入一连串空格,即产生一个不可见实体。在实际绘图中,我们当然不会特意去建立这样的实体,但无意的操作或者ACAD应用程序的运行都有可 能产生 副产品 ,要删除这些不可见实体,如果单靠现成的ACAD命令是难以完成的,必须借助程序来进行,下面的程序能够删除指定图层内的一切简单实体, 从而能让用户进一步使用layer或purge命令来删除图层。

需要注意的是,个别图层即便使用下列程序处理后,仍可能关联其他对象(注意,对象的概念较实体广得多,包括标注样式等非实体对象)而不能被删 除,除非指定的图层不再关联图块或者不含有任何用户定义的标注样式。这些图层是:

1.被块定义参照的图层,如a层含有一个图块,块内某条线属于b层;

2.名字为 DEFPOINTS 的特殊图层(为某个标注样式所用)。

程序清单如下:

(defun c:de(/ et ln lay_name ss li)

(princ "删除指定图层内的实体n")

(setq li (entsel"n请选择指定图层内的任何一个实体<回车直接输入层名>:"))

(if li

(progn ;选择一个实体

(setq et (entget(nth 0 li)))

(setq lay_name (cdr (assoc 8 et)))

)

(progn ;直接输入层名,理想的办法是采用列表框选择,大家可以自己试试。

(princ"输入层名:")

(while (= ln nil)

(setq lay_name (getstring))

(setq ln (cdr (assoc 2 (tblnext "layer" t))))

(while (and ln (/= ln "%") )

(if (/= ln lay_name)

(setq ln (cdr (assoc 2 (tblnext "layer"))))

(setq ln "%")

;如指定的图层名已存在,则设 % 标志

)

)

(if (/= ln "%") ;错误处理

(princ"指定的图层不存在,请重新输入:")

)

)

)

)

(setq ss (ssget "X"(list(cons 8 lay_name)))) ;构造选择集

(COMMAND "-layer" "u" lay_name "") ;图层解锁

(COMMAND "ERASE" ss "") ;清除所有实体

(princ "n清除完毕!")

(princ)

)

;程序结束

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...