guitarguy1685 发表于 2022-7-6 11:49:38

功能顺序?

我的Lisp程序
 
我基本上想把图层改成“dimension”图层,然后画尺寸。但是当我绘制维度时,它们并没有绘制在维度层上。
 
为什么图层在进入第二个命令“dimlinear”之前不会更改?

MSasu 发表于 2022-7-6 11:55:12

你为什么不使用
(setvar "CLAYER" "dimension")
而不是命令调用?

BearDyugin 发表于 2022-7-6 11:58:08

如果不存在该层?
 
guitarguy1685,有许多创建层的方法,例如entmakex或vla add。但是“万物皆有其时”。
在你的情况下,我会使用
如果层不存在,他将创建它并激活,如果层已经存在,则将激活它

MSasu 发表于 2022-7-6 12:02:54

 
我在谈论他的问题(红色代码);这种情况(层不可用)已包含在代码中。但是,可以肯定的是,我在帖子中对此不够清楚。

David Bethel 发表于 2022-7-6 12:06:41

实际上,要确保设置到给定的层,需要很好的代码:

(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)

 
-大卫

guitarguy1685 发表于 2022-7-6 12:08:36

嗯,我不太明白“logand”函数的作用。AutoLisp帮助文件读取
 
我不理解“逻辑位的结果”。你能解释一下吗? 
顺便说一句,我喜欢学习/使用新的autolisp函数

guitarguy1685 发表于 2022-7-6 12:12:51

不管怎样,我找到了另一条线索的解释。我仍然不明白,但我会在那里回答。

Lee Mac 发表于 2022-7-6 12:14:36

快速总结,
 
位码可以使用加法进行组合,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
希望这有帮助!

guitarguy1685 发表于 2022-7-6 12:18:21

这很有帮助。有趣的是,我问了一个问题,却偏离了另一个Lisp冒险,哈哈。好吧,让我回到我真正想知道的。在我最初发布的代码中
 
似乎该层应该设置在线路之后,但它没有生效。为什么图层在dimlinear命令之前不会更改?
 
有趣的是,如果插入2次暂停
 
然后改变层。这是怎么回事?

flowerrobot 发表于 2022-7-6 12:23:28

回答你的问题。它似乎在Acad 2010上流汗。
 
但正如其他人建议的那样,试着做一些事情,比如
14
页: [1] 2
查看完整版本: 功能顺序?