乐筑天下

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

[编程交流] 数组实体集合

[复制链接]

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:05:38 | 显示全部楼层 |阅读模式
大家好,
 
只是一个简单的问题,如何在执行阵列后检索所有已阵列的实体?
 
我认为一个简单的(entlast)可以做到这一点,但这只检索第一个阵列对象。
 
如果您有任何想法或想法,我们将不胜感激。
 
谢谢
 
回复

使用道具 举报

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 2022-7-6 15:12:44 | 显示全部楼层
在_ARRAY命令之后
 
使用(entlast)存储ARRAY命令之前的最后一个实体,并使用以下函数检索命令之后的所有新实体:
 
  1. (defun Ent_List_to_End(ent / a)
  2. (reverse
  3.    (if(setq a(entnext ent))
  4.       (cons ent(Ent_List_to_End a))
  5.      ); end if
  6.    ); end reverse
  7. ); Ent_List_to_End

 
 
或安全阵列内
 
使用标准(vlax safearray->list(vlax variant->value safearray))表达式将数组转换为列表。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:15:33 | 显示全部楼层
ASMI,非常感谢您的代码-它工作得很好-尽管由于某些原因,留下了1个实体(但我可能用错了)。
 
我排列了两个实体,一个圆和一条线。
 
(命令圆。。。
(setq c1(entlast))
(命令行。。。。
(setq l1(entlast))
(命令-数组。。。。
(setq ents(Ent\u List\u to\u End l1))
 
我需要单独排列实体吗?但这很奇怪,因为虽然我在代码中只包含了“line”实体,但所有的阵列圆也都被提取了。。
 
你能解释一下你的代码是怎么工作的吗?
 
谢谢
 
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:17:37 | 显示全部楼层
啊,我想我现在明白了。。。对实体进行阵列后,阵列的实体将作为子实体存储在原始实体中。
 
我知道您的LISP代码返回了原始实体中包含的所有子实体的列表我会在接近正确的地方吗?
 
因此,我可以理解,只有一次排列一个实体时,这才有效。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:21:33 | 显示全部楼层
老实说,我印象深刻,我从来没有想过在函数本身中嵌套函数。。。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:26:28 | 显示全部楼层
这也行吗?
 
  1. (defun get_array_ents (ent / ent eLst)
  2. (while (setq ent (entnext ent))
  3.    (setq eLst (cons ent eLst)))
  4. (reverse eLst))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:28:01 | 显示全部楼层
好吧,现在我完全困惑了。。。似乎如果我排列了多个项目,所有排列的实体都会被代码检索到,但排列的原始实体中的一个不知何故被遗漏了
回复

使用道具 举报

1

主题

316

帖子

311

银币

初来乍到

Rank: 1

铜币
29
发表于 2022-7-6 15:30:54 | 显示全部楼层
您好,李,您可能希望将您的选择集(要排列的项目)与从asmi的递归lisp派生的新选择集相结合。看看它是否适用于复杂实体,如块和多段线。
回复

使用道具 举报

0

主题

269

帖子

279

银币

限制会员

铜币
-4
发表于 2022-7-6 15:34:14 | 显示全部楼层
李,
 
在这种情况下,使用“entnext”并不是检索子图元,而是单步遍历所有图元的图形数据库。首先,“entlast”检索最后创建的实体。然后创建新实体。”Entnext’遍历这些新实体,并将其名称添加到列表中。如果其中一个实体是复杂实体(如具有属性的块),则entnext将逐步遍历子实体。
 
希望这有助于破译阿斯米的密码
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:40:29 | 显示全部楼层
非常感谢您的解释,卡尔-它是非常清楚和简洁。
 
我只真正使用过“entnext”进入子实体,例如块属性和多段线顶点。。等等,所以我没有看到它以这种方式使用-谢谢你澄清这一点。
 
也谢谢你Wizman的建议。我将尝试使用选择集过程,并告诉您结果。
 
谢谢你们的帮助,一如既往,非常感谢。
 
谢谢
 
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 20:58 , Processed in 0.396449 second(s), 83 queries .

© 2020-2025 乐筑天下

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