求智能圆标注(已解决!谢谢ZZXXQQ 版主热情帮助!)
本帖最后由 669423907 于 2011-5-30 23:23 编辑1:选择的对象大于或等于 4份之3圆时为螺纹;
2:小于4份之3时为半径;
3:整圆时为直径;
4:可以输入数量,默认不输入;
5:标注完一个后可以继续下一个;
6:空格或esc退出。
不知是否能达到这样的效果?
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/UG9`@AH2%L{}S0N6}3E~FO2.gif
好棒的程序 编程步骤:
1、程序循环提示选择对象(坐标点);
2、根据1所得坐标点,取得最近点;未取得最近点程序退出,转第10步
3、由最近点用(ssget "C" pt pt)取得实体;
4、提示输入:个数(前缀)“N-”;
5、获得实体数据表;
6、如果实体是圆弧,读取实体数据,计算并判断是否为四分之三圆;不是弧转第9步
7、如果是四分之三圆;前缀尾部加字母M,并计算直径,用直径标注进行螺纹标注;转第1步
8、用半径标注标注圆弧;转第1步
9、用直径标注标圆;转第1步
本帖最后由 ZZXXQQ 于 2011-5-30 09:04 编辑
试下看
;圆,圆弧智能标注 明经 ZZXXQQ 2011.5.28
(defun c:tt ()
(while (and (setq s1 (entsel "\n选择圆或圆弧 :"))
(setq ent (entget (car s1)))
(wcmatch (setq tn (cdr(assoc 0 ent))) "ARC,CIRCLE"))
(setq pt1 (cadr s1))
(setq qztxt (if (setq qz (getint "\n个数 :")) (strcat (itoa qz) "-") ""))
(if (= tn "ARC") (progn
(setq r (cdr(assoc 40 ent)))
(command ".LENGTHEN" (car s1) "")
(if (>= (/ (getvar "PERIMETER") r) (* 1.5 pi)) (progn
(setq qztxt (strcat qztxt "M" (rtos (+ r r) 2)))
(command "DIMDIAMETER" pt1 "T" qztxt PAUSE)
)
(command "DIMRADIUS" pt1 "T" (strcat qztxt "<>") PAUSE)
)
)
(command "DIMDIAMETER" pt1 "T" (strcat qztxt "<>") PAUSE)
)
)
(princ)
)
回复 ZZXXQQ 的帖子
非常感谢版主热情帮助!只不过还有两个小问题没解决:
1:选择的对象大于或等于 4份之3圆时为螺纹(尺寸前加 M ,CAD画的螺纹为4份之3圆,
也就是270度,Pro/E画的螺纹为大于4份之3圆为300度);
2:小于4份之3时为半径; 那就把第14行的判断自行改下吧 回复 ZZXXQQ 的帖子
谢谢,我试试看! 回复 ZZXXQQ 的帖子
小生愚笨,看不懂啊!还望版主明点! (if (equal (abs (- ed st)) (* 1.5 pi) 0.01) (progn
改成
(if (or (equal (abs (- ed st)) (* 1.5 pi) 0.01) (equal (abs (- ed st)) (/ (* pi 5) 6) 0.01)) (progn
本帖最后由 669423907 于 2011-5-28 00:26 编辑
回复 ZZXXQQ 的帖子
还是标不出 M 啊!不知哪里有问题? 版主帮帮忙啦,问题尚未解决啊!