多if#039;s,但只有2个
你好我需要一些关于我正在处理的lisp的帮助。这是一个巨大的lisp的一部分,我有并希望改进和添加更多的步骤,以减少我的工作。
首先,我有3个if在下面
1) 第一个删除中心标记,效果良好
2) 第二种方法寻找多行文字,其样式为SLDTEXTSTYLE0,高度为0.25。这不起作用。
3) 第三个搜索截面箭头,它是实体,只要位于if#2,就可以正常工作。如果启用if#3,则它不工作。我觉得这很奇怪。此外,整个lisp在此点停止,层关闭根本不处理。
4) 另外,我想要一个if#4,它查找线宽为0.3mm的线对象。我试过使用位代码370,但它不起作用。不知道该怎么做。
当我看到所有这些时,可能所有这些都可以组合在1 If语句中,而不是全部3或4。请帮忙。
(Cond
( (and (= apl "G")
(= iu 1)
)
(progn
(blkrm)
(CNVRT)
(if (setq CENTMARK (ssget "_x" '((0 . "INSERT")(2 . "SW_CENTERMARKS*"))))
(command "erase" CENTMARK "")
); end if
(if (setq TXTSEC (ssget "_x" '((0 . "MTEXT")
(7 . "SLDTEXTSTYLE0")
(40 . ".25"))))
(command "erase" TXTSEC "")
); end if
(if (setq SECTARW (ssget "_x" '((0 . "SOLID"))))
(command "erase" SECTARW "")
); end if
(command "_.-layer" "of" "DIM1,NOTATION,CENTER,PHANTOM" "")
);end progn
); end cond
您可以寻找组合过滤器:
(ssget "_X" '((-4 . "<OR")
(-4 . "<AND")
(0 . "INSERT")
(2 . "SW_CENTERMARKS*")
(-4 . "AND>")
(-4 . "<AND")
(0 . "MTEXT")
(7 . "SLDTEXTSTYLE0")
(-4 . "AND>")
(0 . "SOLID")
(-4 . "<OR")
)) 此外,(40。“0.25”)是否正确过滤具有高度的多行文字。25?
如何过滤线宽为0.30mm的线? 我真的需要这个工作。有人能回答我的问题吗? Soory Shailujp,我确实错过了你的回复。
对于多行文字高度,请注意,它必须作为实值提供,而不是作为字符串提供:
(if
(setq sect
(ssget "_X" '(
(-4 . "<OR")
(-4 . "<AND")
(0 . "INSERT")
(2 . "SW_CENTERMARKS*")
(-4 . "AND>")
(-4 . "<AND")
(0 . "MTEXT")
(7 . "SLDTEXTSTYLE0")
(40 . "0.25")
(-4 . "AND>")
(-4 . "<AND")
(0 . "SOLID")
(-4 . "AND>")
(-4 . "OR>")
)
)
)
(command "erase" sect "")
); end if
当谈到实体时,是那些三维实体实体(然后使用3DSOLID作为实体名称)还是与图案填充类似的实体(由solid命令创建)? MSasu成功了,
它删除了文本。
固体是箭头。
最后一件事,如何通过0.3mm的线宽进行过滤?
这是我正在做的事情的前后。
第一个图像是我的原始绘图,第二个是我的例程对其所做的操作。外面剩下的两行是我试图通过lisp删除的。
试试这个过滤器。
(40 . 0.25)
这奏效了。
谢谢MSasu和Tharwat的帮助。
干杯 很高兴听到。 很高兴你找到了解决方案,但从你的图片来看。。。。。。你就不能按图层名称过滤吗?
页:
[1]
2