CAD中VBA操作多段线画矩形

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VBA操作多段线画矩形
在CAD中使用VBA画多段线闭合的矩形。

其实这个多段线围起来,围成一个矩形即可。

VBA中多段线是一串点,每个点使用两个双精度数值描述,这些数值连续放在数组中,就用ThisDrawing.ModelSpace.AddLightWeightPolyline(数组名)命令画出一段多段线。

画出矩形,关键就是要控制好四个顶点。

本次测试中使用一条直线(用于定矩形的方向的基准线)为参数画出一个矩形。

如果希望控制矩形的宽度,也可以再加其他控制条件。

提示用户画矩形,选取第一个点(sp,这里的点其实是一个只有两个元素的数组)
提示用户画矩形,选取第
二个点(ep)
由两点算这条基准线的长
度l、角度正弦sina和角度余
弦cosa
l=sqr((sp(1)-ep(1))^2+
(sp(0)-ep(0)^2))
sina=(ep(1)-sp(1))/l
cosa=(ep(0)-sp(0))/l
由此可知,第三点坐标p3(ep(0)+w*(-sina),ep(1)+w*cosa)
进而推得第四点p4(p3(0)+(-cosa)*l,p3(1)+(-sina)*l)
最后还要连回第一点,古增加一个p5,和sp同一点。

于是这个数组组建完毕,总共是个数值,每两个数值对应一个点,总共五个点。

代码实现如下:
Sub Rectang()
On Error GoTo ESC
sp = ThisDrawing.Utility.GetPoint(, "起点:")
ep = ThisDrawing.Utility.GetPoint(sp, "终点:")
l = Sqr((sp(1) - ep(1)) ^ 2 + (sp(0) - ep(0)) ^ 2)
sina = -(sp(1) - ep(1)) / d
cosa = -(sp(0) - ep(0)) / d
Dim p(1 To 10) As Double ’用来放多段线点数组
p(1) = sp(0)
p(2) = sp(1) ‘第一点
p(3) = p(1) + sl * cosa
p(4) = p(2) + sl * sina ‘第二点
p(5) = p(3) + sw * -sina
p(6) = p(4) + sw * (cosa) ‘第三点
p(7) = p(5) + sl * (-cosa)
p(8) = p(6) + sl * (-sina) ‘第四点
p(9) = p(1)
p(10) = p(2)‘第五点
Dim rect(0 To 0) As AcadEntity
Set rect(0) = ThisDrawing.ModelSpace.AddLightWeightPolyline(p)
ESC:
If Err Then MsgBox Err.Description, vbOKOnly, "错误"
End Sub。

相关文档
最新文档