块属性
大家好,我真的对下面的内容感到困惑。
我从网上的某个地方得到了这个代码。这将遍历属性并提取标记为“ROOM\u NAME”的属性
(while
(not
(eq "SEQEND" (dxf 0 (setq ent (entnext ent))))
)
(if
(= (dxf 2 ent) "ROOM_NAME")
(setq RmName (dxf 1 ent))
);If
);While
好现在
[列表=1]
[*]while在这里检查的条件是什么?
[*]那是什么“Sequend”?
[*]SEQEND后面以“0”(零)作为参数的“dxf”函数是什么?
[/列表]
有人能帮忙吗? 在属性块上第一次运行时
(dxf 0(setq ent(entnext ent)),这也意味着
(cdr(assoc 0(entget(setq ent(entnext ent)Ю)Ю)Ю)
结果将是“ATTRIB”,其中要求结果等于“sequend”的条件,在这种情况下为零(NOT=NOT True)
在随后的运行中,最终它将点击“sequend”,使语句成为真实
(NOT=NOT True)=True,使其为零,然后终止条件
序列结束-->
对于属性:具有属性的插入实体的属性实体(属性类型名称)的结尾
对于多段线:标记多段线的顶点结束(顶点类型名称)
如果我没弄错的话
(defun dxf (num ent)
(cdr (assoc num(entget ent)))
)
这也可能有助于:
http://www.cadtutor.net/forum/showthread.php?48577-获取特定属性的值&p=330778#post330778 非常感谢pBe。。。!!
我从上面的链接得到这个;
(if
(and
(setq bEnt (car (entsel "\nSelect Block: ")))
(eq "INSERT" (cdr (assoc 0 (entget bEnt))))
(= 1 (cdr (assoc 66 (entget bEnt))))
)
我对“和”有点困惑。Autocad help对此没有给出很好的解释。你能告诉我“和”是怎么工作的吗? 是的。。。你有一个很好的资源在那里的链接,你分享了什么。。。非常棒的帖子,一步一步地进行全面的解释。谢谢李。。。。!! AND函数将继续计算传递给它的表达式,直到其中一个:表达式返回nil,在这种情况下,AND返回nil;或者,没有更多要计算的表达式,在这种情况下,AND返回T,因为所有计算的表达式都必须返回非nil值。
通过这种方式,AND函数返回正在计算的表达式的逻辑AND,即:
<expr1> AND <expr2> AND <expr3> ... AND ... <exprN>
如果所有表达式,…,则AND函数将仅返回T,。。。,返回了一个非nil值[请注意,表达式不需要显式返回t,而是任何非nil的值。因此,1.2的返回值为非nil,或“ABC”]。
其与IF语句的结合使用可按以下方式阅读:
IF <expr1> AND <expr2> AND <expr3> ... AND ... <exprN>
THEN
ELSE
i、 e.所有表达式,。。。,。必须为AND函数返回一个非nil值,以返回T,从而返回要计算的IF语句的“THEN”表达式。
谢谢harilalmn,很高兴你能理解我的解释
李,你真是太好了。。。!!现在我对事情有了很好的了解。。。我开始学习Lisp程序的老鼠在网上挑选,只是在基本水平。事实上,我很想通过这种方式从你那里学到更多。你对每个帖子的回复似乎都很容易理解。非常感谢您的时间和努力。。我亲爱的朋友,我更想烦你。。。。!!
谢谢harilalmn
我尽我所能组织我的帖子,尽可能清楚地解释事情(如果我有时间的话),所以我很高兴我的解释能对你的学习有益。
李
页:
[1]
2