求一个选择特定图块的程序
最近发现一个很严重的问题:平时做块的时候,如果当前图层是不打印层,那么做出来的图块将无法打印出来!由于经常做块,而且当前图层为不打印层的时候比较多,很容易将块做成“不打印块”,我想要解决这个问题,除了平时小心之外,是不是能够做一个过滤选择器,选择出图中所有在不打印图层上的块,然后将它们亮显并统计个数?本帖最后由 llsheng_73 于 2015-8-17 18:13 编辑
(Defun STB(TAB / snl sll)
(SetQ snl '()sll (TblNext TAB T))
(While (SetQ snl (Cons (Cdr (Assoc 2 sll)) snl)sll (TblNext TAB nil)))snl)
(defun c:tt(/ ss)
(sssetfirst'nil(setq ss(ssget"X"(list'(0 . "INSERT")(cons 8(apply 'strcat(vl-remove'nil(mapcar'(lambda(x)(if(equal(assoc 290(entget(TBLOBJNAME"layer"x)))'(290 . 0))(strcat","x)))(stb"layer")))))))));;把非打印层上的图块选中以便程序结束后进行自己想要的操作
(sslength ss);;图块个数
)
关键是选出来你想怎么办,是不要把它们改到可打印层 这个不难吧,找出不打印层,和该层上块的码组,过滤即可 本帖最后由 theisland 于 2014-4-19 11:41 编辑
是的,是想改到打印层(图层名为“可打印”)上去,刚试了下,统计数量好像有点问题:结果总是1(不管有没有不打印块,不管不打印块有几个,结果都是1) 本帖最后由 llsheng_73 于 2014-4-19 15:04 编辑
theisland 发表于 2014-4-19 11:40 static/image/common/back.gif
是的,是想改到打印层(图层名为“可打印”)上去,刚试了下,统计数量好像有点问题:结果总是1(不管 ...
我根本没有给你统计数量,只是把它们亮显了。。。
再说你要把他们改到可打印层去那关心它的个数做什么?
由于不明白你后续要进行什么样的操作,所以只是把它们亮显出来而没有进行任何处理
原来的改了一下,程序结束时会统计数量,并且非打印层上的图块处于被选中状态,可以进行人工处理
但人工处理它们有点麻烦的是人工不一定清楚哪些是可打印图层,因此还是应该让程序去修改它们 llsheng_73 发表于 2014-4-19 14:46 static/image/common/back.gif
我根本没有给你统计数量,只是把它们亮显了。。。
再说你要把他们改到可打印层去那关心它的个数做什么? ...
你好!CAD提示这个:错误: 参数太少
还有您说的“把非打印层上的图块选中以便程序结束后进行自己想要的操作”是不是需要我自己填程序呢?我不会这个,请您好人做到底啊,把选中的图块所在图层变到名为“可打印”的图层上就行了 theisland 发表于 2014-4-19 20:37 static/image/common/back.gif
你好!CAD提示这个:错误: 参数太少
还有您说的“把非打印层上的图块选中以便程序结束后进行自己想要的 ...
那这样的话你根本不需要管它的个数,因此你可以把最后一句删掉
CAD提示这个:错误: 参数太少
是因为复制的时候,语句前边的空格等字符被弄成了别的,不是程序问题
也不需要再加语句了,你可以输入命令后,它会把非打印层上的图块选出来,跟你不用程序一个个去选择它们的结果是一样的,所以你可以自己把它们改到“可打印”层上去
本帖最后由 fire9527 于 2014-4-19 22:04 编辑
llsheng_73 发表于 2014-4-19 21:17 static/image/common/back.gif
那这样的话你根本不需要管它的个数,因此你可以把最后一句删掉
CAD提示这个:错误: 参数太少
复制问题怎么解决呢?还在提示错误: 参数太少
fire9527 发表于 2014-4-19 22:03 static/image/common/back.gif
复制问题怎么解决呢?还在提示错误: 参数太少
晕,不会把乱七八糟的去掉么
或者普通浏览再进行复制 谢谢分享,学习一下
页:
[1]