明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3853|回复: 10

[已解答] 如何取图框块的范围

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

之前公司用的图框是标准的块,插入中心点在图框中间,现在发现一些老图纸插入点跑到别的地方了,所以通过块的中心点计算范围不行了,还有什么办法选择块后可以得到图框的对角呢?请各位大神帮帮忙,谢谢!

本帖子中包含更多资源

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

x
发表于 2015-9-17 12:22:57 | 显示全部楼层
  1. ;;;;通用函数开始

  2. (defun minmm_ss->enlist (ss / lst n en)
  3.   (setq n -1)
  4.   (while (setq en (ssname ss (setq n (1+ n))))
  5.     (setq lst (cons en lst))
  6.   )
  7. )
  8. (defun minmm_objBox (obj / minpoint maxpoint)
  9.   (vla-GetBoundingBox obj 'minpoint 'maxpoint)
  10.                                         ;取得包容图元的最大点和最小点
  11.   (setq minpoint (vlax-safearray->list minpoint)) ;把变体数据转化为表
  12.   (setq maxpoint (vlax-safearray->list maxpoint)) ;把变体数据转化为表
  13.   ;;;;GetBoundingBox返回的是WCS,需转换为用户坐标系ucs
  14.   ;;;2011.08.22 08:30修改此通用函数
  15.   ;;;感谢明经通道的caoyin版主,xshrimp大侠的指点!
  16.   (setq minpoint (trans minpoint 0 1))
  17.   (setq maxpoint (trans maxpoint 0 1))
  18. (setq obj (list minpoint maxpoint));;;组合成点表
  19. )
  20. (defun minmm_ssbox (ss / boxlst maxlst minlst objlst)
  21.   (setq objlst (mapcar 'vlax-ename->vla-object (minmm_ss->enlist ss)))
  22.   (setq boxlst (mapcar 'minmm_objBox objlst))
  23.   (setq minlst (mapcar 'car boxlst))
  24.   (setq maxlst (mapcar 'cadr boxlst))
  25. (list
  26.    (apply 'mapcar (cons 'min minlst))
  27.    (apply 'mapcar (cons 'max maxlst))
  28.   )
  29. )
  30. ;;;通用函数结束


  31. (setq ss (SSGET '((0 . "insert"))));;;选择对象

  32. (setq shulist (minmm_ssbox ss))
  33. (setq p1 (car shulist ));;;左下角
  34. (setq p2 (cadr shulist ));;;右上角
  35. ;;;mx┏━a━━━┓p2
  36. ;;;  ┃         ┃
  37. ;;;   b          b
  38. ;;;  ┃         ┃
  39. ;;;  ┃         ┃
  40. ;;;p1┗━a━━━┛my
  41.   (setq px1 (car p1))                       ; 取得p1坐标的x值
  42.   (setq py1 (cadr p1))                       ; 取得p1坐标的y值
  43.   (setq px2 (car p2))                       ; 取得p2坐标的x值
  44.   (setq py2 (cadr p2))                       ; 取得p2坐标的y值
  45.   
  46.   (setq mx (list px1 py2))               ; 求得mx坐标值
  47.   (setq my (list px2 py1))               ; 求得my坐标值
  48.   (setq a  (distance mx p2));;;mx点 ,p2点之间的距离:横向的距离值
  49.   (setq b  (distance p1 mx));;;p1点 ,mx点之间的距离:纵向的距离值

评分

参与人数 1金钱 +10 收起 理由
hbgsw + 10 很给力!

查看全部评分

发表于 2015-9-17 16:14:51 | 显示全部楼层
感谢 zctao1966 分享程序!
发表于 2015-9-17 16:27:17 | 显示全部楼层
yoyoho 发表于 2015-9-17 16:14
感谢 zctao1966 分享程序!

总是这一句,专业收集器啊
发表于 2015-9-18 08:50:21 | 显示全部楼层
学习一下程序
发表于 2015-11-18 14:02:43 | 显示全部楼层
如何使包围盒中不包含动态块中隐藏对象?
发表于 2015-11-18 14:10:13 | 显示全部楼层
zctao1966 发表于 2015-9-17 12:22

有的图元对象不支持vla-GetBoundingBox,比如直接插入一个DWG文件进来,经常会得不到任何东东,不知道该如何解决,另外,对于MTEXT,它得到的范围好象也不是所显示文字内容部分的范围,也是一直不知道如何解决
发表于 2015-11-19 07:54:11 | 显示全部楼层
llsheng_73 发表于 2015-11-18 14:10
有的图元对象不支持vla-GetBoundingBox,比如直接插入一个DWG文件进来,经常会得不到任何东东,不知道该如 ...

vla-GetBoundingBox 我感觉缺少字体会有点影响!
发表于 2015-11-19 11:42:42 | 显示全部楼层
xiaolong1487 发表于 2015-11-19 07:54
vla-GetBoundingBox 我感觉缺少字体会有点影响!

这个倒没太注意过
发表于 2016-1-28 23:56:51 | 显示全部楼层
llsheng_73 发表于 2015-11-18 14:10
有的图元对象不支持vla-GetBoundingBox,比如直接插入一个DWG文件进来,经常会得不到任何东东,不知道该如 ...

有范例文件吗、
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-15 08:48 , Processed in 0.219529 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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