wz0406 发表于 2007-5-21 21:41:00

各位高手:添加一多义线并设置线型错在什么地方

'绘多义线
   _
      Public Sub AddPL()
      Dim pl As New Polyline
      Dim DB As Database
      Dim trans As Transaction
      Dim btr As BlockTableRecord
      Dim bt As BlockTable
      'Dim li As Object
      DB = HostApplicationServices.WorkingDatabase
      trans = DB.TransactionManager.StartTransaction
      bt = trans.GetObject(DB.BlockTableId, OpenMode.ForWrite)
      btr = trans.GetObject(bt(BlockTableRecord.ModelSpace), OpenMode.ForWrite)
      'Dim pLinetypeTbl As LinetypeTable = trans.GetObject(DB.LinetypeTableId, OpenMode.ForRead)
      'If pLinetypeTbl.Has("DASHDOT") Then
            'DB.LoadLineTypeFile("DASHDOT", "acadiso.lin")
            'End If
            Dim point2D(2) As Point2d
            point2D(0) = New Point2d(10, 10)
            point2D(1) = New Point2d(10, 5)
            point2D(2) = New Point2d(30, 40)
            pl.AddVertexAt(0, point2D(0), 0, 1, 1)
            pl.AddVertexAt(1, point2D(1), 0, 1, 1)
      pl.AddVertexAt(2, point2D(2), 0, 1, 1)
      pl.LinetypeId = CreatLineType("DASHDOT")
            ' pl.Linetype = "DASHDOT"
            btr.AppendEntity(pl)
            trans.AddNewlyCreatedDBObject(pl, True)
            trans.Commit()
            trans.Dispose()
    End Sub
    Private Function CreatLineType(ByVal LineTypeName As String) As ObjectId
      Dim LineTypeID As ObjectId
      Dim db As Database = HostApplicationServices.WorkingDatabase
      Using trans As Transaction = db.TransactionManager.StartTransaction
            Dim it As LinetypeTable = trans.GetObject(db.LinetypeTableId, OpenMode.ForRead)
            If it.Has(LineTypeName) Then
                LineTypeID = it.Item(LineTypeName)
            Else
                db.LoadLineTypeFile(LineTypeName, "acadiso.lin")
                Dim ltr As New LinetypeTableRecord
                ltr.Name = LineTypeName
                it.UpgradeOpen()
                LineTypeID = it.Add(ltr)
                trans.AddNewlyCreatedDBObject(ltr, True)
               
            End If
trans.Commit()
      End Using
      Return LineTypeID
    End Function

sieben 发表于 2007-5-22 13:28:00

Dim it As LinetypeTable = trans.GetObject(db.LinetypeTableId, OpenMode.ForRead)
OpenMode.ForRead 改为OpenMode.ForWrite
没有测试过,只是看见这个地方有问题
页: [1]
查看完整版本: 各位高手:添加一多义线并设置线型错在什么地方