明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1420|回复: 23

[提问] 如何取得标注尺寸线的中点?

[复制链接]
发表于 2020-3-18 02:08 | 显示全部楼层 |阅读模式

如何取得标注
"DIMENSION"尺寸线的中点点位?


本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2020-3-18 12:58 | 显示全部楼层
(defun c:tt (/ name pt ss t-get-dim-centre)
        (defun T-get-dim-centre (name / ang dxf pt1 pt13 pt14 pt2)
                (setq dxf (entget name))
                (setq pt13 (cdr (assoc 13 dxf)))
                (setq pt14 (cdr (assoc 14 dxf)))
                (setq ang (angle pt13 pt14));获取弧度
                (setq pt1 (polar (cdr (assoc 10 dxf)) ang (/(distance pt13 pt14) 2)))
                (setq pt2 (polar (cdr (assoc 10 dxf)) ang (- (/ (distance pt13 pt14) 2))))
                (if (<
                                        (+ (distance pt1 pt13) (distance pt1 pt14))
                                        (+ (distance pt2 pt13) (distance pt2 pt14))
                                )
                        pt1
                        pt2
                )
        )
        (if (setq ss (ssget '((0 . "DIMENSION"))))
                (progn
                        (while (setq name (ssname ss 0))
                                (setq pt (T-get-dim-centre name))
                                (command "CIRCLE" pt 100)
                                (ssdel name ss)
                        )
                )
        )
)

线性标注还要再判断下
对齐标注没问题
回复 支持 1 反对 0

使用道具 举报

发表于 2024-1-15 22:02 | 显示全部楼层
; ;; 过13点平行于10-14的平行线与过10点垂直于10-14的线交点为10a
; ;; 10与10a的中点即为所求点
(defun c:qzd()
    (setvar "osmode" 0)
    (while (setq ssa (ssget ":S" '((0 . "DIMENSION"))))
        (setq ent (ssname ssa 0))
        (setq dxf (entget ent))
        (setq p10 (cdr (assoc 10 dxf)))
        (setq p13 (cdr (assoc 13 dxf)))
        (setq p14 (cdr (assoc 14 dxf)))
        (setq ang0 (angle p10 p14))
        (setq ang1 (+ ang0 (* 0.5 pi)))
        (setq p10a (inters p13 (polar p13 ang0 1.0)
                           p10 (polar p10 ang1 1.0)
                           nil
                   )
        )
        (setq pmid (mapcar '(lambda(x y)(* 0.5 (+ x y))) p10 p10a))
        (command "_pline"  pmid (polar pmid ang0 2.0) "")
    )
    (princ)
)
发表于 2020-3-18 08:02 | 显示全部楼层
获取getboundingbox之后在计算中点能行吗
 楼主| 发表于 2020-3-18 08:33 | 显示全部楼层
jun353835273 发表于 2020-3-18 08:02
获取getboundingbox之后在计算中点能行吗

这个方法不行,取不到这个点,这个点很重要,但是,有些插件作的是复合实体,很难有个代码,普遍奏效。
发表于 2020-3-18 09:21 | 显示全部楼层
dxf码:13(A)和14(B)记录两标点,10(D)记录标拉伸出来的其中一点。求得中点M,D对AB的垂点N,M向D点方向偏移ND即为所求点。

点评

能标个图示点位吗?  发表于 2020-3-18 10:21
 楼主| 发表于 2020-3-18 09:30 | 显示全部楼层
cghdy 发表于 2020-3-18 09:21
dxf码:13(A)和14(B)记录两标点,10(D)记录标拉伸出来的其中一点。求得中点M,D对AB的垂点N,M向D点方向偏移 ...

我这几个点反复验证,就是求不对怎么?
发表于 2020-3-18 10:20 | 显示全部楼层
尘缘一生 发表于 2020-3-18 09:30
我这几个点反复验证,就是求不对怎么?

能否发码我看看
 楼主| 发表于 2020-3-18 10:24 | 显示全部楼层
cghdy 发表于 2020-3-18 10:20
能否发码我看看

我没写成篇,我就验证里面 的 10,11,13,14,两两中间了,搞不清点位,所以没试出来。
发表于 2020-3-18 10:38 | 显示全部楼层
尘缘一生 发表于 2020-3-18 10:24
我没写成篇,我就验证里面 的 10,11,13,14,两两中间了,搞不清点位,所以没试出来。

11是文字的位置,不要混淆进来
发表于 2020-3-18 10:41 | 显示全部楼层
看看这图你就清楚了

本帖子中包含更多资源

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

x

点评

我求这个点,想弄个“智能中点线”出来,不是智能中心线,这个有了。  发表于 2020-3-18 11:00
成功了,就是不知道具有普遍性吗,别天正,什么的实体,崩溃。  发表于 2020-3-18 10:58
 楼主| 发表于 2020-3-18 10:57 | 显示全部楼层
start4444 发表于 2020-3-18 10:41
看看这图你就清楚了

搞出来了,有点位就知道了




本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-4-28 12:34 , Processed in 0.372261 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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