乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 96|回复: 11

[编程交流] 跟踪crea的最佳方式

[复制链接]

15

主题

65

帖子

50

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-6 12:57:20 | 显示全部楼层 |阅读模式
我是新手,不想重蹈覆辙。
 
谢谢你的时间!
 
安得烈
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:06:23 | 显示全部楼层
跟踪通过LISP例程创建的实体,你是说?
 
如果是这样,
 
可能使用(entlast)存储上次创建的实体-将其保存到其他实体名称的列表中,或者为其创建选择集。
回复

使用道具 举报

15

主题

65

帖子

50

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-6 13:08:37 | 显示全部楼层
好的,这很有道理。
 
实体名称必须是十六进制吗?也就是说,我可以把它们设为lineX,其中x是一个整数吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:17:16 | 显示全部楼层
 
当您使用(entlast)时,您将获得一个实体名称,类似于:
 
  1. <Entity name: 7ef03698>
可以添加到列表中,可能:
 
  1. (setq entlst (cons (entlast) entlst))
或可能添加到选择集(ss):
 
  1. (ssadd (entlast) ss)

 
或者将其存储到变量中:
 
  1. (setq ent1 (entlast))

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

使用道具 举报

15

主题

65

帖子

50

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-6 13:21:10 | 显示全部楼层
谢谢你,李!
 
一如既往地有用。
 
干杯
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 13:29:16 | 显示全部楼层
我将研究实体的句柄(dxf组5),因为它们是静态的,而珐琅只适用于当前会话。(handent)调用返回实体的当前名称。因此,实际上,您可以保留一个新实体或临时数据库,或者您的标准是什么-大卫
回复

使用道具 举报

37

主题

125

帖子

87

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
190
发表于 2022-7-6 13:34:11 | 显示全部楼层
据我所知,每个实体都存储在其中一个文档表中。(遗憾的是,我不知道表格的名称)创建实体时,会将其添加到该表格中,删除实体时,会将其标记为删除,但在图形关闭之前不会从数据库中删除。
 
因此,必须有一种方法从该表中检索实体的绘制顺序。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:40:51 | 显示全部楼层
 
这也让我感到奇怪,通过一些实验:
 
  1. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] getOrder  [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] doc spc Dic sort order[b][color=RED])[/color][/b]
  2. [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b]
  3. [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] doc [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveDocument[/color][/b]
  4.              [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-Acad-Object[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  5.        spc [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]zerop[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-activespace[/color][/b] doc[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  6.              [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]=[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-mspace[/color][/b] doc[b][color=RED])[/color][/b] [b][color=Blue]:vlax-true[/color][color=RED])[/color][/b]
  7.                [b][color=RED]([/color][/b][b][color=BLUE]vla-get-modelspace[/color][/b] doc[b][color=RED])[/color][/b]
  8.                [b][color=RED]([/color][/b][b][color=BLUE]vla-get-paperspace[/color][/b] doc[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  9.              [b][color=RED]([/color][/b][b][color=BLUE]vla-get-modelspace[/color][/b] doc[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  10. [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]zerop[/color][/b]
  11.        [b][color=RED]([/color][/b][b][color=BLUE]vla-get-count[/color][/b]
  12.          [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] Dic
  13.            [b][color=RED]([/color][/b][b][color=BLUE]vla-getextensiondictionary[/color][/b] spc[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  14.    [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] sort [b][color=RED]([/color][/b][b][color=BLUE]vla-addobject[/color][/b] Dic [b][color=#ff00ff]"ACAD_SORTENTS"[/color][/b] [b][color=#ff00ff]"AcDbSortentsTable"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  15.    [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] sort [b][color=RED]([/color][/b][b][color=BLUE]vla-getobject[/color][/b] Dic [b][color=#ff00ff]"ACAD_SORTENTS"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  16. [b][color=RED]([/color][/b][b][color=BLUE]vla-getfulldraworder[/color][/b] sort [b][color=DARKRED]'[/color][/b]order [b][color=Blue]:vlax-false[/color][color=RED])[/color][/b]
  17. [b][color=RED]([/color][/b][b][color=BLUE]vlax-safearray->list[/color][/b] order[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
回复

使用道具 举报

37

主题

125

帖子

87

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
190
发表于 2022-7-6 13:43:46 | 显示全部楼层
 
李真的很可怕。我一直在考虑在表名上发布一个问题,以及如何访问它们。这就解决了其中的难题。
 
谢谢
奥利
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:46:30 | 显示全部楼层
还有一些来自theSwamp的提示:
 
  1. (defun getOrder  (/ doc spc Dic sort order)
  2. (setq doc (vla-get-ActiveDocument
  3.              (vlax-get-Acad-Object))
  4.        spc (if (zerop (vla-get-activespace doc))
  5.              (if (= (vla-get-mspace doc) :vlax-true)
  6.                (vla-get-modelspace doc)
  7.                (vla-get-paperspace doc))
  8.              (vla-get-modelspace doc)))
  9. (if (vl-catch-all-error-p
  10.        (setq sort
  11.          (vl-catch-all-apply 'vla-item
  12.            (list
  13.              (setq Dic
  14.                (vla-getextensiondictionary spc)) "ACAD_SORTENTS"))))
  15.    (setq sort (vla-addobject Dic "ACAD_SORTENTS" "AcDbSortentsTable")))
  16. (vla-getfulldraworder sort 'order :vlax-false)
  17. (if (< 0 (vlax-safearray-get-u-bound order 1))
  18.    (vlax-safearray->list order)))
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-5 03:19 , Processed in 0.686244 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表