明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 13051|回复: 53

请教如何获取夹点编辑的当前图元?

  [复制链接]
发表于 2012-4-11 13:22:25 | 显示全部楼层 |阅读模式
1明经币
本帖最后由 cheng5276 于 2012-4-11 13:24 编辑


如上图:先框选了一堆对象,然后夹点拖动了其中的某个,如何准确获得该图元?(ssget "i")(ssget "p")只能取这所有的。
目前我的思路
1、(setq ss0 (ssget "i"))
1、GRREAD取临时点PT0 (因PT0几乎不会在该图元上,所以无法通过NENTSELP去取图元)
2、由PT0构建一个范围框 pt1 pt2,(这个很难界定,没有统一性,也不能通过 (getvar "pickbox") 去取因为PT0的偏移量往往是大于这 个值的)
3、(setq ss1 (ssget "c" pt1 pt2))
4、求SS0 SS1 的交集图元,如演示的比较简单的图面,应该能够取到这个对象,但是如果图元叠加、交叉较多的话,肯定就不准确了。

拜请各位大侠指点,有无比较简单的函数或变量去取?我实在是没查到,也没搜到。
附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

程序运行后,在每一次拉伸命令后,读取变量GRIP_STRETCH_SEL(我的程序定义的变量,不是系统变量),这个就是拉伸刚操作的图元的选择集,,,, 不知道你要读取这个做什么?
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2012-4-11 13:22:26 | 显示全部楼层
本帖最后由 danxingpen 于 2012-4-18 20:31 编辑

程序运行后,在每一次拉伸命令后,读取变量GRIP_STRETCH_SEL(我的程序定义的变量,不是系统变量),这个就是拉伸刚操作的图元的选择集,,,,
不知道你要读取这个做什么?

本帖子中包含更多资源

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

x

点评

同意,这种东西何必编译呢,放出来不是更好吗  发表于 2012-4-25 08:35
像这种东西,作为技术交流,最好放出源码,藏着掖着也没啥意思!  发表于 2012-4-24 21:30

评分

参与人数 1明经币 +1 金钱 +20 收起 理由
cheng5276 + 1 + 20 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2012-4-11 13:32:00 | 显示全部楼层
判断图元类别用IF就行,
点的话用组码可以,给你提供我以前弄的一些组码的程序句:
  1.     (defun c:kk()
  2.          (setq name (car (entsel)));提取图名
  3.          (setq ent (entget name));提取图形属性串列
  4.          (entmod (subst (cons 8 "0") (assoc 8 ent) ent))  ;替换图层例子 ,ent为图形属性串列,
  5. cone为建新表,subst为替换,利用entmod修改成指定的0层
  6.          (entmod (subst (cons 62 2) (assoc 62 ent) ent))) ;
  7.          (entmod (subst(cons 10 (getpoint"\n指定新起点")) (assoc 10 ent) ent));改起点
  8.          (entmod (subst (cons 40 100) (assoc 40 ent) ent)));改成半径100的圆
  9.          (entmod (subst(cons 10 (getpoint"\n指定新圆心")) (assoc 10 ent) ent)));改圆心
  10.          (entmod (subst(cons 10 (getpoint (cdr (assoc 10 ent))"\n指定新圆心")) (assoc 10 ent
  11. ) ent)));拉一条线改圆心(美观)
  12.          (entmod (subst (cons 1 "开心CAD外挂") (assoc 1 ent) ent)));替换文字

评分

参与人数 1明经币 +1 收起 理由
cheng5276 + 1 谢谢!虽然不是我要的

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2012-4-11 19:41:25 | 显示全部楼层
谢谢开心的回复!
不过你理解错我的意思了。
我需要在命令反应器 当执行"GRIP_STRETCH"命令时,才判断当前处于夹点编辑状态的图元对象。
如果我事先用的是单选,自然就是很简单,但问题是,当我事先(CAD框选)了狠多图元的情况下,如何能够获得其中的我正在执行夹点拖动的图元?
回复

使用道具 举报

 楼主| 发表于 2012-4-17 20:39:19 | 显示全部楼层
请高手指点啊
回复

使用道具 举报

发表于 2012-4-17 22:07:43 | 显示全部楼层
本帖最后由 danxingpen 于 2012-4-17 22:25 编辑

在反应器回调函数里面
(setq selobj(vla-get-ActiveSelectionSet (vla-get-activedocument (vlax-get-acad-object))))
呵呵,好像不对,如果你是要夹点编辑的的话,可能还是要对象反应器而不是命令反应器1
回复

使用道具 举报

发表于 2012-4-17 23:08:48 | 显示全部楼层
说明一下你的具体需求?感觉没必要弄反应器之类的,建议调整一下程序的思路
回复

使用道具 举报

发表于 2012-4-18 01:06:36 | 显示全部楼层
在反应器回调函数中,对当前选择集进行判断是否有只读对象,这个只读对象就是拉伸的对象.
回复

使用道具 举报

 楼主| 发表于 2012-4-18 20:56:46 | 显示全部楼层
对,就是这个东东,请教您是怎么做到的?能提供核心源码不?
回复

使用道具 举报

 楼主| 发表于 2012-4-21 23:09:56 | 显示全部楼层
再次感谢 danxingpen大侠的指点
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-20 23:08 , Processed in 0.260050 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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