乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 155|回复: 9

[分享]公差编辑工具

[复制链接]
gzy

25

主题

1118

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1221
发表于 2003-11-2 21:36:00 | 显示全部楼层 |阅读模式
由于的公差标注比较烦琐。所以做了一个,主要是参考一本机械方面的期刊(李忠群)做来的。做完后感觉进步较大,如有问题,欢迎提出批评和建议。
特此分享!
程序源码如下:
  1. '2003.11.2
  2. 'by gzy
  3. 'e-mail:gzy@mjtd.com
  4. Private Sub ComboBox1_Change()
  5.   Select Case UserForm.ComboBox1.Value
  6.   Case "无公差"
  7.   UserForm.TextBox1.Enabled = False
  8.   UserForm.TextBox2.Enabled = False
  9.   UserForm.TextBox3.Enabled = False
  10.   UserForm.TextBox3.BackColor = UserForm.BackColor
  11.   UserForm.TextBox1.BackColor = UserForm.BackColor
  12.   UserForm.TextBox2.BackColor = UserForm.BackColor
  13.   Case "对称公差"
  14.   UserForm.TextBox1.Enabled = False
  15.   UserForm.TextBox1.BackColor = UserForm.BackColor
  16.   UserForm.TextBox2.Enabled = True
  17.   UserForm.TextBox2.BackColor = UserForm.TextBox5.BackColor
  18.   UserForm.TextBox3.Enabled = False
  19.   UserForm.TextBox3.BackColor = UserForm.BackColor
  20.    Case "极限偏差"
  21.   UserForm.TextBox1.Enabled = False
  22.   UserForm.TextBox1.BackColor = UserForm.BackColor
  23.   UserForm.TextBox2.Enabled = True
  24.   UserForm.TextBox2.BackColor = UserForm.TextBox5.BackColor
  25.   UserForm.TextBox3.Enabled = True
  26.   UserForm.TextBox3.BackColor = UserForm.TextBox5.BackColor
  27.   Case "极限尺寸"
  28.   UserForm.TextBox1.Enabled = False
  29.   UserForm.TextBox1.BackColor = UserForm.BackColor
  30.   UserForm.TextBox2.Enabled = True
  31.   UserForm.TextBox2.BackColor = UserForm.TextBox5.BackColor
  32.   UserForm.TextBox3.Enabled = True
  33.   UserForm.TextBox3.BackColor = UserForm.TextBox5.BackColor
  34.   Case "基本偏差"
  35.   UserForm.TextBox1.Enabled = False
  36.   UserForm.TextBox1.BackColor = UserForm.BackColor
  37.   UserForm.TextBox2.Enabled = False
  38.   UserForm.TextBox2.BackColor = UserForm.BackColor
  39.   UserForm.TextBox3.Enabled = False
  40.   UserForm.TextBox3.BackColor = UserForm.BackColor
  41.   Case "用户定义"
  42.   UserForm.TextBox1.Enabled = True
  43.   UserForm.TextBox1.BackColor = UserForm.TextBox5.BackColor
  44.   UserForm.TextBox2.Enabled = True
  45.   UserForm.TextBox2.BackColor = UserForm.TextBox5.BackColor
  46.   UserForm.TextBox3.Enabled = True
  47.   UserForm.TextBox3.BackColor = UserForm.TextBox5.BackColor
  48.   End Select
  49.   End Sub
  50. Private Sub CommandButton1_Click() '编辑完毕
  51. UserForm.hide
  52. End Sub
  53. Private Sub CommandButton2_Click()
  54. End
  55. End Sub
  56. Private Sub UserForm_initialize() '对话框初始化
  57. UserForm.ComboBox1.AddItem "无公差", 0
  58. UserForm.ComboBox1.AddItem "对称公差", 1
  59. UserForm.ComboBox1.AddItem "极限偏差", 2
  60. UserForm.ComboBox1.AddItem "极限尺寸", 3
  61. UserForm.ComboBox1.AddItem "基本尺寸", 4
  62. UserForm.ComboBox1.AddItem "用户定义", 5
  63. UserForm.ComboBox1.Value = "无公差"
  64. UserForm.TextBox1.Enabled = False
  65. UserForm.TextBox1.BackColor = UserForm.BackColor
  66. UserForm.TextBox2.Enabled = False
  67. UserForm.TextBox2.BackColor = UserForm.BackColor
  68. UserForm.TextBox3.Enabled = False
  69. UserForm.TextBox3.BackColor = UserForm.BackColor
  70. End Sub
  71. Public Function simplify(dimtext, dstyle) '按系统设置的精度要求,对标注尺寸进行处理
  72.   If dstyle = 4 Then
  73.     dimdec = ThisDrawing.GetVariable("dimadec")
  74.   Else
  75.     dimdec = ThisDrawing.GetVariable("dimdec")
  76.   End If
  77.   seyle = "."
  78.    If dimdec > 0 Then
  79.       Do While dimdec > 0
  80.         style = style + "#"
  81.         dimdec = dimdec - 1
  82.       Loop
  83.       simplify = Format(dimtext, style)
  84.     Else
  85.        simplify = CInt(dimtext)
  86.    End If
  87. End Function
  88. Public Function detol(dimnm, dimtp, dimtm, textpre, textsuf) '分解公差各部分
  89.   dimnm = Left(dimnm, Len(dimnm) - Len(textsuf))
  90.   dimnm = Right(dimnm, Len(dimnm) - Len(textsuf))
  91. If InStr(dimnm, "%%p")  0 Then   '采用对称公差标注时
  92.     dimnum = Left(dimnm, InStr(dimnm, "%%p") - 1)
  93.     Else
  94.       pos1 = InStr(dimnm, "{")
  95.       If pos1 > 0 Then
  96.          dimnm = Left(dimnm, pos1 - 1)
  97.       End If
  98. End If
  99.       detol = dimnm
  100. End Function
  101. Public Function gentol(Text, tp, tm, prefix, profix, code) '将名义尺寸、上、下偏差等组合出公差
  102. Dim obj1 As AcadEntity
  103. textsize = ThisDrawing.GetVariable("dimtxt")
  104. tolsize = 0.6 * textsize
  105. Text = prefix + Text
  106. If Abs(tp) = Abs(tm) Then
  107.    If tp = 0 Then  '没有公差时
  108.      gentol = Text
  109.     Else
  110.       If Abs(tp)  0
  111.      If tp  0
  112.      If tm < 1 Then
  113.         tm = "+0" + Trim(Str(tm))
  114.      Else: tm = "+" + Trim(Str(tm))
  115.      End If
  116.      Case ls = 0
  117.        tm = "0"
  118.        Case ls < 0
  119.         If Abs(tm) < 1 Then
  120.           tm = Trim(Trim(Abs(tm)))
  121.           tm = "-0" + tm
  122.         Else: tm = Trim(Str(tm))
  123.         End If
  124.         End Select
  125.         gentol = Text + "{\h" + tolsize + ";\s" + tp + "" + tm + ";}" + profix
  126.     End If
  127.     End Function
  128.     Public Sub dimedit() '公差编辑
  129.       Dim obj1 As AcadEntity
  130.       Dim curobj As AcadDimension
  131.       Do While code = 0
  132.         On Error Resume Next
  133.         ThisDrawing.Utility.GetEntity obj1, pnt1, "请选择要标注的尺寸"
  134.           If Err.Number = 0 Then
  135.           Select Case obj1.ObjectName ' 判断标注类型
  136.             Case "AcDbRotatedDimension"
  137.               code = 1
  138.             Case "AcDbAlignedDimension"
  139.               code = 1
  140.             Case "AcDbLinearDimension"
  141.               code = 1
  142.             Case "AcDbDiametricDimension"
  143.               code = 2
  144.             Case "AcDbRadialDimension"
  145.               code = 3
  146.            Case "AcDb2LineAngularDimension", "AcDb3PointAngularDimension"
  147.               code = 4
  148.           End Select
  149.           Else
  150.             Err.Clear
  151.           End If
  152.           Loop
  153.           Set curobj = obj1
  154.           UserForm.TextBox1.Text = simplify(curobj.Measurement, code)
  155.           Select Case curobj.ToleranceDisplay
  156.           Case "actolnone"
  157.              UserForm.ComboBox1.Value = "无公差"
  158.           Case "actolactollimitsdeviation"
  159.              UserForm.ComboBox1.Value = "极限偏差"
  160.           Case "actoactolimits"
  161.              UserForm.ComboBox1.Value = "极限尺寸"
  162.           Case "actolsymmetrical"
  163.              UserForm.ComboBox1.Value = "对称公差"
  164.           Case "actolbasic"
  165.              UserForm.ComboBox1.Value = "基本尺寸"
  166.           End Select
  167.   UserForm.TextBox2.Text = Format(curobj.ToleranceUpperLimit, "0.#")
  168.   UserForm.TextBox3.Text = Format(curobj.ToleranceLowerLimit, "0.#")
  169.        UserForm.TextBox4.Text = curobj.TextPrefix
  170.        UserForm.TextBox5.Text = curobj.TextSuffix
  171.        If curobj.TextOverride = "" Then '未使用文字替代时,从测量标注测量值获得对话框初始值
  172.        UserForm.TextBox1.Text = simplify(curobj.Measurement, code)
  173.        If code = 4 Then UserForm.TextBox1.Text = simplify(curobj.Measurement * 180 / pi, code)
  174.          Else '使用文字替代时,从替代字符串中分解出对话框初始值
  175.           UserForm.ComboBox1.Value = "用户定义"
  176.           temp = UCase(Trim(cruobj.TextOverride))
  177.            UserForm.TextBox1.Text = detol(temp, UserForm.TextBox2.Text, UserForm.TextBox3. _
  178.            Text, UserForm.TextBox4.Text, UserForm.TextBox5.Text)
  179.        End If
  180.        UserForm.Show
  181.        If UserForm.TextBox4.Text = "" Then '去掉前缀和后缀
  182.         curobj.TextPrefix = ""
  183.         End If
  184.       If UserForm.TextBox5.Text = "" Then
  185.         curobj.TextSuffix = ""
  186.         End If
  187.        curobj.TextPrefix = UserForm.TextBox4.Text
  188.        curobj.TextSuffix = UserForm.TextBox5.Text
  189.        curobj.ToleranceUpperLimit = UserForm.TextBox2.Text
  190.        curobj.ToleranceLowerLimit = UserForm.TextBox3.Text
  191.        curobj.TextOverride = ""
  192.        Select Case UserForm.ComboBox1.Value
  193.        Case "无公差"
  194.          curobj.ToleranceDisplay = acTolNone
  195.        Case "极限偏差"
  196.          curobj.ToleranceDisplay = acTolDeviation
  197.        Case "极限尺寸"
  198.          curobj.ToleranceDisplay = acTolLimits
  199.        Case "对称公差"
  200.          curobj.ToleranceDisplay = acTolSymmetrical
  201.        Case "基本尺寸"
  202.          curobj.ToleranceDisplay = acTolvasic
  203.        Case "用户定义"
  204.          curobj.TextOverride = gentol(UserForm.TextBox1.Text, _
  205.          UserForm.TextBox2.Text, UserForm.TextBox3.Text, _
  206.          UserForm.TextBox4.Text, UserForm.TextBox5.Text, code)
  207.        End Select
  208.        curobj.Update
  209.        curobj.Visible = True
  210.   End Sub

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

2

主题

17

帖子

6

银币

初来乍到

Rank: 1

铜币
25
发表于 2003-11-21 23:45:00 | 显示全部楼层
文件下载后怎么用呀?
回复

使用道具 举报

4

主题

9

帖子

1

银币

初来乍到

Rank: 1

铜币
25
发表于 2003-11-22 13:45:00 | 显示全部楼层
如何使用!
谢谢!
回复

使用道具 举报

26

主题

243

帖子

9

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
347
发表于 2003-11-22 13:48:00 | 显示全部楼层
用VAB加载后运行
回复

使用道具 举报

gzy

25

主题

1118

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1221
发表于 2003-11-30 13:51:00 | 显示全部楼层
在模块中加载
回复

使用道具 举报

sxy

13

主题

44

帖子

7

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
96
发表于 2003-12-1 12:09:00 | 显示全部楼层
怎么用?是什么命令?
回复

使用道具 举报

89

主题

410

帖子

8

银币

中流砥柱

Rank: 25

铜币
766
发表于 2003-12-6 23:10:00 | 显示全部楼层
斑竹,这个程序挺好,挺实用
如果能够自动将加入的公差文字的高度以尺寸文字高度的一定的比例(如0.6)显示就更好了
另外,修改过的尺寸如果也能用这个东东加公差的话那就更加妙了
最后请教斑竹一个问题:我怎么在Lisp程序中加载DVB文件,我现在是用手动加载,再运行宏
笨办法,呵呵
多谢!
回复

使用道具 举报

0

主题

9

帖子

5

银币

初来乍到

Rank: 1

铜币
9
发表于 2003-12-30 17:05:00 | 显示全部楼层
實用工具可不能錯過啊^^_^
回复

使用道具 举报

15

主题

285

帖子

9

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
345
发表于 2003-12-30 20:28:00 | 显示全部楼层
能够自动将加入的公差文字的高度以尺寸文字高度的一定的比例的程序 呵呵 算是对楼主的补充啊 不过没有楼主的那么全
希望大家批评指正啊
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:faf03ikbfjv.rar 
下载次数:0  文件大小:10.03 KB  售价:2银币 [记录]
下载权限: 不限 以上或 Vip会员   [开通Vip]   [签到领银币]  [免费赚银币]


解压后 打开cad  把它加载到启动组中 然后每次只要双击标注尺寸就可以了
回复

使用道具 举报

89

主题

410

帖子

8

银币

中流砥柱

Rank: 25

铜币
766
发表于 2004-1-5 12:21:00 | 显示全部楼层
修改过的尺寸用了后又返回真实值,如何解决?
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-8 00:54 , Processed in 1.179972 second(s), 78 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表