找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2147|回复: 8

[求助] [求助]:找倒数第二倒数第三实体的函数是什么

[复制链接]
发表于 2002-12-27 09:24:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
entlast是找最后一个实体
entnext是从第一个实体往后找
请问要找倒数第二个,倒数第三个实体该怎么办
笨笨的,一时想不通,求助阿求助
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2002-12-27 14:26:22 | 显示全部楼层
恐怕只能历遍。

如果都是简单实体,可以
(entdel(setq e0(entlast)))
(setq e1(entlast))
(entdel e0)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-12-27 16:48:02 | 显示全部楼层
entdel不是指那些已经删除的实体么?虽然删除仍存在数据库中?假如不删掉该怎么办啊
不过cy兄这个倒是很有启发啊
现在比如我已经用boundary创建了几个面域,想把这些面域一一调出来,该怎么办呢
虽然知道他们是最终创建的几个对象
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-12-27 18:50:32 | 显示全部楼层
最初由 snoopychen 发布
[B]entdel不是指那些已经删除的实体么?虽然删除仍存在数据库中?假如不删掉该怎么办啊
不过cy兄这个倒是很有启发啊
现在比如我已经用boundary创建了几个面域,想把这些面域一一调出来,该怎么办呢
虽然知道他们是最... [/B]


你在构造面域前,用 (setq #e (entlast)) 做个标记,构造后,循环用 (entnext e) 直到NIL为止,把每个实体ssadd 到选择集里面就可以了。

程序注意判断下当前数据库为空图情况下(setq #e (entlast)) =NIL,那样,你可以用ssget "x" 获得所有的实体,就是你最新添加到数据库的实体选择集了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-12-28 00:51:20 | 显示全部楼层
搞了半天是要求选择集,你可以:
(setq e0(entlast))
......
(setq s(get-ss e0))即可。


  1. (Defun get-ss( e / ss ep) ;;;取在实体e后生成的所有实体选择集
  2.   (setq ss (ssadd) ep e)
  3.   (if (not ep) (setq ep (entnext)))
  4.   (while (/= (setq ep (entnext ep)) nil)
  5.     (ssadd ep ss)
  6.   )
  7.   ss
  8. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-12-28 01:08:08 | 显示全部楼层
查询倒数第二、倒数第三实体



  1. (setq acDocument (vla-get-ActiveDocument (vlax-get-acad-object)))
  2. (if (= (vla-get-ActiveSpace acDocument) acModelSpace)
  3.   (setq acSpace (vla-get-ModelSpace acDocument))
  4.   (setq acSpace (vla-get-PaperSpace acDocument))
  5. )
  6. (setq ent2 (vlax-vla-object->ename
  7.              (vla-Item acSpace (- (vla-get-count acSpace) 2))
  8.            )
  9. )                                        ;倒数第二
  10. (setq ent3 (vlax-vla-object->ename
  11.              (vla-Item acSpace (- (vla-get-count acSpace) 3))
  12.            )
  13. )                                        ;倒数第三

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-12-28 08:52:11 | 显示全部楼层
[QUOTE]最初由 灯火 发布
[B]查询倒数第二、倒数第三实体



  1. (setq acDocument (vla-get-ActiveDocument (vlax-get-acad-object)))
  2. (if (= (vla-get-ActiveSpace acDocument) acModelSpace)
  3.   (setq acSpace (vla-get-ModelSpace ac... [/B][/QUOTE]


  4. 在求倒数的实体时应判别一下序号是否超出范围,修改后的代码为:
  5. [CODE]
  6.   [FONT=courier new]

  7. (defun dshsht (i / acDocument  acSpace ent_name)
  8.    (setq acDocument (vla-get-ActiveDocument (vlax-get-acad-object)))
  9.    (if (= (vla-get-ActiveSpace acDocument) acModelSpace)
  10.         (setq acSpace (vla-get-ModelSpace acDocument))
  11.         (setq acSpace (vla-get-PaperSpace acDocument))
  12.     )
  13.    (if (and (= (type i) 'INT)
  14.                  (>= (- (vla-get-count acSpace) i)  0)
  15.                  (>= i 1)
  16.         )
  17.        (setq ent_name (vlax-vla-object->ename
  18.              (vla-Item acSpace (- (vla-get-count acSpace) i))
  19.            )
  20.        )
  21.       (setq ent_name nil)
  22.     )
  23. )
  24. ;变量i为正整数
  25. ;函数调用成功,返回实体名,否则,返回nil
  26.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 943个

财富等级: 财运亨通

发表于 2002-12-28 08:59:03 | 显示全部楼层
我怎么越学差的越多,LISP我已经看一遍了。虽然基本上没看懂,但各个函数也都混个脸熟。
面域是什么东东?作什么用的?属于哪方面的知识?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-12-28 09:27:23 | 显示全部楼层
最初由 游手好闲 发布
[B]我怎么越学差的越多,LISP我已经看一遍了。虽然基本上没看懂,但各个函数也都混个脸熟。
面域是什么东东?作什么用的?属于哪方面的知识? [/B]


面域是CAD实体的一种
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-26 08:10 , Processed in 0.294940 second(s), 48 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表