bigr1822 发表于 2022-7-6 19:12:22

在VB中插入块。净额

团队
 
有没有人有任何样本代码,我可以使用vb插入一个块。网帮助文档基于vb。

BlackBox 发表于 2022-7-6 19:43:40

也许是这样?
 
伪代码:

   <CommandMethod("InsertBlock")> _
   Public Sub InsertBlock()
       Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
       acDoc.SendStringToExecute("._-insert <YouFillInTheRest>", False, False, False)
   End Sub
   

SEANT 发表于 2022-7-6 19:59:33

以下是通过首先使用对话框选择文件来插入块参照的示例。
 
它是适度基本的;例如,可以通过“跳汰”进一步扩展,以允许在插入过程中进行视觉反馈。这将增加相当多的复杂性。
 
 
观看文字换行!
 
      Public Sub InsertFromFileCommand()
         Dim ofd As OpenFileDialog = New OpenFileDialog()
         ofd.DefaultExt = ".dwg"
         ofd.Filter = "Drawing Files (*.dwg)|*.dwg"
         If ofd.ShowDialog() <> DialogResult.OK Then
               Return
         End If
         Dim doc As Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
         Dim db As Database = doc.Database
         Dim ed As Editor = doc.Editor
         Dim ppo As New PromptPointOptions(vbLf & "Insertion point: ")
         Dim ppr As PromptPointResult = ed.GetPoint(ppo)
         If ppr.Status <> PromptStatus.OK Then
               Return
         End If
         Using xDb As New Database(False, True)
               xDb.ReadDwgFile(ofd.FileName, FileShare.Read, True, Nothing)
               Using tr As Transaction = doc.TransactionManager.StartTransaction()
                   Dim name As String = SymbolUtilityServices.GetBlockNameFromInsertPathName(ofd.FileName)
                   Dim id As ObjectId = db.Insert(name, xDb, True)
                   If id.IsNull Then
                     ed.WriteMessage(vbLf & "Failed to insert block")
                     Return
                   End If
                   Dim currSpace As BlockTableRecord = CType(tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite), BlockTableRecord)
                   Dim p3d As Point3d = ppr.Value
                   Dim coordS As CoordinateSystem3d = New CoordinateSystem3d(p3d, db.Ucsxdir, db.Ucsydir) 'Determine UCS
                   Dim insert As New BlockReference(p3d, id)
                   insert.Normal = coordS.Zaxis 'Align to UCS
                   currSpace.AppendEntity(insert)
                   insert.SetDatabaseDefaults()
                   tr.AddNewlyCreatedDBObject(insert, True)
                   tr.Commit()
               End Using
         End Using
       End Sub

koranot 发表于 2022-7-6 20:21:50

嗨,肖特,
我为我自己的程序得到了你的部分代码,它按预期工作。代码非常有用,是将来改进代码的最佳示例。
非常感谢。
 
科拉诺
页: [1]
查看完整版本: 在VB中插入块。净额