明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4357|回复: 15

[原创]新鲜出炉 弧长标注(autocad2006以上用户可以无视了)

  [复制链接]
发表于 2008-7-11 22:39:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2008-7-13 2:07:47 编辑

默认命令 DimArc

先选择 需要标注 的圆弧
再选择圆弧标注的起点 终点 再选择标注的位置
继续可连续标注

  1. ;==============================
  2. ;          弧长标注
  3. ;==============================
  4. (defun C:DimArc (/ a1 a2 a3 p1 p2 p3 iDIMDEC c1 r1 r2 arc1)
  5.   (setq iDIMDEC (getvar "DIMDEC"))
  6.   (princ "\n选择需要标注的圆弧")
  7.   (setq ss (ssget '((0 . "ARC"))))
  8.   (if (and ss 0)
  9. ;    ;已选择圆弧
  10.     (progn
  11. ;      ;获取圆弧参数:圆心
  12.       (setq c1 (cdr (assoc 10 (entget (ssname ss 0)))))
  13. ;      ;获取圆弧参数:半径
  14.       (setq r1 (cdr (assoc 40 (entget (ssname ss 0)))))
  15. ;      ;计算圆弧起点,终点坐标
  16. ;      ;(setq arcp1 list((car c1) (cadr c1)))
  17.       (if
  18.         (setq p1 (getpoint "  指定标注起点:"))
  19.         (progn
  20.           (if
  21.             (setq p2 (getpoint "    指定标注终点:"))
  22.             ()
  23.             (exit)
  24.           )
  25.         )
  26.       )
  27.       (if (setq p3 (getpoint "\n指定标注位置:"))
  28.         (progn
  29.          (setq r2 (distance c1 p3))      ;标注半径
  30. ;        ;计算角度,弧长
  31.           (setq a1 (angle c1 p1) a2 (angle c1 p2) a3 (angle c1 p3))
  32.           (if (and (< a3 (max a1 a2)) (> a3 (min a1 a2)))
  33.           ;范围内为正 范围外为负
  34.             (setq fw 1)
  35.             (setq fw -1)
  36.           )
  37.            ;逆时针为负  顺时针为正
  38.           (setq f (* (- a1 a2) fw))
  39.           (if (> f 0)
  40.             (setq arc1 (* r1 (if (> a2 a1)(- (+ pi pi a1) a2) (- a1 a2))))
  41.             (setq arc1 (* r1 (if (> a2 a1) (- a2 a1) (- (+ pi pi a2) a1))))
  42.           )
  43.          
  44.           (if (> f 0)
  45.             (if (< a1 a2)
  46.               (setq a3 (/ (+ a1 (- a2 (* 2 pi))) 2))
  47.               (setq a3 (/ (+ a1 a2) 2))
  48.              )
  49.                
  50.              (if (< a1 a2)
  51.                (setq a3 (/ (+ a1 a2) 2))
  52.                (setq a3 (/ (+ a2 (- a1 (* 2 pi))) 2))
  53.              )
  54.            )
  55.            (setq
  56.              p3 (list
  57.                   (+ (car c1) (* r2 (cos a3)))
  58.                   (+ (cadr c1) (* r2 (sin a3)))
  59.                 )
  60.            )
  61.          
  62.          
  63. ;          ;绘制弧长标注
  64.           (command "dimangular" "" c1 p1 p2 "t" (strcat "{\\H0.75x;\\W2.5;\\C0;⌒}\\P" (rtos arc1 2 iDIMDEC)) p3)
  65.           (while p2
  66.             (setq p1 p2)
  67.             (setq p2 (getpoint "\n指定标注下一点:"))
  68.             (setq a1 (angle c1 p1) a2 (angle c1 p2))
  69. ;            计算连续标注弧长
  70.             (if (> f 0)
  71.               (setq arc1 (* r1 (if (> a2 a1)(- (+ pi pi a1) a2) (- a1 a2))))
  72.               (setq arc1 (* r1 (if (> a2 a1) (- a2 a1) (- (+ pi pi a2) a1))))
  73.             )
  74. ;            计算连续标注位置坐标
  75.             (if (> f 0)
  76.                (if (< a1 a2)
  77.                 (setq a3 (/ (+ a1 (- a2 (* 2 pi))) 2))
  78.                 (setq a3 (/ (+ a1 a2) 2))
  79.                )
  80.                
  81.                (if (< a1 a2)
  82.                  (setq a3 (/ (+ a1 a2) 2))
  83.                  (setq a3 (/ (+ a2 (- a1 (* 2 pi))) 2))
  84.                )
  85.              )
  86.             (setq
  87.                 p3 (list
  88.                    (+ (car c1) (* r2 (cos a3)))
  89.                    (+ (cadr c1) (* r2 (sin a3)))
  90.                    )
  91.             )
  92. ;            绘制标注
  93.             (command "dimangular" "" c1 p1 p2 "t" (strcat "{\\H0.75x;\\W2.5;\\C0;⌒}\\P" (rtos arc1 2 iDIMDEC)) p3)
  94.           )
  95.         )
  96.       )
  97.     )
  98. ;    ;未选择圆弧
  99.     (princ "退出:未选择需要标注的圆弧")
  100.   )
  101.   (princ)
  102. )

本帖子中包含更多资源

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

x

评分

参与人数 1金钱 +5 收起 理由
langjs + 5 不错阿,学习

查看全部评分

"觉得好,就打赏"
    共1人打赏
发表于 2020-11-19 11:24:43 | 显示全部楼层
将角度改为弧长,改变弧长后标注不会跟着变化.能解决这个问题吗?
发表于 2018-12-5 12:50:19 | 显示全部楼层
不错的帖子 支持一下
发表于 2018-12-5 12:55:28 | 显示全部楼层
不错,多谢楼主分享
发表于 2008-7-24 23:18:00 | 显示全部楼层
谢谢!
发表于 2008-7-25 08:55:00 | 显示全部楼层

为什么网上见到的弧长标注程序都是这种标注方式?是行业制图标准不同吗?

建筑制图标准的弧长标注应该是这样的:(见YAD建筑软件v8.0的弧长标注程序 

本帖子中包含更多资源

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

x
发表于 2008-7-25 09:38:00 | 显示全部楼层

程序不错,好用.

发表于 2008-8-1 12:29:00 | 显示全部楼层
好用好用,哈哈~~
发表于 2008-9-14 14:23:00 | 显示全部楼层
谢谢!
发表于 2011-1-15 23:10:04 | 显示全部楼层
好东西谢谢,学习中
发表于 2012-4-4 20:15:33 | 显示全部楼层
为何我标出来的尺寸小圆弧在尺寸数字的前面而非上面
发表于 2012-4-4 20:17:00 | 显示全部楼层
额。知道了,已经改好了,谢谢
发表于 2012-12-6 16:11:52 | 显示全部楼层
没法批量,不实用!有改进的空间!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-17 19:41 , Processed in 0.200166 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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