找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1110|回复: 11

[测试]:设置标记、及获取标记后实体。

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-6-22 23:17:13 | 显示全部楼层 |阅读模式

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

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

×
  1. [font=courier]
  2. ;;设置标记
  3. (defun ea:setmark ()
  4.   (setq        $yb_last_entity_mark
  5.          (vla-get-objectid
  6.            (vlax-ename->vla-object (entlast))
  7.          )
  8.   )
  9. )
  10. ;;获取标记后生成的实体
  11. (defun ea:getss        (/ ss idn for-item docment modelspace)
  12.   (setq        docment           (vla-get-activedocument (vlax-get-acad-object))
  13.         modelspace (vla-get-modelspace docment)
  14.   )
  15.   (setq ss (ssadd))
  16.   (if $yb_last_entity_mark
  17.     (progn
  18.       (vlax-for        for-item modelspace
  19.         (setq idn (vla-get-objectid for-item))
  20.         (if (> idn $yb_last_entity_mark)
  21.           (setq        ss (ssadd (vlax-vla-object->ename
  22.                             (vla-objectidtoobject docment idn)
  23.                           )
  24.                           ss
  25.                    )
  26.           )
  27.         )
  28.       )
  29.       (setq $yb_last_entity_mark nil)
  30.     )
  31.   )
  32.   ss
  33. )
  34. [/font]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-6-23 07:13:35 | 显示全部楼层
干吗用?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-6-23 08:21:44 | 显示全部楼层
非常有用,我也做了一个这样的程序,用于讲图形标准化。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2003-6-25 07:48:33 | 显示全部楼层
最初由 lijiao 发布
[B]非常有用,我也做了一个这样的程序,用于讲图形标准化。 [/B]

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

使用道具 举报

发表于 2003-6-25 09:23:21 | 显示全部楼层
最初由 eachy 发布
[B]
2002下通过,2004 下 fail . [/B]

我是这样做的:

  1.   [FONT=courier new]
  2. (defun update1 (cs_ss / ss entlei enttbl entobj wordh)
  3.   (if cs_ss
  4.     (setq ss (entnext cs_ss))
  5.     (setq ss (entnext))
  6.   )
  7.   (princ "\n处理")
  8.   (while ss
  9.     (princ ".")
  10.     (setq entobj (vlax-ename->vla-object ss))
  11.     (setq enttbl (entget ss (list "*")))
  12.     (setq entlei (cdr (assoc 0 enttbl)))
  13.     (cond
  14.       ((= entlei "ACMPARTLIST")
  15.        (vlax-put-property entobj 'scale bl)
  16.       )
  17.       ((or (= entlei "TEXT")
  18.            (= entlei "MTEXT")
  19.        )
  20.        (if (= "技术要求" (vla-get-TextString entobj))
  21.          (setq wordh (* bl 5.0))
  22.          (setq wordh (* bl 3.5))
  23.        )
  24.        (vla-put-Height entobj wordh)
  25.        (vla-put-layer entobj "6")
  26.       )
  27.       ((= entlei "DIMENSION")
  28.        (vla-put-ScaleFactor entobj bl)
  29.       )
  30.       (t (princ))
  31.     )
  32.     (setq ss (entnext ss))
  33.   )
  34.   (princ "完毕。")
  35.   (setq cs_mylast (entlast))
  36.   (princ)
  37. )
  38.   [/FONT]

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

使用道具 举报

发表于 2003-6-25 10:21:07 | 显示全部楼层

  1. 遍历MODELSPACE就很花时间了,如对象在其它空间就不能用了!
  2. 看来autolisp会简单一些。
  3. 好像
  4. (setq SS (ssadd        (vlax-vla-object->ename
  5.                   (vla-objectidtoobject DOCMENT IDN)
  6.                 )
  7.                 SS
  8.          )
  9. )
  10. 可简化为
  11. (ssadd (vlax-vla-object->ename FOR-ITEM) SS)


  12. ;;測試
  13. ;;设置记号
  14. (vl-load-com)
  15. (defun EA:SETMARK ()
  16.   (setq        $YB_LAST_ENTITY_MARK
  17.          (vla-get-objectid
  18.            (vlax-ename->vla-object (entlast))
  19.          )
  20.   )
  21. )

  22. ;;获取标记后生成的实体
  23. (defun EA:GETSS        (/ SS COUNT N ENT CURSPACE DOC)
  24.   (setq        DOC         (vla-get-activedocument (vlax-get-acad-object))
  25.         CURSPACE (cond
  26.                    ((= (getvar "TILEMODE") 1)
  27.                     (vla-get-modelspace DOC)
  28.                    )
  29.                    ((> (getvar "CVPORT") 1)
  30.                     (vla-get-modelspace DOC)
  31.                    )
  32.                    ((vla-get-paperspace DOC))
  33.                  )
  34.   )
  35.   (setq SS (ssadd))
  36.   (if $YB_LAST_ENTITY_MARK
  37.     (progn
  38.       (setq N          1
  39.             COUNT (vla-get-count CURSPACE)
  40.       )
  41.       (while (and (> (- count n) -1)
  42.                   (> (vla-get-objectid
  43.                        (setq ENT (vla-item CURSPACE
  44.                                            (- COUNT N)
  45.                                  )
  46.                        )
  47.                      )
  48.                      $YB_LAST_ENTITY_MARK
  49.                   )
  50.              )
  51.         (ssadd (vlax-vla-object->ename ENT) SS)
  52.         (setq N (1+ N))
  53.       )
  54.       (setq $YB_LAST_ENTITY_MARK NIL)
  55.     )
  56.   )
  57.   (vlax-release-object DOC)
  58.   (vlax-release-object CURSPACE)
  59.   SS
  60. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-6-26 20:49:57 | 显示全部楼层
EA:SETMARK     ($YB_LAST_ENTITY_MARK)时,
如果图上没东西,那$YB_LAST_ENTITY_MARK为nil
那画了东西也得不到.
所以不应该判断$YB_LAST_ENTITY_MARK为空,为空时就应该是图中所有实体.
那反过来一想,又错了:你没设呢(EA:SETMARK ) ?不是又得到全部实体了吗?

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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2003-6-26 20:57:42 | 显示全部楼层

  1. (defun EA:SETMARK ()
  2.   (if (entlast)
  3.    (setq        $YB_LAST_ENTITY_MARK
  4.          (vla-get-objectid
  5.            (vlax-ename->vla-object (entlast))
  6.          )
  7.   ))
  8. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-6-26 21:04:43 | 显示全部楼层
那你的程序,在空图上不要用?
比如要把程序里的新生的线改为红色.你在空图上运行,不是不行了吗?
我觉的$YB_LAST_ENTITY_MARK空时得到所有的 为好.
毕竟不EA:SETMARK ,还有机会发现,自己写的...:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2003-6-26 21:18:51 | 显示全部楼层
萌生这个想法源于 XDRX_API ,想试试用LSP可不可以实现类似功能,至少实现部分功能,设置标记对图中实体不多时还可以(AutoCAD 2002),遍历肯定会耗时的,好在我画的图都不大。

在CAD2004中实体的ID与2002中就不同了,期待那个置顶的查看CAD内部数据库工具的For 2004版。

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

使用道具 举报

发表于 2003-7-5 19:46:02 | 显示全部楼层
搞不懂他的功能,能不能说清楚点?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2008-12-19 09:04:07 | 显示全部楼层
俺是这样搞的。

  1.   [FONT=courier new]
  2. (defun hao-ss-aftere (ename / ss)
  3.   (if (and
  4.         ename
  5.         (setq ss (ssadd))
  6.         (eq 'ename (type ename))
  7.       )
  8.     (while (setq ename (entnext ename))
  9.       (ssadd ename ss)
  10.     )
  11.     (setq ss (ssget "x"))
  12.   )
  13.   ss
  14. )
  15. (defun c:test ()
  16.   (setq laste (entlast))
  17.   .......................
  18.   (setq ss (hao-ss-aftere laste))
  19.   .......................
  20. )
  21.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 12:45 , Processed in 0.204311 second(s), 53 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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