找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1671|回复: 5

[讨论]:透明程序在透明调用时,如何向调用命令返回选择集

[复制链接]

已领礼包: 1个

财富等级: 恭喜发财

发表于 2007-3-3 17:17:17 | 显示全部楼层 |阅读模式

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

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

×
一快速选择的LISP程序,想作为透明程序,使用vlax-remove-cmd添加为透明命令后,在恢复原来的命令后选择集却丢失了。


设置透明命令:

  1. (vlax-remove-cmd "QS")
  2. (vlax-add-cmd "QS" 'C:NBTC_QS "QS" 5)
复制代码


程序最后返回选择集变量

  1. (if (and (= 1 what_next)
  2.            (/= "" (getvar "cmdnames"))
  3.            (/= "QS" (getvar "cmdnames"))
  4.            ss
  5.       )                                ;and
  6.       ss ;_透明调用状态下直接返回选择集变量
  7.     (progn
  8.       (if (and (equal (getvar "pickfirst") 1)
  9.                ss
  10.                (equal 'PICKSET (type ss))
  11.           )                                ;and
  12.         (sssetfirst ss ss)
  13.       )                                        ;if
  14.       (princ) ;;;shhhhh
  15.     )                                        ;progn else
  16.   )                                        ;if


但到恢复执行原来命令时,选择集就丢失了。在CAD2004以上的'fi就不会出现这种情况:


选择易及其克隆版都不是透明命令。

透明命令中选择对象时有两个大于符,CAD2002 的filter也没有采用透明命令方式,但CAD2004以上的filter都是透明命令了。


运行比较:
我的程序:

  1. 命令: m MOVE
  2. 选择对象: 'qs
  3. 使用过滤器:((8 . 0))
  4. >>选择对象: >>指定对角点: 找到 2 个

  5. >>选择对象:

  6. 共选中了2个实体。
  7. 正在恢复执行 MOVE 命令。

  8. 选择对象:         [color=red][<-这里就为空了,而'fi则能先中2个。][/color]
复制代码




选择易:

  1. 命令: m MOVE
  2. 选择对象: 'ss
  3. 回车两次进入设置~
  4. 样板物体:
  5. 选择对象:
  6. 通过过滤器((-4 . <OR) (8 . 0) (-4 . OR>))选择物体
  7. 选择对象: 指定对角点: 找到 4 个

  8. 选择对象:
  9. 选择到4个符合条件的实体.

  10. 选择对象:
复制代码


系统filter

  1. 命令:  MOVE
  2. 选择对象: 'fi

  3. >>选择对象: 将过滤器应用到选择。
  4. >>选择对象: >>指定对角点: 找到 5 个
  5. 已滤除 4 个。

  6. >>选择对象:
  7. 退出过滤出的选择。
  8. 正在恢复执行 MOVE 命令。

  9. 选择对象: 找到 1 个       [color=red][成功][/color]

  10. 选择对象:
  11. 指定基点或位移:
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2007-3-4 14:07:19 | 显示全部楼层
我不大明白楼上的意思,试了一下,似乎没什么区别,测试过程如下:(用vlax-add-cmd 添加的命令似乎有问题,不能返回选择集)

Command: move

Select objects: 'filter

Select object:
Applying filter to selection.
Select objects: Specify opposite corner: 1 found

Select objects:

Exiting filtered selection.  <Selection set: 1b>
1 found

Select objects:
Specify base point or displacement: Specify second point of displacement or
<use first point as displacement>:
;;-------------------------------------------------------
;;-------------------------------------------------------
Command:
Command: move

Select objects: 'ss

请选择样板实体(N-关闭块属性显示,当前状态:打开):
使用过滤器:((-4 . <OR) (8 . _消防控制) (-4 . OR>) (-4 . <OR) (0 . LINE) (-4 .
OR>))
Select objects: Specify opposite corner: 1 found

Select objects:

共选中了1个实体。<Selection set: 1d>
1 found

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

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2007-3-4 16:36:45 | 显示全部楼层
命令中 比如move 不注册反而行
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-3-4 16:55:54 | 显示全部楼层
不知道select或者pselect命令有没有lisp写法,要是有个vla-add-activeselectionset之类的方法多好啊
要是能把ss选择集置为当前选择集,就搞定了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

 楼主| 发表于 2007-3-4 21:27:03 | 显示全部楼层
呵呵,就是。
直正添加为透明命令反而不能返回选择集了!
但'fi却能返回,真不知道它是如何实现的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-3-5 10:22:33 | 显示全部楼层
filter是内部命令,可能是ARX写的,学不来的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 17:32 , Processed in 0.200187 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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