明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2227|回复: 16

[已解答] 点选块,如何求出这块内的圆的圆心点和该块的插入点?我想在这两点间自动标出尺寸!

[复制链接]
发表于 2015-7-29 16:12:38 | 显示全部楼层 |阅读模式
如图,求块的插入点我当然会,但求那个块内圆的圆心点不会了。求帮忙

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2015-7-29 16:25:52 | 显示全部楼层
我是想用(car (entsel))点选块得到块图元名,再跟据块图元名自动找出块插入点和里面的圆心点,再根据这两点标出尺寸。整个过程只需点选一下图块就行了
发表于 2015-7-29 16:47:59 | 显示全部楼层
进图块内部,读取圆的位置 在换算一下坐标
 楼主| 发表于 2015-7-29 17:04:03 | 显示全部楼层
鱼与熊掌 发表于 2015-7-29 16:47
进图块内部,读取圆的位置 在换算一下坐标

就是这个不会,如何进块的内部?
发表于 2015-7-29 17:30:18 | 显示全部楼层
(setq SS (nentsel))
(setq P1 (osnaP (cadr SS) "CEN"))
(setq P2 (osnaP (cadr SS) "INS"))
发表于 2015-7-29 17:41:27 | 显示全部楼层
  1. (defun sk_get_circle_cen (en / obj x cen)
  2.   (if (and en
  3.            (= (type en) 'ENAME)
  4.       )
  5.     (progn
  6.       (vlax-for        X
  7.                 (vla-item
  8.                   (vla-get-blocks
  9.                     (vla-get-ActiveDocument (vlax-get-acad-object))
  10.                   )
  11.                   (vla-get-name (setq OBJ (vlax-ename->vla-Object en)))
  12.                 )
  13.         (if (wcmatch (vla-get-ObjectName X) "AcDbCircle")
  14.           (setq cen (vla-get-center X ))
  15.         )
  16.       )
  17.       (if cen (vlax-safearray->list(vlax-variant-value cen )))
  18.     )
  19.   )
  20. )
  21. ;;获取等比缩放块块内圆心,非等比缩放不正确
  22. ;;code by edata@mjtd 2015年7月29日
  23. (defun c:tt(/ _dxf en cen1 ds a41 a50 p10 cen2)
  24.   (defun _dxf(e i)(cdr(assoc i (entget e))))
  25.   (setq en(car(entsel)))
  26.   (setq cen1(sk_get_circle_cen en))
  27.   (setq ds(distance '(0 0 0) cen1))
  28.   (setq a41(_dxf en 41)
  29.         a50(_dxf en 50)
  30.         p10(_dxf en 10)
  31.         )
  32.   (setq cen2(polar p10 (+ (angle '(0 0 0) cen1) a50) (* ds a41)))
  33.   (entmake (list '(0 . "CIRCLE") (cons 10 cen2) (cons 40 100)))
  34.   )

发表于 2015-7-29 19:25:54 | 显示全部楼层
试试用捕捉 "cen"
发表于 2015-7-29 21:38:26 | 显示全部楼层
块内是否只有一个圆?块内有多个圆的时候咋办?
建议用nentselp来选择块,选块的时候直接选要标注的圆。nentselp的返回值包括块插入的图元名以及选择的子图元图元名和子图元相应的转换矩阵,通过子图元图元名和转换矩阵可以找出圆心在世界坐标系位置。通过图元名可以找出块插入点的世界坐标系位置,标注就很容易了。
发表于 2015-7-30 08:22:03 | 显示全部楼层
  1. (defun c:tt ()
  2. (setq SS (nentsel))
  3. (command "_.DIMALIGNED" (osnaP (cadr SS) "CEN") (osnaP (cadr SS) "INS") PAUSE)
  4. (princ)
  5. )

本帖子中包含更多资源

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

x
 楼主| 发表于 2015-7-31 10:24:07 | 显示全部楼层
ymcui 发表于 2015-7-30 08:22

谢谢,代码简短,但还不是能满足我要求,我要求是点击图块的任何地方就会标出尺寸!不需要点击块中的圆
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-21 16:09 , Processed in 0.190113 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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