SunnyTurtle 发表于 2022-7-6 08:50:21

实用绘图中的冻结

嗨,我想有一个Lisp程序,将冻结在绘图面糊层面糊,但我不希望它做任何其他地方。即使我用Lisp程序
这是到目前为止我得到的
(setq dn (getvar 'DWGNAME))
(if (= dn "batters.dwg")
(command "-layers" "F" "BATTERS")
);if

这行不通我做错了什么。

paulmcz 发表于 2022-7-6 08:56:28

(命令“-layer”..not“-layers”

alanjt 发表于 2022-7-6 09:00:50

命令的使用将比ent*或vla慢,但这已经足够了。
对于命令的使用,我要做的是。。。
 
(if (and (eq (strcase (getvar 'DWGNAME)) "BATTERS.DWG") ;capitalize to ignore case
      (tblsearch "LAYER" "BATTERS") ;check if layer exists (not really necessary)
   )
(if (eq (strcase (getvar 'CLAYER)) "BATTERS") ;check if current layer is "BATTERS"
   (command "_.-layer" "_T" "0" "_S" "0" "_F" "BATTERS" "") ; if so, thaw/set 0 as current and freeze layer
   (command "_.-layer" "_F" "BATTERS" "") ; freeze layer
)
)

Tharwat 发表于 2022-7-6 09:04:18

代码,而不是命令调用。
 

(if (and (eq (strcase (getvar 'DWGNAME)) "BATTERS.DWG")
      (tblsearch "LAYER" "BATTERS")
      )
(progn
   (setq l (entget (tblobjname "LAYER" "BATTERS")))
   (entmod (subst (cons 70 1) (assoc 70 l) l))
   )
)

 
塔瓦特

alanjt 发表于 2022-7-6 09:06:12

我希望图层没有被锁定、处于当前状态等。阅读dxf 70中存储的图层附加属性可能会对您有所帮助。

Lee Mac 发表于 2022-7-6 09:11:35

 
1+
 
阅读logand/logior/boole等函数的使用。
 
 

Tharwat 发表于 2022-7-6 09:14:23

 
 
这是二合一
 

(if (and (eq (strcase (getvar 'DWGNAME)) "BATTERS.DWG")
      (tblsearch "LAYER" "BATTERS")
   )
(progn
   (cond ((eq (strcase (getvar 'clayer)) "BATTERS")
          (setvar 'clayer "0")
         )
   )
   (setq l (entget (tblobjname "LAYER" "BATTERS")))
   (if (eq (logand 4 (cdr (assoc 70 l))) 4)
   (entmod (subst (cons 70 0) (assoc 70 l) l))
   )
   (entmod (subst (cons 70 1) (assoc 70 l) l))
)
)

alanjt 发表于 2022-7-6 09:17:32

 
我放弃了。我不知道为什么一开始就觉得有必要把这个线程复杂化。

Lee Mac 发表于 2022-7-6 09:21:52

 
如果层在新视口中冻结,该怎么办?还是依赖外部参照?或者,如果设置了任何其他70位组码?

Tharwat 发表于 2022-7-6 09:24:34

 
你不是所有这些步骤的第一顾问吗?
页: [1] 2
查看完整版本: 实用绘图中的冻结