下午在QQ群里见到的一个标注程式(对两圆上的最近点进行标注),这是我修改过后的
;对两圆上的最近点进行标注(未考虑两圆同心的情况)<BR>;当两圆相交时不适用<BR>(defun c:biaozhu ()<BR> (setq c1 (entsel "\n选取第一个圆:"))<BR> (setq c2 (entsel "\n选取第二个圆:"))<BR> (setq shuxing_c1 (entget (car c1)) ;图元信息列表 <BR> shuxing_c2 (entget (car c2))<BR> )<BR> (setq leixing_c1 (cdr (assoc 0 shuxing_c1)) ;图元类型<BR> leixing_c2 (cdr (assoc 0 shuxing_c2))<BR> )<BR> (if<BR> (and<BR> (or (= leixing_c1 "CIRCLE") (= leixing_c2 "CIRCLE"))<BR> ;判断图元类型是否是圆<BR> (progn (setq r_c1 (cdr (assoc 40 shuxing_c1))<BR> ;得到圆的半径<BR> r_c2 (cdr (assoc 40 shuxing_c2))<BR> center_c1 (cdr (assoc 10 shuxing_c1))<BR> ;得到圆的圆心<BR> center_c2 (cdr (assoc 10 shuxing_c2))<BR> ang_1to2 (angle center_c1 center_c2)<BR> ;得到圆心1到圆心2的角度<BR> ang_2to1 (angle center_c2 center_c1)<BR> neapoint_c1 (polar center_c1 ang_1to2 r_c1)<BR> ;得到圆1上到圆2的最近点<BR> neapoint_c2 (polar center_c2 ang_2to1 r_c2)<BR> )<BR> (command "dimaligned" neapoint_c1 neapoint_c2 neapoint_c2)<BR> ;标注<BR> )<BR> )<BR> (princ)<BR> )<BR>) <P></P><P>如图所示</P> <P>在两个物体都为圆的前提下,先判断两圆的中心距是否大于两半径之和,再进行标注。</P> 缺少两园相切相交的判断! 修改了一下
(defun c:biaozhu ()
(if (setq dxf1 (entget (car (entsel "\n选取第一个圆:"))))
(if (setq dxf2 (entget (car (entsel "\n选取第二个圆:"))))
(progn
(setq leixing_c1 (cdr (assoc 0 dxf1)) ;_图元类型
leixing_c2 (cdr (assoc 0 dxf2))
)
(if (and (or (= leixing_c1 "CIRCLE") (= leixing_c2 "CIRCLE"))) ;_判断图元类型是否是圆
(progn
(setq r_c1 (cdr (assoc 40 dxf1)) ;_得到圆的半径
r_c2 (cdr (assoc 40 dxf2))
center_c1 (cdr (assoc 10 dxf1)) ;_得到圆的圆心
center_c2 (cdr (assoc 10 dxf2))
ang_1to2(angle center_c1 center_c2) ;_得到圆心1到圆心2的角度
ang_2to1(angle center_c2 center_c1)
)
(if
(> (distance center_c1 center_c2) (+ r_c1 r_c2))
(progn
(setq neapoint_c1 (polar center_c1 ang_1to2 r_c1) ;_得到圆1上到圆2的最近点
neapoint_c2 (polar center_c2 ang_2to1 r_c2)
)
(command "dimaligned""none"neapoint_c1
"none"neapoint_c2 "none"
neapoint_c2
)
;标注
)
(princ "\n两圆相交,重新选择!")
)
)
(princ "\n所选物体不是圆,重新选择!")
)
)
)
)
(princ)
) 这几种情况<br><br> 相交,内切,外切,包含,同心 ,相离<br> <p>赞个!哈哈~</p> 哎~~怎么用丫!?加载了,试了命令,不知道怎么用!提示说是否垂直 Y或者N
页:
[1]
2