明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1840|回复: 6

[提问] 如何根据坐标范围获取块内文字内容

[复制链接]
发表于 2016-2-8 18:20 | 显示全部楼层 |阅读模式
本帖最后由 ld_117 于 2016-2-13 00:19 编辑

如题,困扰了好久的问题!
单选可以采用nentsel或者nentselp,但是我想完成鼠标挪至图块内文字上方时动态显示通过文字内容计算出的数据。
论坛以前有人提起过没有结轮,仔细阅读了http://bbs.mjtd.com/thread-84736-1-1.html,也没想到可用的办法。
求大神指点一下思路。
发表于 2016-2-8 19:22 来自手机 | 显示全部楼层
nentselp + grread
 楼主| 发表于 2016-2-9 12:16 | 显示全部楼层
ivde 发表于 2016-2-8 19:22
nentselp + grread

nentselp的参数是根据一个点的的坐标来选择,这个拿鼠标单击还好,通过程序给定参数选择的选择范围实在是太小了,对于文字来说大部分地方都是空的很难选中,还有别的办法吗?
发表于 2016-10-21 13:27 | 显示全部楼层
可以通过坐标转换实现,首先用ssnamex获取ssget选择信息,然后转换到块坐标系下,遍历块内对象,看对象是否在选择范围内,是就选中对象,不是就不选中。这样就能获取选中块内对象的图元名,想做什么都可以了。
给出部分代码做参考,
  1.   (setq enamelst '() ss (ssadd) objlst '())
  2.   (if (setq ssnamexlst(ssnamex (ssget":S"'((0 . "insert"))) 0))
  3.     (progn
  4.       (setq cwf (caar ssnamexlst)xref(cadar ssnamexlst))
  5.       (setq mat (MAT:RefGeom xref))
  6.       (setq mat (append(mapcar 'append(car Mat)(mapcar 'list (cadr mat)))'((0. 0. 0. 1.))))
  7.       (setq tmat (vlax-tMatrix mat))
  8.       (setq remat (MAT:RevRefGeom xref))
  9.       (setq remat (append(mapcar 'append(car remat)(mapcar 'list (cadr remat)))'((0. 0. 0. 1.))))
  10.       (setq tremat (vlax-tMatrix remat))
  11.       (cond
  12.         ((= cwf 1)(setq pt (last(last(car ssnamexlst)))) (setq ent (nentselp pt) ent (if (and ent (= (type (last (last ent))) 'ename))(car ent)))(setq enamelst (cons ent enamelst)))
  13.         ((= cwf 3)
  14.          (setq xy (last ssnamexlst))
  15.          ;(setq pt1 (last (cadr xy))pt2 (last (caddr xy))  pt3 (last (cadddr xy))pt4(last (car(cddddr xy))) )     ;;提取刚才的窗选对角坐标。
  16.          (setq PolyPts (mapcar 'cadr (cdr xy))) ;_ 计算多边形点表
  17.          ;(setq PolyPts (mapcar '(lambda (x)(list (car x)(cadr x)))PolyPts))
  18.          (setq enamelst(append enamelst (Block:Select xref PolyPts '((0 . "*")) "W" remat)))
  19.          )
  20.         )
  21.       )
  22.     )
发表于 2020-5-12 20:10 | 显示全部楼层
springwillow 发表于 2016-10-21 13:27
可以通过坐标转换实现,首先用ssnamex获取ssget选择信息,然后转换到块坐标系下,遍历块内对象,看对象是否 ...

好人,能否给个完整的参考,谢谢
发表于 2020-5-12 20:10 | 显示全部楼层
springwillow 发表于 2016-10-21 13:27
可以通过坐标转换实现,首先用ssnamex获取ssget选择信息,然后转换到块坐标系下,遍历块内对象,看对象是否 ...

好人,能否给个完整的参考,谢谢
发表于 2020-6-2 21:28 | 显示全部楼层
springwillow 发表于 2016-10-21 13:27
可以通过坐标转换实现,首先用ssnamex获取ssget选择信息,然后转换到块坐标系下,遍历块内对象,看对象是否 ...

用ssnamex获取ssget选择信息,多选,取消,执行命令,再次重新按获取的信息进行重新选择框选区域,,有相关的实例吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-25 14:39 , Processed in 1.964613 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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