琴剑江山_10184 发表于 2014-8-29 16:11:48

快速标公差

我是菜鸟级的新手,看到别人的源码,修改了一下

有些不好的地方,忘指正



(defun c:at()
(setq gett (getstring "\n请选择标公差类型 [对称公差(D)/默认(极限公差)]:"))
(setq gett (strcase gett));字符串转换大小写
(if (= gett "D") (progn
                     (defun vla-ssname (ss index)
    (vlax-ename->vla-object (ssname ss index))
)
(setq %%g1 (getdist "\n输入[对称公差]±:"))
(if (null %%g1) (setq %%g1 %%kc)
    );if
(princ "\n选择尺寸:")
(while (setq ss (ssget ":S" '((0 . "DIMENSION"))))
(repeat (setq i (sslength ss))
    (setq vobj (vla-ssname ss (setq i (1- i))))
    (vla-put-ToleranceDisplay vobj acTolDeviation)
    (vla-put-ToleranceUpperLimit vobj %%g1)
    (vla-put-ToleranceLowerLimit vobj %%g1)
)
    );while
(setq %%kc %%g1);用这种方法,获的上次输入值,应该还有更好的方法
(princ)
(princ "\n标公差已完成")
(princ)
                  );progn
    );if
(if (= gett "") (progn
                  (defun vla-ssname (ss index)
    (vlax-ename->vla-object (ssname ss index))
)
(setq %sk1 (getdist "\n输入[正公差]+:"))
(if (null %sk1) (setq %sk1 %am1)
    );if
(setq %sk2 (getdist "\n输入[负公差]-:"))
(if (null %sk2) (setq %sk2 %wk2)
    );if
(princ "\n选择尺寸:")
(while (setq ss (ssget ":S" '((0 . "DIMENSION"))))
(repeat (setq i (sslength ss))
    (setq vobj (vla-ssname ss (setq i (1- i))))
    (vla-put-ToleranceDisplay vobj acTolDeviation)
    (vla-put-ToleranceUpperLimit vobj %sk1)
    (vla-put-ToleranceLowerLimit vobj %sk2)
)
    );while
(setq %am1 %sk1
        %wk2 %sk2);用这种方法,获的上次输入值,应该还有更好的方法
(princ)
(princ "\n标公差已完成")
(princ)
);progn
    );if
);defun




VBALISPER 发表于 2014-8-29 16:13:56

我来学习一下.

琴剑江山_10184 发表于 2014-8-29 16:15:01

恐龙大师,你还要来学习啊,给我指正错误吧

恕放之生命 发表于 2014-8-29 16:21:23

支持源码。谢谢分享。

yoyoho 发表于 2014-8-29 16:25:37

感谢 琴剑江山_10184 分享程序!

maiko 发表于 2014-9-1 22:12:28

改成一个函数不更好一点

琴剑江山_10184 发表于 2014-9-2 11:20:44

maiko 发表于 2014-9-1 22:12 static/image/common/back.gif
改成一个函数不更好一点

改成什么函数,指定下。谢谢

maiko 发表于 2014-9-2 11:28:50

本帖最后由 maiko 于 2014-9-2 11:48 编辑

                     

kkt123 发表于 2015-2-10 09:22:13

我来学习一下.

lengyan 发表于 2015-9-5 10:54:02

太感谢啦,
页: [1]
查看完整版本: 快速标公差