autolisp 发表于 2022-7-6 09:45:22

创建图层的最佳方式是什么

尊敬的各位
Plz建议哪种方法是在lisp内创建层的最佳方法
第一
(setq oldlayer (getvar "CLAYER"))
   (if (tblsearch "LAYER" "Dr")
(setvar "CLAYER" "Dr")
(command ".LAYER" "M" "Dr" "C" "6" "" "")
   )
(setvar "CLAYER" oldlayer)
 
第二
(if (not (tblsearch "layer" "dr"))
(progn(command ".LAYER" "M" "dr" "C" "50" "" "")))

Tharwat 发表于 2022-7-6 09:59:27

我想这是最好的。。
 

(if (not (tblsearch "LAYER" "Dr"))
(entmake (list (cons 0 "LAYER")
                (cons 100 "AcDbSymbolTableRecord")
                (cons 100 "AcDbLayerTableRecord")
                (cons 2 "Dr")
                (cons 70 0)
                (cons 62 6)
                           ))
)

 
塔瓦特

autolisp 发表于 2022-7-6 10:00:38

尊敬的先生:
thx建议

Tharwat 发表于 2022-7-6 10:10:41

 
随时欢迎你。
塔瓦特

David Bethel 发表于 2022-7-6 10:16:13

如果您真的想将保险设置为一个层:

;++++++++++++ Make Layer Current +++++++++++++++++++++++++++++++++
(defun SetLayer (name / ldef flag)
(cond ((or (not name)
            (not (snvalid name)))
      (princ "\nBad Aurgment Passed To SetLayer - ")
      (prin1 name)
      (exit)))
(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)

 
-大卫

BlackBox 发表于 2022-7-6 10:24:30

以大卫的例子为基础。。。这使用ActiveX:
 

(defun SetLayer2(layerName / activeDoc layerTable layerItem)
(vl-load-com)
(vla-startundomark
   (setq activeDoc (vla-get-activedocument (vlax-get-acad-object))))
(if (= 'STR (type layerName))
   (if (not (vl-string-search "|" layerName))
   (progn
       (setq layerTable (vla-get-layers activeDoc))
       (if (tblsearch "layer" layerName)
         (progn
         (setq layerItem (vla-item layerTable layerName))
         (vla-put-freeze layerItem :vlax-false))
         (vla-put-layeron layerItem :vlax-true)
         (vla-put-lock layerItem :vlax-false)
         (setq layerItem (vla-add layerTable layerName)))
       (vla-put-activelayer activeDoc layerItem))
   (prompt "\n<!>Cannot Set to Xref Dependent Layer<!> "))
   (progn
   (prompt "\n<!>Invalid Argument - ")
   (prin1 name)
   (prompt "<!> ")))
(vla-endundomark activeDoc)
(princ))

alanjt 发表于 2022-7-6 10:31:10

http://www.theswamp.org/index.php?topic=33041.msg384939#msg384939

ccowgill 发表于 2022-7-6 10:41:21

或http://forums.augi.com/showthread.php?t=122277&highlight=layerlist和http://www.theswamp.org/index.php?topic=35588.0;全部的

autolisp 发表于 2022-7-6 10:48:32

尊敬的各位
thx为帮助我,我将尝试返回thx
页: [1]
查看完整版本: 创建图层的最佳方式是什么