lisp 画双线带倒圆角_VisualLisp增加公差、消除重合直线圆弧

1 (vl-load-com)2

3 ;;;标注文字增加公差4 ;;;命令:GV5 ;;;极限公差文字高度可设置成主尺寸文字高度的任意比例,缺省值为0.7

6 ;;;当上公差与下公差相等时为对称公差7 (defun c:gv(/ sztoleranceheightscale rtoleranceheightscale sztoleranceupperlimit %sk1 sztolerancelowerlimit %sk2 nprecision ss i vobj ename elist)8 (Berni_Start)9

10 (cond11 ((setq szToleranceHeightScale (vl-registry-read "HKEY_CURRENT_USER\\Software\\Autodesk\\AutoCAD\\Yx_Zrw" "ToleranceHeightScale")))12 (T13 (setq szToleranceHeightScale "0.7")14 (vl-registry-write "HKEY_CURRENT_USER\\Software\\Autodesk\\AutoCAD\\Yx_Zrw" "ToleranceHeightScale" "0.7")15 )16 )17 (setq rToleranceHeightScale (atof szToleranceHeightScale))18 (vl-registry-write "HKEY_CURRENT_USER\\Software\\Autodesk\\AutoCAD\\Yx_Zrw" "ToleranceHeightScale" (vl-princ-to-stringrToleranceHeightScale))19 (cond20 ((setq szToleranceUpperLimit (vl-registry-read "HKEY_CURRENT_USER\\Software\\Autodesk\\AutoCAD\\Yx_Zrw" "ToleranceUpperLimit")))21 (T22 (setq szToleranceUpperLimit "0.1")23 (vl-registry-write "HKEY_CURRENT_USER\\Software\\Autodesk\\AutoCAD\\Yx_Zrw" "ToleranceUpperLimit" "0.1")24 )25 )26

27 (initget "S")28 (setq %sk1 (getreal (strcat "\n输入上公差或 [字高比例(S)] :"))); "S"nil 实数29 (cond30 ((= %sk1 "S")31 (while

32 (progn33 (cond34 ((setq rToleranceHeightScale (getreal (strcat "\n指定公差值的文字高度相对于标注文字高度的比例因子 :"))))35 (T36 (setq rToleranceHeightScale (atof szToleranceHeightScale))37 )38 )39 (setq rToleranceHeightScale (abs rToleranceHeightScale))40 (vl-registry-write "HKEY_CURRENT_USER\\Software\\Autodesk\\AutoCAD\\Yx_Zrw" "ToleranceHeightScale" (vl-princ-to-stringrToleranceHeightScale))41 (cond42 ((> rToleranceHeightScale 0))43 (T;输入了044 (vlax-invoke (vla-GetInterfaceObject (vlax-get-acad-object) "WScript.Shell") "popup" "必须为正" 2 "错误" 48);警告内容 延迟秒数 对话框标题 确定按钮+黄色感叹号45 (setq rToleranceHeightScale nil)46 )47 )48 (not rToleranceHeightScale)49 )50 )51 ;实数 nil52 (cond53 ((setq %sk1 (getreal (strcat "\n输入上公差 :"))));实数54 (T;nil55 (setq %sk1 (atof szToleranceUpperLimit));使用缺省值56 )57 )58 );"S"

59 ((= (type %sk1) 'REAL));实数

60 (T;nil61 (setq %sk1 (atof szToleranceUpperLimit))62 )63 )64 (vl-registry-write "HKEY_CURRENT_USER\\Software\\Autodesk\\AutoCAD\\Yx_Zrw" "ToleranceUpperLimit" (vl-princ-to-string %sk1))65

66 (cond67 ((setq szToleranceLowerLimit (vl-registry-read "HKEY_CURRENT_USER\\Software\\Autodesk\\AutoCAD\\Yx_Zrw" "ToleranceLowerLimit")))68 (T69 (setq szToleranceLowerLimit "0.1")70 (vl-registry-write "HKEY_CURRENT_USER\\Software\\Autodesk\\AutoCAD\\Yx_Zrw" "ToleranceLowerLimit" "0.1")71 )72 )73

74 (cond75 ((setq %sk2 (getreal (strcat "\n输入下公差 :"))))76 (T77 (setq %sk2 (atof szToleranceLowerLimit))78 )79 )80 (vl-registry-write "HKEY_CURRENT_USER\\Software\\Autodesk\\AutoCAD\\Yx_Zrw" "ToleranceLowerLimit" (vl-princ-to-string %sk2))81 (setq nPrecision (max (BF-numOfSignificantDigitsAfterDecimalPoint %sk1) (BF-numOfSignificantDigitsAfterDecimalPoint %sk2)));获取小数位数82

83 (princ "\n选择尺寸:")84 (while (setq ss (ssget ":S" '((0 . "DIMENSION"))))

85 (repeat (setq i (sslength ss))86 (setq vObj (vla-ssname ss (setq i (1-i))))87 (vla-put-ToleranceDisplay vObj 2);显示公差:极限偏差88 (vla-put-ToleranceUpperLimit vObj %sk1)89 (vla-put-ToleranceLowerLimit vObj %sk2)90 (Vlax-Put-Property vObj 'TolerancePrecision nPrecision )

91 (setq ename (vlax-vla-object->ename vObj))92 (setq eList (entget ename))93 (cond94 ((and (member '(100 . "AcDb2LineAngularDimension") eList) (< (Vlax-Get vObj'TextPrecision) nPrecision));角度标注95 (Vlax-Put-Property vObj 'TextPrecision nPrecision)

96 )97 )98 (Vlax-Put-Property vObj 'ToleranceHeightScale rToleranceHeightScale )

99 (cond100 ((= %sk1 %sk2);对称公差101

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值