由于的公差标注比较烦琐。所以做了一个,主要是参考一本机械方面的期刊(李忠群)做来的。做完后感觉进步较大,如有问题,欢迎提出批评和建议。
特此分享!
程序源码如下:
-
- '2003.11.2
- 'by gzy
- 'e-mail:gzy@mjtd.com
- Private Sub ComboBox1_Change()
- Select Case UserForm.ComboBox1.Value
- Case "无公差"
- UserForm.TextBox1.Enabled = False
- UserForm.TextBox2.Enabled = False
- UserForm.TextBox3.Enabled = False
- UserForm.TextBox3.BackColor = UserForm.BackColor
- UserForm.TextBox1.BackColor = UserForm.BackColor
- UserForm.TextBox2.BackColor = UserForm.BackColor
- Case "对称公差"
- UserForm.TextBox1.Enabled = False
- UserForm.TextBox1.BackColor = UserForm.BackColor
- UserForm.TextBox2.Enabled = True
- UserForm.TextBox2.BackColor = UserForm.TextBox5.BackColor
- UserForm.TextBox3.Enabled = False
- UserForm.TextBox3.BackColor = UserForm.BackColor
- Case "极限偏差"
- UserForm.TextBox1.Enabled = False
- UserForm.TextBox1.BackColor = UserForm.BackColor
- UserForm.TextBox2.Enabled = True
- UserForm.TextBox2.BackColor = UserForm.TextBox5.BackColor
- UserForm.TextBox3.Enabled = True
- UserForm.TextBox3.BackColor = UserForm.TextBox5.BackColor
- Case "极限尺寸"
- UserForm.TextBox1.Enabled = False
- UserForm.TextBox1.BackColor = UserForm.BackColor
- UserForm.TextBox2.Enabled = True
- UserForm.TextBox2.BackColor = UserForm.TextBox5.BackColor
- UserForm.TextBox3.Enabled = True
- UserForm.TextBox3.BackColor = UserForm.TextBox5.BackColor
- Case "基本偏差"
- UserForm.TextBox1.Enabled = False
- UserForm.TextBox1.BackColor = UserForm.BackColor
- UserForm.TextBox2.Enabled = False
- UserForm.TextBox2.BackColor = UserForm.BackColor
- UserForm.TextBox3.Enabled = False
- UserForm.TextBox3.BackColor = UserForm.BackColor
- Case "用户定义"
- UserForm.TextBox1.Enabled = True
- UserForm.TextBox1.BackColor = UserForm.TextBox5.BackColor
- UserForm.TextBox2.Enabled = True
- UserForm.TextBox2.BackColor = UserForm.TextBox5.BackColor
- UserForm.TextBox3.Enabled = True
- UserForm.TextBox3.BackColor = UserForm.TextBox5.BackColor
- End Select
- End Sub
- Private Sub CommandButton1_Click() '编辑完毕
- UserForm.hide
- End Sub
- Private Sub CommandButton2_Click()
- End
- End Sub
- Private Sub UserForm_initialize() '对话框初始化
- UserForm.ComboBox1.AddItem "无公差", 0
- UserForm.ComboBox1.AddItem "对称公差", 1
- UserForm.ComboBox1.AddItem "极限偏差", 2
- UserForm.ComboBox1.AddItem "极限尺寸", 3
- UserForm.ComboBox1.AddItem "基本尺寸", 4
- UserForm.ComboBox1.AddItem "用户定义", 5
- UserForm.ComboBox1.Value = "无公差"
- UserForm.TextBox1.Enabled = False
- UserForm.TextBox1.BackColor = UserForm.BackColor
- UserForm.TextBox2.Enabled = False
- UserForm.TextBox2.BackColor = UserForm.BackColor
- UserForm.TextBox3.Enabled = False
- UserForm.TextBox3.BackColor = UserForm.BackColor
- End Sub
- Public Function simplify(dimtext, dstyle) '按系统设置的精度要求,对标注尺寸进行处理
- If dstyle = 4 Then
- dimdec = ThisDrawing.GetVariable("dimadec")
- Else
- dimdec = ThisDrawing.GetVariable("dimdec")
- End If
- seyle = "."
- If dimdec > 0 Then
- Do While dimdec > 0
- style = style + "#"
- dimdec = dimdec - 1
- Loop
- simplify = Format(dimtext, style)
- Else
- simplify = CInt(dimtext)
- End If
- End Function
- Public Function detol(dimnm, dimtp, dimtm, textpre, textsuf) '分解公差各部分
- dimnm = Left(dimnm, Len(dimnm) - Len(textsuf))
- dimnm = Right(dimnm, Len(dimnm) - Len(textsuf))
- If InStr(dimnm, "%%p") 0 Then '采用对称公差标注时
- dimnum = Left(dimnm, InStr(dimnm, "%%p") - 1)
- Else
- pos1 = InStr(dimnm, "{")
- If pos1 > 0 Then
- dimnm = Left(dimnm, pos1 - 1)
- End If
- End If
- detol = dimnm
- End Function
- Public Function gentol(Text, tp, tm, prefix, profix, code) '将名义尺寸、上、下偏差等组合出公差
- Dim obj1 As AcadEntity
- textsize = ThisDrawing.GetVariable("dimtxt")
- tolsize = 0.6 * textsize
- Text = prefix + Text
- If Abs(tp) = Abs(tm) Then
- If tp = 0 Then '没有公差时
- gentol = Text
- Else
- If Abs(tp) 0
- If tp 0
- If tm < 1 Then
- tm = "+0" + Trim(Str(tm))
- Else: tm = "+" + Trim(Str(tm))
- End If
- Case ls = 0
|