明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3405|回复: 14

下午在QQ群里见到的一个标注程式(对两圆上的最近点进行标注),这是我修改过后的

  [复制链接]
发表于 2006-3-12 22:59:00 | 显示全部楼层 |阅读模式
;对两圆上的最近点进行标注(未考虑两圆同心的情况)
;当两圆相交时不适用
(defun c:biaozhu ()
  (setq c1 (entsel "\n选取第一个圆:"))
  (setq c2 (entsel "\n选取第二个圆:"))
  (setq shuxing_c1 (entget (car c1)) ;图元信息列表             
 shuxing_c2 (entget (car c2))
  )
  (setq leixing_c1 (cdr (assoc 0 shuxing_c1)) ;图元类型
 leixing_c2 (cdr (assoc 0 shuxing_c2))
  )
  (if
    (and
      (or (= leixing_c1 "CIRCLE") (= leixing_c2 "CIRCLE"))
     ;判断图元类型是否是圆
      (progn (setq r_c1        (cdr (assoc 40 shuxing_c1))
     ;得到圆的半径
     r_c2        (cdr (assoc 40 shuxing_c2))
     center_c1   (cdr (assoc 10 shuxing_c1))
     ;得到圆的圆心
     center_c2   (cdr (assoc 10 shuxing_c2))
     ang_1to2    (angle center_c1 center_c2)
     ;得到圆心1到圆心2的角度
     ang_2to1    (angle center_c2 center_c1)
     neapoint_c1 (polar center_c1 ang_1to2 r_c1)
     ;得到圆1上到圆2的最近点
     neapoint_c2 (polar center_c2 ang_2to1 r_c2)
      )
      (command "dimaligned" neapoint_c1 neapoint_c2 neapoint_c2)
     ;标注
      )
    )
     (princ)
  )
)
 楼主| 发表于 2006-3-12 23:15:00 | 显示全部楼层

如图所示

本帖子中包含更多资源

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

x
发表于 2006-3-13 07:51:00 | 显示全部楼层

在两个物体都为圆的前提下,先判断两圆的中心距是否大于两半径之和,再进行标注。

发表于 2006-3-13 12:21:00 | 显示全部楼层
缺少两园相切相交的判断!
发表于 2006-3-13 12:39:00 | 显示全部楼层
修改了一下
  1. (defun c:biaozhu ()
  2.   (if (setq dxf1 (entget (car (entsel "\n选取第一个圆:"))))
  3.     (if (setq dxf2 (entget (car (entsel "\n选取第二个圆:"))))
  4.       (progn
  5. (setq leixing_c1 (cdr (assoc 0 dxf1)) ;_图元类型
  6.        leixing_c2 (cdr (assoc 0 dxf2))
  7. )
  8. (if (and (or (= leixing_c1 "CIRCLE") (= leixing_c2 "CIRCLE"))) ;_判断图元类型是否是圆
  9.    (progn
  10.      (setq r_c1     (cdr (assoc 40 dxf1)) ;_得到圆的半径
  11.     r_c2     (cdr (assoc 40 dxf2))
  12.     center_c1 (cdr (assoc 10 dxf1)) ;_得到圆的圆心
  13.     center_c2 (cdr (assoc 10 dxf2))
  14.     ang_1to2  (angle center_c1 center_c2) ;_得到圆心1到圆心2的角度
  15.     ang_2to1  (angle center_c2 center_c1)
  16.      )
  17.      (if
  18.        (> (distance center_c1 center_c2) (+ r_c1 r_c2))
  19.         (progn
  20.    (setq neapoint_c1 (polar center_c1 ang_1to2 r_c1) ;_得到圆1上到圆2的最近点
  21.          neapoint_c2 (polar center_c2 ang_2to1 r_c2)
  22.    )
  23.    (command "dimaligned"  "none"  neapoint_c1
  24.      "none"  neapoint_c2 "none"
  25.      neapoint_c2
  26.     )
  27.      ;标注
  28.         )
  29.         (princ "\n两圆相交,重新选择!")
  30.      )
  31.    )
  32.    (princ "\n所选物体不是圆,重新选择!")
  33. )
  34.       )
  35.     )
  36.   )
  37.   (princ)
  38. )
发表于 2006-3-13 13:15:00 | 显示全部楼层
这几种情况

发表于 2006-3-13 13:18:00 | 显示全部楼层
相交,内切,外切,包含,同心 ,相离
发表于 2006-3-13 13:45:00 | 显示全部楼层

本帖子中包含更多资源

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

x
发表于 2010-9-20 00:01:00 | 显示全部楼层

赞个!哈哈~

发表于 2010-9-20 00:19:00 | 显示全部楼层
哎~~怎么用丫!?加载了,试了命令,不知道怎么用!提示说是否垂直      Y  或者N
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-2 16:26 , Processed in 0.198399 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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