chman 发表于 2005-4-3 11:16:00

如何对自动绘制的mline加点(在弯曲很大的地方)

本帖最后由 作者 于 2005-4-3 15:49:20 编辑 <br /><br /> Sub tt()



                       Do While 1<BR>                               If (flgPickNested = True) Then<BR>                                                       Debug.Print "错误"<BR>                                                       Exit Sub<BR>                       Else<BR>                                                       Dim pt As Variant<BR>                                                       ThisDrawing.Utility.GetEntity ent, pt<BR>                       End If<BR>       <BR>                       var = ent.Coordinates<BR>                                               retCoord = ent.Coordinates<BR>                                               k = (UBound(retCoord) + 1) / 3        <BR>                                                       ReDim px(k - 1) As Double<BR>                                                       ReDim py(k - 1) As Double


                                                       For i = 0 To UBound(retCoord) Step 3<BR>                                                                                       px(i / 3) = retCoord(i)<BR>                                                                                       py(i / 3) = retCoord(i + 1)


                                                       Next i<BR>                                                       Dim m As Integer<BR>                                                       Dim n As Integer<BR>                                                       m = 0<BR>                                                       n = 0<BR>                                                       ReDim Center(3 * (k - 1) + 2) As Double<BR>                                                       For i = 0 To k - 1


                                                                                       Center(i * 3) = px(i)<BR>                                                                                       Center(i * 3 + 1) = py(i)<BR>                                                                                       Center(i * 3 + 2) = 0<BR>                                                                                                <BR>                                                       Next i<BR>                                                                <BR>                                                                <BR>                                                                       Dim lwp As AcadMLine<BR>                                                       ThisDrawing.SendCommand "_mline" &amp; vbCr &amp; "j" &amp; vbCr &amp; "z" &amp; vbCr &amp; "s" &amp; vbCr &amp; "20" &amp; vbCr<BR>                                                       Set lwp = ThisDrawing.ModelSpace.AddMLine(Center)<BR><BR>                                               picked = True<BR>                       <BR>Loop<BR>                               <BR>ErrHandle:<BR>                                                                                       <BR>End Sub


以上是提取pline坐标后,用mline重新绘制的源代码


请大家帮忙怎么处理pline弯曲处,我考虑让程序自动增加一些点,来贴合原来比较大的弧线。(因为原来pline是用很粗的线绘制的,这个pline线本生不包括arc段,由于线很粗,所以绘制出来的线,弧度很好,如果用mline描下来,自然就在曲度大的地方一下子就看出来pline和mline就不贴合在一起了)


或者是用一个工具,只要在 mline线上点击一下就在点击的位置增加一个点。多加几个点再编辑一个,但是如何再mline线上增加点,翻扁了怎个网络就只有lisp做的一个,我对lisp一无所知。所以盼望能有vba版本的。谢谢


或者有什么其他好办法,


一直思路顿塞,痛苦中


盼指教。谢谢

mccad 发表于 2005-4-4 21:38:00

在弧段上增加点,你可以按照凸度的大小来控制加点的多少。<BR>按照前后点与弧段的凸度,则可以计算也弧段上某处的点的坐标。
页: [1]
查看完整版本: 如何对自动绘制的mline加点(在弯曲很大的地方)