明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 18452|回复: 109

如何通过块内一点得到该块所有组成图元名?

  [复制链接]
发表于 2012-3-18 11:51:13 来自手机 | 显示全部楼层 |阅读模式
如有个块名为aa的块,在一张图纸里面有100个,我现在通过一点(此点在某个aa块内部)找到包围此点的块名为aa的图元,并最终得到组成此块的所有图元的图元名表。。。
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2012-3-18 12:16:08 | 显示全部楼层
可使用 nentselp 函数,具体用法自己去查帮助文件!
 楼主| 发表于 2012-3-18 12:20:39 来自手机 | 显示全部楼层
Gu_xl 发表于 2012-3-18 12:16
可使用 nentselp 函数,具体用法自己去查帮助文件!

这么快就回复了,太感谢了。。。
如果再有程序可以参考就更好了,呵呵…………
 楼主| 发表于 2012-3-18 16:14:47 | 显示全部楼层
nentselp
在没有用户输入的情况下,本函数的功能与 nentsel 函数类似
(nentselp [msg] [pt])
参数
msg
用作提示的字符串。如果省略该参数,则显示“选择对象”提示。

pt

选择点。该参数允许在没有用户输入的情况下实现对象选择。

返回值

nentselp 函数返回 4 x 4 转换矩阵,定义如下:
矩阵的前三列指定缩放比例和旋转角度,第四列是一个转换矢量。

好深奥,看不懂~~~
 楼主| 发表于 2012-3-29 23:27:28 | 显示全部楼层
好像秋风大侠的批量打印程序有这样的功能,可惜没有源码!
现在也想通过一点得到包围此点名为aa的块,然后得到其包罗线点表,然后得到点表内围成的所有图元名,不知道如何实现!
发表于 2012-3-29 23:49:25 来自手机 | 显示全部楼层
简直不知所云!
 楼主| 发表于 2012-3-30 06:27:14 来自手机 | 显示全部楼层
Gu_xl 发表于 2012-3-29 23:49
简直不知所云!

就是已知一个图框块名,单击一个图框块里面一点,得到此图框的边界。
发表于 2012-3-30 09:27:22 | 显示全部楼层
本帖最后由 Gu_xl 于 2012-3-30 09:28 编辑
tm20038175 发表于 2012-3-30 06:27
就是已知一个图框块名,单击一个图框块里面一点,得到此图框的边界。


  1. ;;参数 pt = 点 blockname = 块名
  2. (defun getinertBypt  (pt BlockName / h p1  ss sl en ll ur)
  3.   (setq h (getvar 'viewsize)) ;_ 屏幕高
  4.   (setq        p1 (list (car pt) (+ (cadr pt) (* 0.5 h)) 0))
  5.   (setq        ss (ssget "F"
  6.                   (list pt p1)
  7.                   (list (cons 0 "insert") (cons 2 BlockName))))
  8.   (if ss
  9.     (progn
  10.       (repeat (setq i (sslength ss))
  11.         (setq sl (cons (ssname ss (setq i (1- i))) s))
  12.         )
  13.       (setq sl
  14.              (vl-sort sl
  15.                       '(lambda (a b)
  16.                          (< (distance pt (cdr (assoc 10 (entget a))))
  17.                             (distance pt (cdr (assoc 10 (entget b))))
  18.                             )
  19.                          )
  20.                       )
  21.             )
  22.       ;;得到点位置处的块图元名
  23.       (setq en (car sl))
  24.       (vla-getboundingbox (vlax-ename->vla-object en) 'll 'ur)
  25.       (setq ll (vlax-safearray->list ll)
  26.             ur (vlax-safearray->list ur)
  27.             )
  28.       (if (<= (cadr ll) (cadr pt) (cadr ur))
  29.         (progn
  30.       (redraw en 3) ;_ 亮显
  31.       ;;返回值
  32.       en
  33.       )
  34.         )
  35.       )
  36.     )
  37.   )

 楼主| 发表于 2012-3-30 10:58:23 来自手机 | 显示全部楼层
Gu_xl 发表于 2012-3-30 09:27
**** 本内容被作者隐藏 ****

赞一个,就是这个,好!!!
发表于 2012-3-30 11:06:22 | 显示全部楼层
G版的程序是比看的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-20 04:06 , Processed in 0.176205 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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