跟踪crea的最佳方式
我是新手,不想重蹈覆辙。谢谢你的时间!
安得烈 跟踪通过LISP例程创建的实体,你是说?
如果是这样,
可能使用(entlast)存储上次创建的实体-将其保存到其他实体名称的列表中,或者为其创建选择集。 好的,这很有道理。
实体名称必须是十六进制吗?也就是说,我可以把它们设为lineX,其中x是一个整数吗?
当您使用(entlast)时,您将获得一个实体名称,类似于:
<Entity name: 7ef03698>
可以添加到列表中,可能:
(setq entlst (cons (entlast) entlst))
或可能添加到选择集(ss):
(ssadd (entlast) ss)
或者将其存储到变量中:
(setq ent1 (entlast))
不能更改图元名称本身-这是由AutoCAD确定的唯一名称。
李 谢谢你,李!
一如既往地有用。
干杯 我将研究实体的句柄(dxf组5),因为它们是静态的,而珐琅只适用于当前会话。(handent)调用返回实体的当前名称。因此,实际上,您可以保留一个新实体或临时数据库,或者您的标准是什么-大卫 据我所知,每个实体都存储在其中一个文档表中。(遗憾的是,我不知道表格的名称)创建实体时,会将其添加到该表格中,删除实体时,会将其标记为删除,但在图形关闭之前不会从数据库中删除。
因此,必须有一种方法从该表中检索实体的绘制顺序。
这也让我感到奇怪,通过一些实验:
(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))
李真的很可怕。我一直在考虑在表名上发布一个问题,以及如何访问它们。这就解决了其中的难题。
谢谢
奥利 还有一些来自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