找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1396|回复: 16

[求助] [求助]:LSP程序中实体的识别

[复制链接]
发表于 2003-9-5 08:29:08 | 显示全部楼层 |阅读模式

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

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

×
我自己编写的LSP文件,总是在程序开始以后选择的实体才有效,而在这之前所选择的实体却识别不到。
可能我上面没有说清楚,下面用具体的例子来说明。
比如用“移动”命令,在没有输入命令的时候,选择一些你准备在移动的实体,所选择上的实体都显示为带蓝色的,当你输入“移动”命令的时候,这些实体就组成了一个选择集,就可以移动了。
而我却不知道如何实现这个功能,当我的程序命令输入的时候,那些已经选择的实体将被放弃,而要重新选择实体。
请各位指教!谢谢!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-9-5 08:40:35 | 显示全部楼层
没做过这种事情,推猜此时程序只能做成子程序。再用工具图标调用。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-9-5 19:06:54 | 显示全部楼层
不理解你的意思. 有什么实用价值吗? 按照一般的操作习惯, 还是输入MOVE命令后, 再选择实体...
如果你非的这样做,  
(setq ss (ssget))
(vl-cmdf "move" ss "" p1 p2 "")
程序中是这样, 可命令行上操作有什么意义?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2003-9-6 12:38:19 | 显示全部楼层

Re: [求助]:[求助]:[求助]:LSP程序中实体的识别

最初由 lt_zzy 发布
[B]我自己编写的LSP文件,总是在程序开始以后选择的实体才有效,而在这之前所选择的实体却识别不到。
可能我上面没有说清楚,下面用具体的例子来说明。
比如用“移动”命令,在没有输入命令的时候,选择一些你准备在?.. [/B]


夹点功能支持基本的cad编辑命令,根本不用编程序
如移动,点已经选择实体的非夹点部分,就可以移动了。同时按ctrl键,就是拷贝。更多的功能可先是点击其中一个夹点,鼠标右键选择要操作的功能
如果程序中实在要用夹点先选,可以用(ssgetfirst)取得夹点选择集
如:
1。选实体
2。程序
(defun  c:mov ()
....
(setq ss (cdr (ssgetfirst)))
(command ".move"  ss  """ .....)
....
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-9-6 16:37:39 | 显示全部楼层
有两个Lisp函数可以实现你需要的效果,一个是(ssget ":E"),一个是(ssgetfirst)
(ssget ":E")函数直接返回"实体都显示为带蓝色的...选择集",但(ssgetfirst)
返回的是含两个选择集的表,要进行再处理.所以一般可使用(ssget ":E")函数完成
预期的操作.例如下面的程序:
(defun c:ex()
        (setq ss(ssget ":E"))
        (command "Change" ss "" "p" "c" 1 "")
        (princ)
)

1.加载程序
2.选择一些你准备改变颜色的实体
3.执行
        command:ex
则原先选择的实体都变成了红色.
供参考.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-9-6 16:47:51 | 显示全部楼层
(sssetfirst nil ss )  设

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

使用道具 举报

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

使用道具 举报

发表于 2003-9-7 10:21:46 | 显示全部楼层
这是主谓操作方式,在你的程序中,一开始就用ssget函数,就能达到目的

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

使用道具 举报

发表于 2003-9-7 12:45:28 | 显示全部楼层
最初由 lijiao 发布
[B]这是主谓操作方式,在你的程序中,一开始就用ssget函数,就能达到目的

(defun c:函数名 ( / )
   (setq ss (ssget ....... [/B]

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

使用道具 举报

已领礼包: 23个

财富等级: 恭喜发财

发表于 2003-9-7 19:53:56 | 显示全部楼层

Re: [求助]:[求助]:[求助]:LSP程序中实体的识别

最初由 lt_zzy 发布
[B]我自己编写的LSP文件,总是在程序开始以后选择的实体才有效,而在这之前所选择的实体却识别不到。
可能我上面没有说清楚,下面用具体的例子来说明。
比如用“移动”命令,在没有输入命令的时候,选择一些你准备在?.. [/B]


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

使用道具 举报

发表于 2003-9-8 08:03:47 | 显示全部楼层
;;try this
(defun C:TT (/ SS)
  (if (not (setq SS (ssget "P")))
    (setq SS (ssget))
  )
  (command "_.ERASE" SS "")
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-9-9 08:05:06 | 显示全部楼层
最初由 lsjjm 发布
[B]不理解你的意思. 有什么实用价值吗? 按照一般的操作习惯, 还是输入MOVE命令后, 再选择实体...
如果你非的这样做,  
(setq ss (ssget))
(vl-cmdf "move" ss "" p1 p2 "")
程序中是这样, 可命令行上操作有什么意义... [/B]


比如说吧,你用格式刷的时候,你可以先选择一个实体,再进行选择命令,或者你可以先输入命令,然后再去选择一个实体。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-9-9 08:06:43 | 显示全部楼层
最初由 PLgis 发布
[B]有两个Lisp函数可以实现你需要的效果,一个是(ssget ":E"),一个是(ssgetfirst)
(ssget ":E")函数直接返回"实体都显示为带蓝色的...选择集",但(ssgetfirst)
返回的是含两个选择集的表,要进行再处理.所以一般可使用(s... [/B]


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

使用道具 举报

发表于 2003-9-10 12:22:26 | 显示全部楼层
":E" 应该是2000以后版本的未公开函数,
有人告诉过我(ssget ":L")是选择未锁定层的物体,那位朋友好像叫LUCAS.记不太清了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-26 19:18 , Processed in 0.303100 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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