xinjl 发表于 2015-6-2 16:04:42

求助:如何用vba做offset?

我的目的是这样的:
根据用户输入的apnt和bpnt,也就是一个直线的起点和终点,绘制一个直线(设为cline)。用acadline。然后,根据用户输入的宽度,比如200,用cline的offset命令,在cline两侧各生成一个直线,分别叫b1和b2.因为我在用offset之后,还要继续操作b1和b2,怎么实现?

我现在是这样的:定义b1和b2为acadline,然后set b1=cline.offset(b),执行出错。但是仍然出现了一条直线。

请问该如何实现?

xinjl 发表于 2015-6-2 16:10:19

代码如下:

    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

xinjl 发表于 2015-6-3 16:04:39

明白了,offset命令返回的是一个variant的数组!也就是说,经过:B1 = cLine.Offset(B / 2) 后返回的b1,实际上已经变成了一个数组,虽然这个数组只有一个实体,也就是B1(0)

longxh28 发表于 2015-6-4 15:34:32

OFFset是一个高深的问题,尤期是在图形退化的时候,最好能搞一个纯算法的偏移

xinjl 发表于 2015-6-12 10:05:11

什么是“图形退化”?
页: [1]
查看完整版本: 求助:如何用vba做offset?