363001640 发表于 2022-9-22 09:32

求助.net的二维多段线的偏移

求助使用vb.net语言的二维多段线的偏移,向外偏移。求助示例或者用法。

cairunbin 发表于 2022-10-5 17:34

用这个方法即可:
Public virtual Function GetOffsetCurves(
    offsetDist As double
) As DBObjectCollection

363001640 发表于 2022-10-7 09:59

图A是用二维多段线画的,偏移成图B。vb.net。求助。

tiancao100 发表于 2022-10-7 12:46

没代码啊,你想求助什么都不知道? 还是你所以都不知道,想求助全部代码?

363001640 发表于 2022-10-8 08:36

<CommandMethod("OffsetObject")>
    Public Sub OffsetObject()
      '' 获取当前文档和数据库
      Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
      Dim acCurDb As Database = acDoc.Database
      '' 启动事务
      Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
            '' 以读模式打开 Block 表
            Dim acBlkTbl As BlockTable
            acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead)
            '' 以写模式打开块表记录模型空间
            Dim acBlkTblRec As BlockTableRecord
            acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), OpenMode.ForWrite)
            '' 创建多段线
            Dim acPoly As Polyline = New Polyline()
            acPoly.AddVertexAt(0, New Point2d(1, 1), 0, 0, 0)
            acPoly.AddVertexAt(1, New Point2d(1, 2), 0, 0, 0)
            acPoly.AddVertexAt(2, New Point2d(2, 2), 0, 0, 0)
            acPoly.AddVertexAt(3, New Point2d(3, 2), 0, 0, 0)
            acPoly.AddVertexAt(4, New Point2d(4, 4), 0, 0, 0)
            acPoly.AddVertexAt(5, New Point2d(4, 1), 0, 0, 0)
            '' 添加新对象到块表记录和事务
            acBlkTblRec.AppendEntity(acPoly)
            acTrans.AddNewlyCreatedDBObject(acPoly, True)
            '' 偏移多段线给定距离
            Dim acDbObjColl As DBObjectCollection = acPoly.GetOffsetCurves(0.25)
            '' 遍历得到的新对象
            For Each acEnt As Entity In acDbObjColl
                '' 添加每个对象
                acBlkTblRec.AppendEntity(acEnt)
                acTrans.AddNewlyCreatedDBObject(acEnt, True)
            Next
            '' 保存新对象到数据库
            acTrans.Commit()
      End Using
    End Sub已经在书中找到源码。完成了
页: [1]
查看完整版本: 求助.net的二维多段线的偏移