自己写的画腰孔,感觉写的好繁琐,不知道该怎么改进
自学的CAD二次开发,写程序感觉好繁琐,不知道怎么进步,求指导。下面是我写的用来调用画腰孔的程序,该怎么简化??
Sub 画腰孔(ByVal p, ByVal r, ByVal jd, ByVal L, ByRef x, ByRef i)
'p是要插入的腰孔中心点,r是腰孔半径,jd是腰孔的角度,L是腰孔直线的长度,x是存放图形的数组,i是记录图形存放在数组中的位置
Dim pt1(2) As Double, pt2(2) As Double, pt3(2) As Double, pt4(2) As Double
If jd = 0 Then
pt1(0) = p(0) - L / 2
pt1(1) = p(1) - r
pt1(2) = 0
pt2(0) = p(0) + L / 2
pt2(1) = p(1) - r
pt2(2) = 0
pt3(0) = p(0) - L / 2
pt3(1) = p(1) + r
pt3(2) = 0
pt4(0) = p(0) + L / 2
pt4(1) = p(1) + r
pt4(2) = 0
i = i + 1
Set x(i) = ThisDrawing.ModelSpace.AddLine(pt1, pt2)
i = i + 1
Set x(i) = ThisDrawing.ModelSpace.AddLine(pt3, pt4)
pt1(1) = p(1)
i = i + 1
Set x(i) = ThisDrawing.ModelSpace.AddArc(pt1, r, 3.1415926535898 / 2, 3.1415926535898 * 1.5)
pt2(1) = p(1)
i = i + 1
Set x(i) = ThisDrawing.ModelSpace.AddArc(pt2, r, 3.1415926535898 * 1.5, 3.1415926535898 / 2)
pt1(0) = p(0) - L / 2 - r * 1.5
pt2(0) = p(0) + L / 2 + r * 1.5
i = i + 1
Set x(i) = ThisDrawing.ModelSpace.AddLine(pt1, pt2)
x(i).Linetype = "center"
x(i).Color = acRed
pt1(0) = p(0)
pt1(1) = p(1) + r * 1.5
pt2(0) = p(0)
pt2(1) = p(1) - r * 1.5
i = i + 1
Set x(i) = ThisDrawing.ModelSpace.AddLine(pt1, pt2)
x(i).Linetype = "center"
x(i).Color = acRed
Else
pt1(0) = p(0) - r
pt1(1) = p(1) - L / 2
pt1(2) = 0
pt2(0) = p(0) - r
pt2(1) = p(1) + L / 2
pt2(2) = 0
pt3(0) = p(0) + r
pt3(1) = p(1) + L / 2
pt3(2) = 0
pt4(0) = p(0) + r
pt4(1) = p(1) - L / 2
pt4(2) = 0
i = i + 1
Set x(i) = ThisDrawing.ModelSpace.AddLine(pt1, pt2)
i = i + 1
Set x(i) = ThisDrawing.ModelSpace.AddLine(pt3, pt4)
pt1(0) = p(0)
i = i + 1
Set x(i) = ThisDrawing.ModelSpace.AddArc(pt1, r, 3.1415926535898, 0)
pt2(0) = p(0)
i = i + 1
Set x(i) = ThisDrawing.ModelSpace.AddArc(pt2, r, 0, 3.1415926535898)
pt1(1) = p(1) - L / 2 - r * 1.5
pt2(1) = p(1) + L / 2 + r * 1.5
i = i + 1
Set x(i) = ThisDrawing.ModelSpace.AddLine(pt1, pt2)
x(i).Linetype = "center"
x(i).Color = acRed
pt1(0) = p(0) + r * 1.5
pt1(1) = p(1)
pt2(0) = p(0) - r * 1.5
pt2(1) = p(1)
i = i + 1
Set x(i) = ThisDrawing.ModelSpace.AddLine(pt1, pt2)
x(i).Linetype = "center"
x(i).Color = acRed
End If
End Sub
不明白你说的腰孔是什么东西,但有些坐标点计算,应该可以用AcadUtility 类的函数计算 zzyong00 发表于 2018-7-13 10:53
不明白你说的腰孔是什么东西,但有些坐标点计算,应该可以用AcadUtility 类的函数计算
就是这样的孔,我们这边叫腰孔。AcadUtility里面我是没找到直接的函数。我准备再写个倒角的函数,感觉倒角编起来很麻烦,不知道有没有现成的函数。
画出矩形 设置 2条边的凸度 让用户点选两点 ,设置宽度 程序画矩形设置2边凸度 本帖最后由 Leo1980 于 2019-8-29 14:27 编辑
一个polyline足矣
页:
[1]