找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1220|回复: 18

[求助]:怎么选择copy或mirror后的那个选择集

[复制链接]
发表于 2005-9-8 00:01:10 | 显示全部楼层 |阅读模式

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

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

×
我用(setq ss(ssget))指定了一个选择集ss,
(command "mirror" ss "" .....)后
要对镜像后的那个选择集再
move,
但我发现
(command "move" "p"或"last"。。。 )都不是我想要的镜像后的物体的那个选择集,怎么才能得到镜像后物体的那个选择集呢
“p”,选出来的是ss,"last"选出来的是镜像后的那些物体中的一个,并不是全部
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 111个

财富等级: 日进斗金

发表于 2005-9-8 09:38:45 | 显示全部楼层
如下处理:
(setq ent (entlast))
(command "mirror" ss "" .....)
......
(setq ssa (ssadd))
(while (setq ent (entnext ent))(ssadd ent ssa))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-9-8 10:15:32 | 显示全部楼层
用xdapi中的函数最简单,Copy mirror 前要标记。另外Wkai写过一个Lisp版的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-8 10:17:52 | 显示全部楼层
  1. [FONT=courier new](defun c:test ()
  2.   (setq ss1(ssget "X"))
  3.   (setq ss(ssget))
  4.   (command "mirror" ss "" .....)
  5.   .....
  6.   (setq ss2(ssget "X"))
  7.   (command "select" ss2 "r" ss1 "")
  8.   (setq ss (ssget "P"))
  9.   .....  
  10. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-10 03:52:21 | 显示全部楼层

  1. ;| (x-ssmarke e) = 取得标志实体后的新生成实体选集-----------by lxx.2005.9
  2. 参数: e = 实体名
  3. 返回: 选择集或nil.
  4. 说明: 简单用法,可调用(x-ssmark)取得最后一次(x-mark)标志的新选集.
  5. 实例:
  6. (setq e (entlast)) ;;标志a
  7. .... ;;生成实体
  8. (x-mark);;标志b
  9. .... ;;生成实体
  10. (setq ss1 (x-ssmark));;取得标志b后的新实体选集.
  11. (setq ss2 (x-ssmarke e));;取得标志a后的新实体选集.
  12. |;
  13. ;;
  14. (defun x-ssmarke (e / ss)
  15.   (if (= 'ENAME (type e))
  16.     (progn
  17.       (setq ss (ssadd))
  18.       (while (setq e (entnext e))
  19.         (if (not(wcmatch (cdr (assoc 0 (entget e)))"VERTEX,SEQEND,ATTRIB"))
  20.           (ssadd e ss)
  21.         )
  22.       )
  23.       ss
  24.     )
  25.   )
  26. )
  27. ;; (x-ssmark)=取得最后一次(x-mark)标志的新选集
  28. (defun x-ssmark ()
  29.   (x-ssmarke *ssmark*)
  30. )
  31. ;; (x-mark)=设置当前最后实体为(x-ssmark)的标志位.
  32. (defun x-mark ()
  33.   (setq *ssmark* (entlast))
  34. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-10 12:37:22 | 显示全部楼层
还是不懂怎么用,能不能说详细一点,就是(command "copy" ss "" "m" ""),后move+p移动最后那个选择集。LSP要怎么写,我试着自己编了几次都不行,请高手指教!到底那里出错?
(defun c:c()
(setq ss (ssget))
(setq e (entlast))
(command "copy" ss "" "m" "")
(x-mark)
(setq ss1 (x-ssmark))
(setq ss2 (x-ssmarke e))
)
;;
(defun x-ssmarke (e / ss)
  (if (= 'ENAME (type e))
    (progn
      (setq ss (ssadd))
      (while (setq e (entnext e))
        (if (not(wcmatch (cdr (assoc 0 (entget e)))"VERTEX,SEQEND,ATTRIB"))
          (ssadd e ss)
        )
      )
      ss
    )
  )
)
;; (x-ssmark)=取得最后一次(x-mark)标志的新选集
(defun x-ssmark ()
  (x-ssmarke *ssmark*)
)
;; (x-mark)=设置当前最后实体为(x-ssmark)的标志位.
(defun x-mark ()
  (setq *ssmark* (entlast))
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-10 22:04:39 | 显示全部楼层
(command "copy" ss "" "m" "")这行时就已经停了,
(x-mark)
(setq ss1 (x-ssmark))这两行在一起没有意义,当作了记号,就提取,没有不一样
ss2是你想要的move+p选极
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-10 22:26:00 | 显示全部楼层
  1. [FONT=courier new];;;移动镜像后的选择集
  2. (defun c:test ()
  3.   (setq ss1(ssget "X"))
  4.   (setq ss(ssget))
  5.   (command "mirror" ss "" pause pause "n")
  6.   (setq ss2(ssget "X"))
  7.   (command "select" ss2 "r" ss1 "")
  8.   (setq ss (ssget "P"))
  9.   (command "move" ss "" )
  10. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-11 04:21:50 | 显示全部楼层
图小可以,图大不推荐用(command "select" ss2 "r" ss1 "")
会比较慢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2005-9-11 13:39:41 | 显示全部楼层
最初由 baihc798 发布
[B]就是,这么命令太慢了。 [/B]

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

使用道具 举报

 楼主| 发表于 2005-9-11 15:52:46 | 显示全部楼层
那我就这个命令再提个问题吧,怎么能先选择物体再执行呢或先执行命令再ssget呢,我看了论坛的一些相关的资料,越看越乱,真是不明白了,有人直接用ssgetfirst,有人用(car(ssgetfirst)),有人用(cadr (ssgetfirst)),我在我的小命令里试了都不行,还有,我看了资料,说ssgetfirst有两个选择集,这两个都有什么不同吗
;;;移动镜像后的选择集
(defun c:test ()
;;;  (or (setq ss (ssgetfirst))
;;;      (setq ss (ssget))
;;;  )
  (setq ss1(ssget "X"))
   (command "mirror" ss "" pause pause "n")
  (setq ss2(ssget "X"))
  (command "select" ss2 "r" ss1 "")
  (setq ss (ssget "P"))
  (command "move" ss "" )
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-11 19:18:30 | 显示全部楼层
最初由 青马 发布
[B]那我就这个命令再提个问题吧,怎么能先选择物体再执行呢或先执行命令再ssget呢,我看了论坛的一些相关的资料,越看越乱,真是不明白了,有人直接用ssgetfirst,有人用(car(ssgetfirst)),有人用(cadr (ssgetfirst)),我... [/B]

要移动的选择集未定义!
应该这样:
  1. [FONT=courier new](defun c:test ()
  2.   (setq ss1 (ssget "X"))
  3.   (princ "\n选择实体 : ")
  4.   (setq ss (ssget))
  5.   (command "mirror" ss "" pause pause "n")
  6.   (setq ss2 (ssget "X"))
  7.   (command "select" ss2 "r" ss1 "")
  8.   (setq ss (ssget "P"))
  9.   (command "move" ss "")
  10. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-11 20:00:15 | 显示全部楼层
您理解错我的意思啊,我的意思是,先选择了物体,这时敲命令,就不会执行(ssget)这一步了,和cad内部命令copy,move等一样,我用ssgetfirst不行,不会用啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-12 19:06:35 | 显示全部楼层
最初由 青马 发布
[B]您理解错我的意思啊,我的意思是,先选择了物体,这时敲命令,就不会执行(ssget)这一步了,和cad内部命令copy,move等一样,我用ssgetfirst不行,不会用啊 [/B]

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-22 01:05 , Processed in 0.198717 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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