ILoveMadoka 发表于 2022-7-6 15:08:57

如何获得线型指定

下面是并排两行的实体列表。
一个是连续的,一个是隐藏的。
通过lisp返回的内容,您无法区分哪个是哪个。
如果它返回Assoc 6值,我会很好,但它没有。
 
*AutoLISP格式的列表*(-1。)(0.LINE)(330)(5.571)(100.AcDbEntity)(67.0)(410.Model)(8.0)(100.AcDbLine)(10-60.0959 78.554 0.0)(11-78.7209 78.554 0.0)(210 0.0 0 0.0 1.0))
变量名为ENT
 
*AutoLISP格式的列表*(-1。)(0.LINE)(330)(5.573)(100.AcDbEntity)(67.0)(410.Model)(8.DEFAULT_2)(100.AcDbLine)(10-60.0959 78.679 0.0)(11-78.7209 78.679 0.0)(210 0.0 0 0.0 1.0))
变量名为ENT
 
我需要知道通过选择图元返回指定给图层的线型的代码。(颜色也是…)
这真的很简单吗?
我只是不知道怎么做。
 
请帮忙!!
 
TIA!!

uddfl 发表于 2022-7-6 15:26:47

如果是bylayer,则图元列表不会返回线型。要获取指定给图层的线型,请通过访问每条线的实际图层的图元列表
 

(setq layer_name (cdr (assoc 8 (entget (ent)))))

 
然后
 

(setq layer_ltype (cdr (assoc 6 (tblsearch "LAYER" layer_name))))

ILoveMadoka 发表于 2022-7-6 15:36:40

非常感谢!!

Lee Mac 发表于 2022-7-6 15:49:12

也:
 

(defun getLT (lay)
(vlax-for layer
       (vla-get-layers
         (vla-get-activedocument
       (vlax-get-acad-object)))
   (if (eq (vla-get-name layer) lay)
   (setq lt (vla-get-Linetype layer))))
(princ (vl-princ-to-string lt)))

ILoveMadoka 发表于 2022-7-6 16:07:58

如何执行图形中所有隐藏线的get列表
如果他们是bylayer?沿着这条线。。。
 
(setq SS1(ssget“X”(列表(cons 6“隐藏”)))
 
 
非常感谢您的帮助和专业知识!!

Lee Mac 发表于 2022-7-6 16:18:01

也许:
 

(defun getLT(lt)
(setq lLst "")
(vlax-for layer
          (vla-get-layers
            (vla-get-activedocument
            (vlax-get-acad-object)))
   (if    (eq (strcase (vla-get-Linetype layer)) (strcase lt))
   (setq lLst (strcat(vla-get-name layer) (chr 44) lLst)))))



(defun c:test (/ lLst)
(vl-load-com)
(getLT "Hidden")
(setq lLst (vl-string-right-trim (chr 44) lLst))
(sssetfirst nil (ssget "X" (list (cons 8 lLst)
    (if (getvar "CTAB")(cons 410 (getvar "CTAB"))
      (cons 67 (- 1 (getvar "TILEMODE")))))))
(princ))
页: [1]
查看完整版本: 如何获得线型指定