求助:如何用vba做offset?
我的目的是这样的:根据用户输入的apnt和bpnt,也就是一个直线的起点和终点,绘制一个直线(设为cline)。用acadline。然后,根据用户输入的宽度,比如200,用cline的offset命令,在cline两侧各生成一个直线,分别叫b1和b2.因为我在用offset之后,还要继续操作b1和b2,怎么实现?
我现在是这样的:定义b1和b2为acadline,然后set b1=cline.offset(b),执行出错。但是仍然出现了一条直线。
请问该如何实现?
代码如下:
Dim aPNT As ACAD_POINT
Dim bPNT As ACAD_POINT
Dim cLine As AcadLine
Dim B1 As AcadLine
Dim B2 As AcadLine
Dim B As Double 'áoμÄ¿í¶è
B = ThisDrawing.Utility.GetReal("áoμÄ¿í¶è£o")
aPNT = ThisDrawing.Utility.GetPoint(, "êäèëÆeμã£o")
bPNT = ThisDrawing.Utility.GetPoint(aPNT, "ÖÕμã£o")
Set cLine = ThisDrawing.ModelSpace.AddLine(aPNT, bPNT)
With cLine
.Lineweight = acLnWt100
.color = acGreen
.Update
End With
Set B1 = cLine.Offset(B / 2)
With B1
.Lineweight = acLnWt000
.color = acRed
.Update
End With
B2 = cLine.Offset(-B / 2)
With B1
.Lineweight = acLnWt000
.color = acRed
.Update
End With 明白了,offset命令返回的是一个variant的数组!也就是说,经过:B1 = cLine.Offset(B / 2) 后返回的b1,实际上已经变成了一个数组,虽然这个数组只有一个实体,也就是B1(0)
OFFset是一个高深的问题,尤期是在图形退化的时候,最好能搞一个纯算法的偏移 什么是“图形退化”?
页:
[1]