仅当S
嘿伙计们,我有一个例程,我计划用它作为加速绘图的工具。它基本上复制了修订块,并将旧修订块放在另一个块中(因此不能由另一个“块属性更新”例程编辑)。
该例程依赖于图形中只有一个修订块实例,因此我想将该条件添加到代码中。
所以我的代码是:
(defun c:REVUP ( / ss NBASE ruPt1 )
(setq ss (ssget "all" '((0 . "INSERT") (66 . 1) (2 . "*REVISIONS"))))
(if (= (sslength ss) 1)
(progn
(SETQ NBASE (POLAR '(0 0 0) (* PI (/ 90 180.0)) (* (GETVAR "DIMSCALE") 5)))
(COMMAND "COPY" SS "" "0,0,0" NBASE)
(setq ruPt1 '( 0 0 0))
(command "copybase" RUpt1 SS "" "pasteblock" RUpt1 "erase" "p" "")
)
)
(princ)
)
此代码似乎不起作用(至少在IF和PROGN部分)。即使存在多个修订块实例,该例程也将运行。
我只是想知道是否有人能告诉我哪里出了错。
非常感谢您的帮助。 尝试两件事
use "X" instead of "all"
(ssget "all"
(setq obj (ssname ss 0 ))
COMMAND "COPY" obj
嗨,比格尔,
谢谢你的回复。我对SSGET“X”有点问题,似乎当旧的修订块放在块中时(使用“pasteblock”命令),SSGET“X”仍然能够检测到它们。当我切换到SSGET“all”时,我知道SSGET无法再检测块中的块。这是正确的吗? 再次阅读您的帖子,为什么不创建一个包含多个rev行的块,然后检查条目是否为空,如果不为空,则查找空白并将值放入下一行?有一种计算属性的方法,而不是使用标记,如果你说每行有3个条目,那么第4个值将是第2行第7行10等等,我在VBA中的某个地方有一个例子,这很容易,它只是从attrib(0)attrib(1)attrib(2)开始,直到用完为止。5行属性(14) 不幸的是,我们设置标题栏的方式不起作用。我们将修订块堆叠在标题栏上方。因此,如果只有一个修订,则只有一个修订块。希望这是有道理的。
我读了一些关于SSLENGTH轰炸的内容,如果选择集中没有任何内容。那么有没有可能做一些像。。。
如果ss为空或不存在,则执行此操作。
如果ss的SSLENGTH为1,则执行此操作。
如果ss的SSLENGTH大于1,则执行此操作。
对不起,我无法输入代码,我在手机上。 如果超过1个
检查最后一个条目数字/字母的属性值
或
检查块相对于标题栏的“位置”,以确定最新和最大
如果正确使用,Sslength不会爆炸
条件演示
(defun c:demo ( / number)
(setq number (getint "\nEnter Number: "))
(cond
((null number)(princ "\nNo value for number"))
((minusp number)(princ "\nNegative number?, Why.. oh why..?"))
((= number 1)(princ "\nThere could be only one"))
( T (princ "\nNumber is more than 1, I'm doing this..")))
(princ)
) 你好,pBe,
非常感谢您的回复。对于无法获得的选择集,“(null number)”代码是否有效?在这种情况下,我遇到的问题是图形中不存在特定名称的块,并且由于选择集过滤器,无法创建任何选择集。 Ps,很抱歉我不能测试,因为我不在电脑旁。
再次感谢。
对无选择意味着无-->(空ss) 啊,太酷了。非常感谢pBe。我会把代码修好,明天早上再测试。
再次感谢你们的帮助,我真的很感激。
页:
[1]
2