功能顺序?
我的Lisp程序我基本上想把图层改成“dimension”图层,然后画尺寸。但是当我绘制维度时,它们并没有绘制在维度层上。
为什么图层在进入第二个命令“dimlinear”之前不会更改? 你为什么不使用
(setvar "CLAYER" "dimension")
而不是命令调用? 如果不存在该层?
guitarguy1685,有许多创建层的方法,例如entmakex或vla add。但是“万物皆有其时”。
在你的情况下,我会使用
如果层不存在,他将创建它并激活,如果层已经存在,则将激活它
我在谈论他的问题(红色代码);这种情况(层不可用)已包含在代码中。但是,可以肯定的是,我在帖子中对此不够清楚。 实际上,要确保设置到给定的层,需要很好的代码:
(defun SetLayer (name / ldef flag)
(command "_.LAYER")
(if (not (tblsearch "LAYER" name))
(command "_Make" name)
(progn
(setq ldef (tblsearch "LAYER" name)
flag (cdr (assoc 70 ldef)))
(and (= (logand flag1)1)
(command "_Thaw" name))
(and (minusp (cdr (assoc 62 ldef)))
(command "_On" name))
(and (= (logand flag4)4)
(command "_Unlock" name))
(and (= (logand flag 16) 16)
(princ "\nCannot Set To XRef Dependent Layer")
(quit))
(command "_Set" name)))
(command "")
name)
-大卫 嗯,我不太明白“logand”函数的作用。AutoLisp帮助文件读取
我不理解“逻辑位的结果”。你能解释一下吗?
顺便说一句,我喜欢学习/使用新的autolisp函数 不管怎样,我找到了另一条线索的解释。我仍然不明白,但我会在那里回答。 快速总结,
位码可以使用加法进行组合,logand/LOGOR可以用于“分解”这些组合。
例如,假设您有一个位代码:
logand将使用“AND”逻辑语句返回位代码,即如果两个代码都包含它:
logior将使用“Inclusive OR”逻辑语句返回位代码,即包含在一个或另一个或两者中的位:
除此之外,我们还可以使用“异或”逻辑语句创建logxor函数,即一个或另一个中包含的位,但不能同时包含两个。
示例:
你可以用二进制来考虑其中的每一个,其中1=true,0=false,因此:
(logand (+ 245)
Decimal Equivalent 32 168421
------------------------------------------------
101101 (45)
001010 (10)
logand -----------------------------------------
001000 (
------------------------------------------------
10
希望这有帮助! 这很有帮助。有趣的是,我问了一个问题,却偏离了另一个Lisp冒险,哈哈。好吧,让我回到我真正想知道的。在我最初发布的代码中
似乎该层应该设置在线路之后,但它没有生效。为什么图层在dimlinear命令之前不会更改?
有趣的是,如果插入2次暂停
然后改变层。这是怎么回事? 回答你的问题。它似乎在Acad 2010上流汗。
但正如其他人建议的那样,试着做一些事情,比如
14
花
页:
[1]
2