'为了也能绘制不等边角钢,采用了两个变量H和B,在此过程中H=B。 Dim H As Integer, B As Integer, D As Double, R As Double, R1 As Double '*********************************************************************************************************************************** '等边角钢绘制***********************************************等边角钢绘制********************************************************* ' 6|\R1 ' | \ ' | |5 ' |D | ' | | ' H | ' | | ' | |4 ' | \ R ' | _3__________________2 ' |___________B_____________R1 ' 0 1 Private Sub DBJG_Btn_Click() Me.Hide '指定基点 Dim PtBase As Variant ThisDrawing.Utility.InitializeUserInput 1, "" PtBase = ThisDrawing.Utility.GetPoint(, "指切面线{dy}点:") '计算几个关键点的位置 Dim Pt1(0 To 2) As Double, Pt2(0 To 2) As Double, Pt3(0 To 2) As Double, Pt4(0 To 2) As Double, Pt5(0 To 2) As Double, Pt6(0 To 2) As Double '在我的五金表上面没有找到R1,所以这里面用R1=D。这样角钢的边上正好是1/4圆弧。 Pt1(0) = PtBase(0) + B: Pt1(1) = PtBase(1): Pt1(2) = Pt1(2) Pt2(0) = PtBase(0) + B - D: Pt2(1) = PtBase(1) + D: Pt2(2) = Pt1(2) Pt3(0) = PtBase(0) + D + R: Pt3(1) = PtBase(1) + D: Pt3(2) = Pt1(2) Pt4(0) = PtBase(0) + D: Pt4(1) = PtBase(1) + D + R: Pt4(2) = Pt1(2) Pt5(0) = PtBase(0) + D: Pt5(1) = PtBase(1) + H - D: Pt5(2) = Pt1(2) Pt6(0) = PtBase(0): Pt6(1) = PtBase(1) + H: Pt6(2) = Pt1(2) '多线段顶点数组 Dim A(13) As Double A(0) = PtBase(0) A(1) = PtBase(1) A(2) = Pt1(0) A(3) = Pt1(1) A(4) = Pt2(0) A(5) = Pt2(1) A(6) = Pt3(0) A(7) = Pt3(1) A(8) = Pt4(0) A(9) = Pt4(1) A(10) = Pt5(0) A(11) = Pt5(1) A(12) = Pt6(0) A(13) = Pt6(1) '创建多段线 Dim objPline As AcadLWPolyline Set objPline = ThisDrawing.ModelSpace.AddLightWeightPolyline(A) '闭合多险段 objPline.Closed = True '给多线段添加圆弧度,凸度是多段线顶点列表中选定顶点和下一顶点之间的圆弧所包含角度的 1/4 的正切值。 '负的凸度值表示圆弧从选定顶点到下一顶点为顺时针方向。 '凸度为0 表示直线段,凸度为1表示半圆。 Atn(1)为45度 两点之间为90度,因此他的1/4为 (2 * Atn(1)) / 4. objPline.SetBulge 1, Tan((2 * Atn(1)) / 4) '1为点一和下一个点(2点)的线段 objPline.SetBulge 3, -Tan(Atn(1) / 2) objPline.SetBulge 5, Tan(Atn(1) / 2) objPline.Visible = True Unload Me End Sub |