crwncad702 发表于 2022-7-6 12:53:22

正在尝试设置Dimblk VB。网

大家晚上好,我很好奇是否有人知道一个好方法,当块名已知并且在dwg中时,我可以获得块的objectid。我一直很难让它正常工作。。。我还在努力学习vbnet。其次,一旦我获得该objectid,我将尝试将Dimblk设置为该id。然而,如果该id不存在,我将需要导入它。如果有人问我这个问题,我很抱歉,但我还没有找到很多对我正在尝试做的事情有意义的解决方案,或者它们的编码方式让我不确定如何将其应用到我的代码中。以下是我目前掌握的代码:
 
Private Function crwn_initdim(ByVal dimname As String, ByVal dimscale As Double, ByVal dimangdec As Integer, ByVal dimaltunits As Integer, ByVal dimaltdec As Integer, _
                              ByVal dimaltf As Integer, ByVal dimaltround As Integer, ByVal dimaltdec1 As Integer, ByVal dimaltzsup As Integer, ByVal dimaltunits1 As Integer, _
                              ByVal dimaltsup As Integer, ByVal dimapost As String, ByVal dimarcsymbol As Integer, ByVal dimarrowsize As Integer, ByVal dimatfit As Integer, _
                              ByVal dimaunit As Integer, ByVal dimazin As Integer, ByVal dimblock As String)
       Dim crwn_dimid As ObjectId = Nothing 'dimid
       Dim crwn_doclock As DocumentLock = Application.DocumentManager.MdiActiveDocument.LockDocument()
       Dim crwn_database As Database = Application.DocumentManager.MdiActiveDocument.Database
       Dim crwn_transaction As Transaction = crwn_database.TransactionManager.StartTransaction()
       Dim crwn_dimstyle As DimStyleTableRecord


       Try
         Dim crwn_dimblktbl As BlockTable = crwn_transaction.GetObject(crwn_database.BlockTableId, OpenMode.ForNotify, False)
         Dim crwn_dimtable As DimStyleTable = crwn_transaction.GetObject(crwn_database.DimStyleTableId, OpenMode.ForRead, False)

         If crwn_dimblktbl.Has(dimblock) = False Then
               MsgBox("Warning")
         Else
               'ObjectId
         End If

         If crwn_dimtable.Has(dimname) = False Then
               crwn_dimstyle = New DimStyleTableRecord
               crwn_dimstyle.Name = dimname
               crwn_dimstyle.Dimscale = dimscale
               crwn_dimstyle.Dimadec = dimangdec
               crwn_dimstyle.Dimalt = dimaltunits
               crwn_dimstyle.Dimaltd = dimaltdec
               crwn_dimstyle.Dimaltf = dimaltf
               crwn_dimstyle.Dimaltrnd = dimaltround
               crwn_dimstyle.Dimalttd = dimaltdec1
               crwn_dimstyle.Dimalttz = dimaltzsup
               crwn_dimstyle.Dimaltu = dimaltunits1
               crwn_dimstyle.Dimaltz = dimaltsup
               crwn_dimstyle.Dimapost = dimapost
               crwn_dimstyle.Dimarcsym = dimarcsymbol
               crwn_dimstyle.Dimasz = dimarrowsize
               crwn_dimstyle.Dimatfit = dimatfit
               crwn_dimstyle.Dimaunit = dimaunit
               crwn_dimstyle.Dimazin = dimazin
               crwn_dimstyle.Dimblk = dimblock

               crwn_dimtable.UpgradeOpen()
               crwn_dimtable.Add(crwn_dimstyle)
               crwn_transaction.AddNewlyCreatedDBObject(crwn_dimstyle, True)
               crwn_dimtable.DowngradeOpen()
         End If
         crwn_dimid = crwn_dimtable.Item(dimname)
         crwn_transaction.Commit()
       Catch ex As Exception
         crwn_transaction.Abort()
       Finally
         crwn_transaction.Dispose()
         crwn_doclock.Dispose()
       End Try
       Return crwn_dimid
   End Function
页: [1]
查看完整版本: 正在尝试设置Dimblk VB。网