<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Insert block from disk in .NET Forum</title>
    <link>https://forums.autodesk.com/t5/net-forum/insert-block-from-disk/m-p/1932284#M78473</link>
    <description>tp, is there any way i can beg you to comment on the code? I have the need to import a block into an existing drawing from another dwg file. unfortunately i have very little experience and i am not sure how your code works.&lt;BR /&gt;
&lt;BR /&gt;
thanks</description>
    <pubDate>Tue, 04 Dec 2007 15:33:08 GMT</pubDate>
    <dc:creator>Anonymous</dc:creator>
    <dc:date>2007-12-04T15:33:08Z</dc:date>
    <item>
      <title>Insert block from disk</title>
      <link>https://forums.autodesk.com/t5/net-forum/insert-block-from-disk/m-p/1932281#M78470</link>
      <description>Hi all,&lt;BR /&gt;
&lt;BR /&gt;
In vb.net I want to insert a block in my dwg.&lt;BR /&gt;
That block is stored on disk as dwg .&lt;BR /&gt;
Creating a block that's already loaded isn't a problem (get the block object &lt;BR /&gt;
id from blocktable and then insert it)&lt;BR /&gt;
&lt;BR /&gt;
But what if the block isn't in the blocktable and i have to load it from &lt;BR /&gt;
disk ?&lt;BR /&gt;
&lt;BR /&gt;
Tnx,&lt;BR /&gt;
&lt;BR /&gt;
Peter</description>
      <pubDate>Wed, 04 Apr 2007 08:48:07 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/net-forum/insert-block-from-disk/m-p/1932281#M78470</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2007-04-04T08:48:07Z</dc:date>
    </item>
    <item>
      <title>Re: Insert block from disk</title>
      <link>https://forums.autodesk.com/t5/net-forum/insert-block-from-disk/m-p/1932282#M78471</link>
      <description>I hope that this can help&lt;BR /&gt;
&lt;BR /&gt;
Imports AcDb = Autodesk.AutoCAD.DatabaseServices&lt;BR /&gt;
Imports AcGe = Autodesk.AutoCAD.Geometry&lt;BR /&gt;
&lt;BR /&gt;
' Import a block from a external drawing&lt;BR /&gt;
&lt;BR /&gt;
      Shared Function ImportBlock(ByVal FileName As String, _&lt;BR /&gt;
      ByVal blockname As String, _&lt;BR /&gt;
      Optional ByVal silent As Boolean = True) As AcDb.ObjectId&lt;BR /&gt;
         Dim id As AcDb.ObjectId = BlockNameToID(blockname)&lt;BR /&gt;
         If id &amp;lt;&amp;gt; Nothing Then Return id&lt;BR /&gt;
         If Not File.Exists(FileName) Then&lt;BR /&gt;
            If Not silent Then MsgBox("File not found: " &amp;amp; FileName)&lt;BR /&gt;
            Return Nothing&lt;BR /&gt;
         End If&lt;BR /&gt;
         Using db As AcDb.Database = New AcDb.Database&lt;BR /&gt;
            db.ReadDwgFile(FileName, FileShare.ReadWrite, True, "")&lt;BR /&gt;
            Using tr As AcDb.Transaction =&lt;BR /&gt;
db.TransactionManager.StartTransaction&lt;BR /&gt;
               Using tbl As AcDb.BlockTable =&lt;BR /&gt;
CType(tr.GetObject(db.BlockTableId, AcDb.OpenMode.ForRead), &lt;BR /&gt;
AcDb.BlockTable)&lt;BR /&gt;
                  If tbl.Has(blockname) Then&lt;BR /&gt;
                     id = tbl(blockname)&lt;BR /&gt;
                     Dim blk As AcDb.BlockTableRecord = _&lt;BR /&gt;
                           CType(db.TransactionManager.GetObject(id,&lt;BR /&gt;
AcDb.OpenMode.ForRead, False), AcDb.BlockTableRecord)&lt;BR /&gt;
                     Dim col As AcDb.ObjectIdCollection = New&lt;BR /&gt;
AcDb.ObjectIdCollection(New AcDb.ObjectId() {blk.ObjectId})&lt;BR /&gt;
                     db.Wblock(AcDb.HostApplicationServices.WorkingDatabase(),&lt;BR /&gt;
col, New AcGe.Point3d(0, 0, 0), AcDb.DuplicateRecordCloning.Ignore)&lt;BR /&gt;
                     tr.Commit()&lt;BR /&gt;
                  Else&lt;BR /&gt;
                     If Not silent Then MsgBox("Block not found: " &amp;amp;&lt;BR /&gt;
blockname)&lt;BR /&gt;
                     Return Nothing&lt;BR /&gt;
                  End If&lt;BR /&gt;
               End Using&lt;BR /&gt;
            End Using&lt;BR /&gt;
            db.CloseInput(True)&lt;BR /&gt;
         End Using&lt;BR /&gt;
         Return BlockNameToID(blockname)&lt;BR /&gt;
      End Function&lt;BR /&gt;
&lt;BR /&gt;
      Shared Function BlockNameToID(ByVal BlockName As String) As&lt;BR /&gt;
AcDb.ObjectId&lt;BR /&gt;
         Dim tbl As AcDb.BlockTable = GetBlockTableForRead&lt;BR /&gt;
         If tbl.Has(BlockName) Then&lt;BR /&gt;
            Return tbl.Item(BlockName)&lt;BR /&gt;
         End If&lt;BR /&gt;
         Return Nothing&lt;BR /&gt;
      End Function&lt;BR /&gt;
&lt;BR /&gt;
      Shared Function GetBlockTableForRead() As AcDb.BlockTable&lt;BR /&gt;
         Using db As AcDb.Database =&lt;BR /&gt;
AcDb.HostApplicationServices.WorkingDatabase()&lt;BR /&gt;
            Using tr As AcDb.Transaction =&lt;BR /&gt;
db.TransactionManager.StartTransaction&lt;BR /&gt;
               Try&lt;BR /&gt;
                  Return CType(tr.GetObject(db.BlockTableId,&lt;BR /&gt;
AcDb.OpenMode.ForRead, False), AcDb.BlockTable)&lt;BR /&gt;
               Catch ex As Exception&lt;BR /&gt;
               End Try&lt;BR /&gt;
            End Using&lt;BR /&gt;
         End Using&lt;BR /&gt;
         Return Nothing&lt;BR /&gt;
      End Function&lt;BR /&gt;
&lt;BR /&gt;
' Insert an external drawing as a block&lt;BR /&gt;
&lt;BR /&gt;
      Shared Sub InsertDrawing(ByVal dwgName As String, ByVal insPt As&lt;BR /&gt;
AcGe.Point3d, _&lt;BR /&gt;
      ByVal s3d As AcGe.Scale3d, ByVal rot As Double)&lt;BR /&gt;
         Dim blkName As String = Path.GetFileNameWithoutExtension(dwgName)&lt;BR /&gt;
         Using db As AcDb.Database =&lt;BR /&gt;
AcDb.HostApplicationServices.WorkingDatabase()&lt;BR /&gt;
            Using tr As AcDb.Transaction =&lt;BR /&gt;
db.TransactionManager.StartTransaction&lt;BR /&gt;
               Try&lt;BR /&gt;
                  Dim id As AcDb.ObjectId = Nothing&lt;BR /&gt;
                  Using bt As AcDb.BlockTable =&lt;BR /&gt;
tr.GetObject(db.BlockTableId, AcDb.OpenMode.ForRead, True)&lt;BR /&gt;
                     If Not bt.Has(blkName) Then&lt;BR /&gt;
                        Using sourceDb As AcDb.Database = New&lt;BR /&gt;
AcDb.Database(False, False)&lt;BR /&gt;
                           sourceDb.ReadDwgFile(dwgName, FileShare.Read,&lt;BR /&gt;
True, "")&lt;BR /&gt;
                           id = db.Insert(dwgName, sourceDb, False)&lt;BR /&gt;
                           Dim blk As AcDb.BlockTableRecord =&lt;BR /&gt;
tr.GetObject(id, AcDb.OpenMode.ForWrite, False, True)&lt;BR /&gt;
                           blk.Name = blkName&lt;BR /&gt;
                        End Using&lt;BR /&gt;
                     Else&lt;BR /&gt;
                        id = bt.Item(blkName)&lt;BR /&gt;
                     End If&lt;BR /&gt;
                  End Using&lt;BR /&gt;
                  Dim btr As AcDb.BlockTableRecord =&lt;BR /&gt;
tr.GetObject(db.CurrentSpaceId, AcDb.OpenMode.ForWrite, True)&lt;BR /&gt;
                  Dim bref As AcDb.BlockReference = New&lt;BR /&gt;
AcDb.BlockReference(insPt, id)&lt;BR /&gt;
                  bref.ScaleFactors = s3d&lt;BR /&gt;
                  bref.Rotation = rot&lt;BR /&gt;
                  tr.AddNewlyCreatedDBObject(bref, True)&lt;BR /&gt;
                  bref.Dispose()&lt;BR /&gt;
                  btr.Dispose()&lt;BR /&gt;
                  tr.Commit()&lt;BR /&gt;
               Catch ex As Exception&lt;BR /&gt;
                  MsgBox(ex.ToString)&lt;BR /&gt;
               End Try&lt;BR /&gt;
            End Using&lt;BR /&gt;
         End Using&lt;BR /&gt;
      End Function&lt;BR /&gt;
&lt;BR /&gt;
tp&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
I'm protected by SpamBrave&lt;BR /&gt;
http://www.spambrave.com/</description>
      <pubDate>Wed, 04 Apr 2007 10:23:51 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/net-forum/insert-block-from-disk/m-p/1932282#M78471</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2007-04-04T10:23:51Z</dc:date>
    </item>
    <item>
      <title>Re: Insert block from disk</title>
      <link>https://forums.autodesk.com/t5/net-forum/insert-block-from-disk/m-p/1932283#M78472</link>
      <description>that's it&lt;BR /&gt;
&lt;BR /&gt;
tnx&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
"tp" &lt;TEODOLO&gt; schreef in bericht &lt;BR /&gt;
news:5540902@discussion.autodesk.com...&lt;BR /&gt;
I hope that this can help&lt;BR /&gt;
&lt;BR /&gt;
Imports AcDb = Autodesk.AutoCAD.DatabaseServices&lt;BR /&gt;
Imports AcGe = Autodesk.AutoCAD.Geometry&lt;BR /&gt;
&lt;BR /&gt;
' Import a block from a external drawing&lt;BR /&gt;
&lt;BR /&gt;
      Shared Function ImportBlock(ByVal FileName As String, _&lt;BR /&gt;
      ByVal blockname As String, _&lt;BR /&gt;
      Optional ByVal silent As Boolean = True) As AcDb.ObjectId&lt;BR /&gt;
         Dim id As AcDb.ObjectId = BlockNameToID(blockname)&lt;BR /&gt;
         If id &amp;lt;&amp;gt; Nothing Then Return id&lt;BR /&gt;
         If Not File.Exists(FileName) Then&lt;BR /&gt;
            If Not silent Then MsgBox("File not found: " &amp;amp; FileName)&lt;BR /&gt;
            Return Nothing&lt;BR /&gt;
         End If&lt;BR /&gt;
         Using db As AcDb.Database = New AcDb.Database&lt;BR /&gt;
            db.ReadDwgFile(FileName, FileShare.ReadWrite, True, "")&lt;BR /&gt;
            Using tr As AcDb.Transaction =&lt;BR /&gt;
db.TransactionManager.StartTransaction&lt;BR /&gt;
               Using tbl As AcDb.BlockTable =&lt;BR /&gt;
CType(tr.GetObject(db.BlockTableId, AcDb.OpenMode.ForRead),&lt;BR /&gt;
AcDb.BlockTable)&lt;BR /&gt;
                  If tbl.Has(blockname) Then&lt;BR /&gt;
                     id = tbl(blockname)&lt;BR /&gt;
                     Dim blk As AcDb.BlockTableRecord = _&lt;BR /&gt;
                           CType(db.TransactionManager.GetObject(id,&lt;BR /&gt;
AcDb.OpenMode.ForRead, False), AcDb.BlockTableRecord)&lt;BR /&gt;
                     Dim col As AcDb.ObjectIdCollection = New&lt;BR /&gt;
AcDb.ObjectIdCollection(New AcDb.ObjectId() {blk.ObjectId})&lt;BR /&gt;
                     db.Wblock(AcDb.HostApplicationServices.WorkingDatabase(),&lt;BR /&gt;
col, New AcGe.Point3d(0, 0, 0), AcDb.DuplicateRecordCloning.Ignore)&lt;BR /&gt;
                     tr.Commit()&lt;BR /&gt;
                  Else&lt;BR /&gt;
                     If Not silent Then MsgBox("Block not found: " &amp;amp;&lt;BR /&gt;
blockname)&lt;BR /&gt;
                     Return Nothing&lt;BR /&gt;
                  End If&lt;BR /&gt;
               End Using&lt;BR /&gt;
            End Using&lt;BR /&gt;
            db.CloseInput(True)&lt;BR /&gt;
         End Using&lt;BR /&gt;
         Return BlockNameToID(blockname)&lt;BR /&gt;
      End Function&lt;BR /&gt;
&lt;BR /&gt;
      Shared Function BlockNameToID(ByVal BlockName As String) As&lt;BR /&gt;
AcDb.ObjectId&lt;BR /&gt;
         Dim tbl As AcDb.BlockTable = GetBlockTableForRead&lt;BR /&gt;
         If tbl.Has(BlockName) Then&lt;BR /&gt;
            Return tbl.Item(BlockName)&lt;BR /&gt;
         End If&lt;BR /&gt;
         Return Nothing&lt;BR /&gt;
      End Function&lt;BR /&gt;
&lt;BR /&gt;
      Shared Function GetBlockTableForRead() As AcDb.BlockTable&lt;BR /&gt;
         Using db As AcDb.Database =&lt;BR /&gt;
AcDb.HostApplicationServices.WorkingDatabase()&lt;BR /&gt;
            Using tr As AcDb.Transaction =&lt;BR /&gt;
db.TransactionManager.StartTransaction&lt;BR /&gt;
               Try&lt;BR /&gt;
                  Return CType(tr.GetObject(db.BlockTableId,&lt;BR /&gt;
AcDb.OpenMode.ForRead, False), AcDb.BlockTable)&lt;BR /&gt;
               Catch ex As Exception&lt;BR /&gt;
               End Try&lt;BR /&gt;
            End Using&lt;BR /&gt;
         End Using&lt;BR /&gt;
         Return Nothing&lt;BR /&gt;
      End Function&lt;BR /&gt;
&lt;BR /&gt;
' Insert an external drawing as a block&lt;BR /&gt;
&lt;BR /&gt;
      Shared Sub InsertDrawing(ByVal dwgName As String, ByVal insPt As&lt;BR /&gt;
AcGe.Point3d, _&lt;BR /&gt;
      ByVal s3d As AcGe.Scale3d, ByVal rot As Double)&lt;BR /&gt;
         Dim blkName As String = Path.GetFileNameWithoutExtension(dwgName)&lt;BR /&gt;
         Using db As AcDb.Database =&lt;BR /&gt;
AcDb.HostApplicationServices.WorkingDatabase()&lt;BR /&gt;
            Using tr As AcDb.Transaction =&lt;BR /&gt;
db.TransactionManager.StartTransaction&lt;BR /&gt;
               Try&lt;BR /&gt;
                  Dim id As AcDb.ObjectId = Nothing&lt;BR /&gt;
                  Using bt As AcDb.BlockTable =&lt;BR /&gt;
tr.GetObject(db.BlockTableId, AcDb.OpenMode.ForRead, True)&lt;BR /&gt;
                     If Not bt.Has(blkName) Then&lt;BR /&gt;
                        Using sourceDb As AcDb.Database = New&lt;BR /&gt;
AcDb.Database(False, False)&lt;BR /&gt;
                           sourceDb.ReadDwgFile(dwgName, FileShare.Read,&lt;BR /&gt;
True, "")&lt;BR /&gt;
                           id = db.Insert(dwgName, sourceDb, False)&lt;BR /&gt;
                           Dim blk As AcDb.BlockTableRecord =&lt;BR /&gt;
tr.GetObject(id, AcDb.OpenMode.ForWrite, False, True)&lt;BR /&gt;
                           blk.Name = blkName&lt;BR /&gt;
                        End Using&lt;BR /&gt;
                     Else&lt;BR /&gt;
                        id = bt.Item(blkName)&lt;BR /&gt;
                     End If&lt;BR /&gt;
                  End Using&lt;BR /&gt;
                  Dim btr As AcDb.BlockTableRecord =&lt;BR /&gt;
tr.GetObject(db.CurrentSpaceId, AcDb.OpenMode.ForWrite, True)&lt;BR /&gt;
                  Dim bref As AcDb.BlockReference = New&lt;BR /&gt;
AcDb.BlockReference(insPt, id)&lt;BR /&gt;
                  bref.ScaleFactors = s3d&lt;BR /&gt;
                  bref.Rotation = rot&lt;BR /&gt;
                  tr.AddNewlyCreatedDBObject(bref, True)&lt;BR /&gt;
                  bref.Dispose()&lt;BR /&gt;
                  btr.Dispose()&lt;BR /&gt;
                  tr.Commit()&lt;BR /&gt;
               Catch ex As Exception&lt;BR /&gt;
                  MsgBox(ex.ToString)&lt;BR /&gt;
               End Try&lt;BR /&gt;
            End Using&lt;BR /&gt;
         End Using&lt;BR /&gt;
      End Function&lt;BR /&gt;
&lt;BR /&gt;
tp&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
I'm protected by SpamBrave&lt;BR /&gt;
http://www.spambrave.com/&lt;/TEODOLO&gt;</description>
      <pubDate>Wed, 04 Apr 2007 13:54:52 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/net-forum/insert-block-from-disk/m-p/1932283#M78472</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2007-04-04T13:54:52Z</dc:date>
    </item>
    <item>
      <title>Re: Insert block from disk</title>
      <link>https://forums.autodesk.com/t5/net-forum/insert-block-from-disk/m-p/1932284#M78473</link>
      <description>tp, is there any way i can beg you to comment on the code? I have the need to import a block into an existing drawing from another dwg file. unfortunately i have very little experience and i am not sure how your code works.&lt;BR /&gt;
&lt;BR /&gt;
thanks</description>
      <pubDate>Tue, 04 Dec 2007 15:33:08 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/net-forum/insert-block-from-disk/m-p/1932284#M78473</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2007-12-04T15:33:08Z</dc:date>
    </item>
    <item>
      <title>Re: Insert block from disk</title>
      <link>https://forums.autodesk.com/t5/net-forum/insert-block-from-disk/m-p/1932285#M78474</link>
      <description>Hi TP&lt;BR /&gt;
Shared Sub InsertDrawing(ByVal dwgName As String, ByVal insPt As&lt;BR /&gt;
AcGe.Point3d, _&lt;BR /&gt;
ByVal s3d As AcGe.Scale3d, ByVal rot As Double)&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
From any module i Can call this Function but please tell me about the passing parameters......&lt;BR /&gt;
&lt;BR /&gt;
InsertDrawing("C:\sam.dwg",??,??,??)&lt;BR /&gt;
&lt;BR /&gt;
Please give me any Sample......&lt;BR /&gt;
Thanks a lot in advance.....</description>
      <pubDate>Thu, 24 Jan 2008 06:12:00 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/net-forum/insert-block-from-disk/m-p/1932285#M78474</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2008-01-24T06:12:00Z</dc:date>
    </item>
  </channel>
</rss>

