Hudson 发表于 2022-7-6 12:57:20

跟踪crea的最佳方式

我是新手,不想重蹈覆辙。
 
谢谢你的时间!
 
安得烈

Lee Mac 发表于 2022-7-6 13:06:23

跟踪通过LISP例程创建的实体,你是说?
 
如果是这样,
 
可能使用(entlast)存储上次创建的实体-将其保存到其他实体名称的列表中,或者为其创建选择集。

Hudson 发表于 2022-7-6 13:08:37

好的,这很有道理。
 
实体名称必须是十六进制吗?也就是说,我可以把它们设为lineX,其中x是一个整数吗?

Lee Mac 发表于 2022-7-6 13:17:16

 
当您使用(entlast)时,您将获得一个实体名称,类似于:
 

<Entity name: 7ef03698>
可以添加到列表中,可能:
 

(setq entlst (cons (entlast) entlst))
或可能添加到选择集(ss):
 

(ssadd (entlast) ss)

 
或者将其存储到变量中:
 

(setq ent1 (entlast))

 
不能更改图元名称本身-这是由AutoCAD确定的唯一名称。
 

Hudson 发表于 2022-7-6 13:21:10

谢谢你,李!
 
一如既往地有用。
 
干杯

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

我将研究实体的句柄(dxf组5),因为它们是静态的,而珐琅只适用于当前会话。(handent)调用返回实体的当前名称。因此,实际上,您可以保留一个新实体或临时数据库,或者您的标准是什么-大卫

ollie 发表于 2022-7-6 13:34:11

据我所知,每个实体都存储在其中一个文档表中。(遗憾的是,我不知道表格的名称)创建实体时,会将其添加到该表格中,删除实体时,会将其标记为删除,但在图形关闭之前不会从数据库中删除。
 
因此,必须有一种方法从该表中检索实体的绘制顺序。

Lee Mac 发表于 2022-7-6 13:40:51

 
这也让我感到奇怪,通过一些实验:
 

(defun getOrder(/ doc spc Dic sort order)
(vl-load-com)
(setq doc (vla-get-ActiveDocument
             (vlax-get-Acad-Object))
       spc (if (zerop (vla-get-activespace doc))
             (if (= (vla-get-mspace doc) :vlax-true)
               (vla-get-modelspace doc)
               (vla-get-paperspace doc))
             (vla-get-modelspace doc)))
(if (zerop
       (vla-get-count
         (setq Dic
         (vla-getextensiondictionary spc))))
   (setq sort (vla-addobject Dic "ACAD_SORTENTS" "AcDbSortentsTable"))
   (setq sort (vla-getobject Dic "ACAD_SORTENTS")))
(vla-getfulldraworder sort 'order :vlax-false)
(vlax-safearray->list order))

ollie 发表于 2022-7-6 13:43:46

 
李真的很可怕。我一直在考虑在表名上发布一个问题,以及如何访问它们。这就解决了其中的难题。
 
谢谢
奥利

Lee Mac 发表于 2022-7-6 13:46:30

还有一些来自theSwamp的提示:
 

(defun getOrder(/ doc spc Dic sort order)
(setq doc (vla-get-ActiveDocument
             (vlax-get-Acad-Object))
       spc (if (zerop (vla-get-activespace doc))
             (if (= (vla-get-mspace doc) :vlax-true)
               (vla-get-modelspace doc)
               (vla-get-paperspace doc))
             (vla-get-modelspace doc)))
(if (vl-catch-all-error-p
       (setq sort
         (vl-catch-all-apply 'vla-item
         (list
             (setq Dic
               (vla-getextensiondictionary spc)) "ACAD_SORTENTS"))))
   (setq sort (vla-addobject Dic "ACAD_SORTENTS" "AcDbSortentsTable")))
(vla-getfulldraworder sort 'order :vlax-false)
(if (< 0 (vlax-safearray-get-u-bound order 1))
   (vlax-safearray->list order)))
页: [1] 2
查看完整版本: 跟踪crea的最佳方式