如何画矩形?
不知道你想说什么,是不是说点两个点,这两个点是矩形的长和宽的中心点,而且长和宽的尺寸均可以输入?如果是这样你永远也写不出来,因为数学模型就不成立,如下图所示
图中pt1和pt2是所点的两点,S是两点间的长度,所输入的长和宽的尺寸分别为2A和2B,即半个长度A和半个宽度B和S构成一个三角形,一个三角形的三条边长均已知怎么能保证夹角P是个直角呢,用你的平面几何知识算一下这个角度的公式吧,这明显是一个无法完成的任务,而P只要不是直角你得出来的肯定是一个平行四边形,哈哈
Public Function DrawRectang(RecHalfWidth As Double) As Object
Dim Pt1 As Variant
Dim Pt2 As Variant
Dim RectRotation As Double
Dim objPolyline As Object
Dim RectangPoint(0 To 11) As Double
' 获得第一点Pt1
Pt1 = ThisDrawing.Utility.GetPoint(, "指定起始点")
' 获得第二点Pt2
Pt2 = ThisDrawing.Utility.GetPoint(Pt1, "指定结束点")
' 得到两点构成直线的的角度值
RectRotation = Atn((Pt2(1) - Pt1(1)) / (Pt2(0) - Pt1(0)))
' 根据Pt1、Pt2两点计算矩形各顶点坐标
RectangPoint(0) = Pt1(0) - RecHalfWidth * Sin(RectRotation)
RectangPoint(1) = Pt1(1) + RecHalfWidth * Cos(RectRotation)
RectangPoint(3) = Pt1(0) + RecHalfWidth * Sin(RectRotation)
RectangPoint(4) = Pt1(1) - RecHalfWidth * Cos(RectRotation)
RectangPoint(6) = Pt2(0) + RecHalfWidth * Sin(RectRotation)
RectangPoint(7) = Pt2(1) - RecHalfWidth * Cos(RectRotation)
RectangPoint(9) = Pt2(0) - RecHalfWidth * Sin(RectRotation)
RectangPoint(10) = Pt2(1) + RecHalfWidth * Cos(RectRotation)
Set objPolyline = ThisDrawing.ModelSpace.AddPolyline(RectangPoint)
objPolyline.Closed = True
Set DrawRectang = objPolyline
End Function
谢谢wlong的程序,不过画出是个旋转角度的不过这样也好,随机的美感,半宽其实不用设,可由pt1,pt2两个点计算出
页:
[1]