<?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: Possible to insert block from external DWG w/o inserting whole DWG? in VBA Forum</title>
    <link>https://forums.autodesk.com/t5/vba-forum/possible-to-insert-block-from-external-dwg-w-o-inserting-whole/m-p/2001461#M24680</link>
    <description>Option Explicit&lt;BR /&gt;
&lt;BR /&gt;
Private Sub CommandButton5_Click()&lt;BR /&gt;
    Dim VntList As Variant&lt;BR /&gt;
    Dim sBlock As String&lt;BR /&gt;
    Dim sFile As String&lt;BR /&gt;
    Dim i As Integer&lt;BR /&gt;
    Dim pt(2) As Double&lt;BR /&gt;
    &lt;BR /&gt;
    pt(0) = 0&lt;BR /&gt;
    pt(1) = 0&lt;BR /&gt;
    pt(2) = 0&lt;BR /&gt;
    &lt;BR /&gt;
    sFile = "C:\Program Files\AutoCAD 2005\test.dwg" 'Drawing File&lt;BR /&gt;
    sBlock = "nut" 'Block Name located in Drawing File&lt;BR /&gt;
    &lt;BR /&gt;
    VntList = GetBlockListFrom(sFile)&lt;BR /&gt;
    &lt;BR /&gt;
    If UBound(VntList) &amp;gt;= 1 Then&lt;BR /&gt;
        For i = 1 To UBound(VntList)&lt;BR /&gt;
            If VntList(i) = sBlock Then&lt;BR /&gt;
            Call CopyBlockFrom(sFile, CStr(VntList(1)))&lt;BR /&gt;
            Call ThisDrawing.ModelSpace.InsertBlock(pt, sBlock, 1, 1, 1, 0)&lt;BR /&gt;
            Exit For&lt;BR /&gt;
            End If&lt;BR /&gt;
        Next i&lt;BR /&gt;
    End If&lt;BR /&gt;
    &lt;BR /&gt;
End Sub&lt;BR /&gt;
&lt;BR /&gt;
Private Function GetBlockListFrom(sDwgFile As String) As Variant&lt;BR /&gt;
    Dim dbxDoc As Object&lt;BR /&gt;
    Dim sBlock() As Variant&lt;BR /&gt;
    &lt;BR /&gt;
    On Error GoTo myfix&lt;BR /&gt;
    &lt;BR /&gt;
    Set dbxDoc = AcadApplication.GetInterfaceObject("ObjectDBX.AxDbDocument.16")&lt;BR /&gt;
    dbxDoc.Open sDwgFile&lt;BR /&gt;
    &lt;BR /&gt;
    Dim Block As AcadBlock&lt;BR /&gt;
    ReDim sBlock(0)&lt;BR /&gt;
    sBlock(0) = "BlockList"&lt;BR /&gt;
    &lt;BR /&gt;
    For Each Block In dbxDoc.Blocks&lt;BR /&gt;
        If Mid(Block.Name, 1, 1) &amp;lt;&amp;gt; "*" Then&lt;BR /&gt;
            ReDim Preserve sBlock(UBound(sBlock) + 1)&lt;BR /&gt;
            sBlock(UBound(sBlock)) = Block.Name&lt;BR /&gt;
        End If&lt;BR /&gt;
    Next Block&lt;BR /&gt;
    &lt;BR /&gt;
    GetBlockListFrom = sBlock&lt;BR /&gt;
    Set dbxDoc = Nothing&lt;BR /&gt;
    &lt;BR /&gt;
myfix:&lt;BR /&gt;
    Err = 0&lt;BR /&gt;
    GetBlockListFrom = sBlock&lt;BR /&gt;
    Set dbxDoc = Nothing&lt;BR /&gt;
End Function&lt;BR /&gt;
&lt;BR /&gt;
Private Function CopyBlockFrom(sDwgFile As String, sBlock As String) As Boolean&lt;BR /&gt;
    Dim dbxDoc As Object&lt;BR /&gt;
    Dim objs As AcadBlock&lt;BR /&gt;
    Dim objb(0) As Object&lt;BR /&gt;
    &lt;BR /&gt;
    On Error GoTo myfix&lt;BR /&gt;
    &lt;BR /&gt;
    Set dbxDoc = AcadApplication.GetInterfaceObject("ObjectDBX.AxDbDocument.16")&lt;BR /&gt;
    dbxDoc.Open sDwgFile&lt;BR /&gt;
    &lt;BR /&gt;
    Dim Block As AcadBlock&lt;BR /&gt;
&lt;BR /&gt;
    For Each Block In dbxDoc.Blocks&lt;BR /&gt;
        If Block.Name = sBlock Then&lt;BR /&gt;
            Set objs = Block&lt;BR /&gt;
            Exit For&lt;BR /&gt;
        End If&lt;BR /&gt;
    Next Block&lt;BR /&gt;
    &lt;BR /&gt;
    Set objb(0) = objs&lt;BR /&gt;
    dbxDoc.CopyObjects objb, ThisDrawing.Database.Blocks&lt;BR /&gt;
    &lt;BR /&gt;
    CopyBlockFrom = True&lt;BR /&gt;
    Set dbxDoc = Nothing&lt;BR /&gt;
    &lt;BR /&gt;
Exit Function&lt;BR /&gt;
&lt;BR /&gt;
myfix:&lt;BR /&gt;
    Err = 0&lt;BR /&gt;
    CopyBlockFrom = False&lt;BR /&gt;
    Set dbxDoc = Nothing&lt;BR /&gt;
End Function</description>
    <pubDate>Fri, 22 Jun 2007 18:17:39 GMT</pubDate>
    <dc:creator>Anonymous</dc:creator>
    <dc:date>2007-06-22T18:17:39Z</dc:date>
    <item>
      <title>Possible to insert block from external DWG w/o inserting whole DWG?</title>
      <link>https://forums.autodesk.com/t5/vba-forum/possible-to-insert-block-from-external-dwg-w-o-inserting-whole/m-p/2001460#M24679</link>
      <description>Hi i need de code to insert a block that is defined inside other DWG file without open this file.&lt;BR /&gt;
Thanks</description>
      <pubDate>Fri, 22 Jun 2007 12:14:51 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/vba-forum/possible-to-insert-block-from-external-dwg-w-o-inserting-whole/m-p/2001460#M24679</guid>
      <dc:creator>junagore</dc:creator>
      <dc:date>2007-06-22T12:14:51Z</dc:date>
    </item>
    <item>
      <title>Re: Possible to insert block from external DWG w/o inserting whole DWG?</title>
      <link>https://forums.autodesk.com/t5/vba-forum/possible-to-insert-block-from-external-dwg-w-o-inserting-whole/m-p/2001461#M24680</link>
      <description>Option Explicit&lt;BR /&gt;
&lt;BR /&gt;
Private Sub CommandButton5_Click()&lt;BR /&gt;
    Dim VntList As Variant&lt;BR /&gt;
    Dim sBlock As String&lt;BR /&gt;
    Dim sFile As String&lt;BR /&gt;
    Dim i As Integer&lt;BR /&gt;
    Dim pt(2) As Double&lt;BR /&gt;
    &lt;BR /&gt;
    pt(0) = 0&lt;BR /&gt;
    pt(1) = 0&lt;BR /&gt;
    pt(2) = 0&lt;BR /&gt;
    &lt;BR /&gt;
    sFile = "C:\Program Files\AutoCAD 2005\test.dwg" 'Drawing File&lt;BR /&gt;
    sBlock = "nut" 'Block Name located in Drawing File&lt;BR /&gt;
    &lt;BR /&gt;
    VntList = GetBlockListFrom(sFile)&lt;BR /&gt;
    &lt;BR /&gt;
    If UBound(VntList) &amp;gt;= 1 Then&lt;BR /&gt;
        For i = 1 To UBound(VntList)&lt;BR /&gt;
            If VntList(i) = sBlock Then&lt;BR /&gt;
            Call CopyBlockFrom(sFile, CStr(VntList(1)))&lt;BR /&gt;
            Call ThisDrawing.ModelSpace.InsertBlock(pt, sBlock, 1, 1, 1, 0)&lt;BR /&gt;
            Exit For&lt;BR /&gt;
            End If&lt;BR /&gt;
        Next i&lt;BR /&gt;
    End If&lt;BR /&gt;
    &lt;BR /&gt;
End Sub&lt;BR /&gt;
&lt;BR /&gt;
Private Function GetBlockListFrom(sDwgFile As String) As Variant&lt;BR /&gt;
    Dim dbxDoc As Object&lt;BR /&gt;
    Dim sBlock() As Variant&lt;BR /&gt;
    &lt;BR /&gt;
    On Error GoTo myfix&lt;BR /&gt;
    &lt;BR /&gt;
    Set dbxDoc = AcadApplication.GetInterfaceObject("ObjectDBX.AxDbDocument.16")&lt;BR /&gt;
    dbxDoc.Open sDwgFile&lt;BR /&gt;
    &lt;BR /&gt;
    Dim Block As AcadBlock&lt;BR /&gt;
    ReDim sBlock(0)&lt;BR /&gt;
    sBlock(0) = "BlockList"&lt;BR /&gt;
    &lt;BR /&gt;
    For Each Block In dbxDoc.Blocks&lt;BR /&gt;
        If Mid(Block.Name, 1, 1) &amp;lt;&amp;gt; "*" Then&lt;BR /&gt;
            ReDim Preserve sBlock(UBound(sBlock) + 1)&lt;BR /&gt;
            sBlock(UBound(sBlock)) = Block.Name&lt;BR /&gt;
        End If&lt;BR /&gt;
    Next Block&lt;BR /&gt;
    &lt;BR /&gt;
    GetBlockListFrom = sBlock&lt;BR /&gt;
    Set dbxDoc = Nothing&lt;BR /&gt;
    &lt;BR /&gt;
myfix:&lt;BR /&gt;
    Err = 0&lt;BR /&gt;
    GetBlockListFrom = sBlock&lt;BR /&gt;
    Set dbxDoc = Nothing&lt;BR /&gt;
End Function&lt;BR /&gt;
&lt;BR /&gt;
Private Function CopyBlockFrom(sDwgFile As String, sBlock As String) As Boolean&lt;BR /&gt;
    Dim dbxDoc As Object&lt;BR /&gt;
    Dim objs As AcadBlock&lt;BR /&gt;
    Dim objb(0) As Object&lt;BR /&gt;
    &lt;BR /&gt;
    On Error GoTo myfix&lt;BR /&gt;
    &lt;BR /&gt;
    Set dbxDoc = AcadApplication.GetInterfaceObject("ObjectDBX.AxDbDocument.16")&lt;BR /&gt;
    dbxDoc.Open sDwgFile&lt;BR /&gt;
    &lt;BR /&gt;
    Dim Block As AcadBlock&lt;BR /&gt;
&lt;BR /&gt;
    For Each Block In dbxDoc.Blocks&lt;BR /&gt;
        If Block.Name = sBlock Then&lt;BR /&gt;
            Set objs = Block&lt;BR /&gt;
            Exit For&lt;BR /&gt;
        End If&lt;BR /&gt;
    Next Block&lt;BR /&gt;
    &lt;BR /&gt;
    Set objb(0) = objs&lt;BR /&gt;
    dbxDoc.CopyObjects objb, ThisDrawing.Database.Blocks&lt;BR /&gt;
    &lt;BR /&gt;
    CopyBlockFrom = True&lt;BR /&gt;
    Set dbxDoc = Nothing&lt;BR /&gt;
    &lt;BR /&gt;
Exit Function&lt;BR /&gt;
&lt;BR /&gt;
myfix:&lt;BR /&gt;
    Err = 0&lt;BR /&gt;
    CopyBlockFrom = False&lt;BR /&gt;
    Set dbxDoc = Nothing&lt;BR /&gt;
End Function</description>
      <pubDate>Fri, 22 Jun 2007 18:17:39 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/vba-forum/possible-to-insert-block-from-external-dwg-w-o-inserting-whole/m-p/2001461#M24680</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2007-06-22T18:17:39Z</dc:date>
    </item>
    <item>
      <title>Re: Possible to insert block from external DWG w/o inserting whole DWG?</title>
      <link>https://forums.autodesk.com/t5/vba-forum/possible-to-insert-block-from-external-dwg-w-o-inserting-whole/m-p/2001462#M24681</link>
      <description>I hade a error it try this&lt;BR /&gt;
&lt;BR /&gt;
Option Explicit&lt;BR /&gt;
&lt;BR /&gt;
Private Sub CommandButton5_Click()&lt;BR /&gt;
Dim VntList As Variant&lt;BR /&gt;
Dim sBlock As String&lt;BR /&gt;
Dim sFile As String&lt;BR /&gt;
Dim i As Integer&lt;BR /&gt;
Dim pt(2) As Double&lt;BR /&gt;
&lt;BR /&gt;
pt(0) = 0&lt;BR /&gt;
pt(1) = 0&lt;BR /&gt;
pt(2) = 0&lt;BR /&gt;
&lt;BR /&gt;
sFile = "C:\Program Files\AutoCAD 2005\test.dwg" 'Drawing File&lt;BR /&gt;
sBlock = "nut" 'Block Name located in Drawing File&lt;BR /&gt;
&lt;BR /&gt;
VntList = GetBlockListFrom(sFile)&lt;BR /&gt;
&lt;BR /&gt;
If UBound(VntList) &amp;gt;= 1 Then&lt;BR /&gt;
For i = 1 To UBound(VntList)&lt;BR /&gt;
If VntList(i) = sBlock Then&lt;BR /&gt;
Call CopyBlockFrom(sFile, CStr(VntList(i)))&lt;BR /&gt;
Call ThisDrawing.ModelSpace.InsertBlock(pt, sBlock, 1, 1, 1, 0)&lt;BR /&gt;
Exit For&lt;BR /&gt;
End If&lt;BR /&gt;
Next i&lt;BR /&gt;
End If&lt;BR /&gt;
&lt;BR /&gt;
End Sub&lt;BR /&gt;
&lt;BR /&gt;
Private Function GetBlockListFrom(sDwgFile As String) As Variant&lt;BR /&gt;
Dim dbxDoc As Object&lt;BR /&gt;
Dim sBlock() As Variant&lt;BR /&gt;
&lt;BR /&gt;
On Error GoTo myfix&lt;BR /&gt;
&lt;BR /&gt;
Set dbxDoc = AcadApplication.GetInterfaceObject("ObjectDBX.AxDbDocument.16")&lt;BR /&gt;
dbxDoc.Open sDwgFile&lt;BR /&gt;
&lt;BR /&gt;
Dim Block As AcadBlock&lt;BR /&gt;
ReDim sBlock(0)&lt;BR /&gt;
sBlock(0) = "BlockList"&lt;BR /&gt;
&lt;BR /&gt;
For Each Block In dbxDoc.Blocks&lt;BR /&gt;
If Mid(Block.Name, 1, 1) &amp;lt;&amp;gt; "*" Then&lt;BR /&gt;
ReDim Preserve sBlock(UBound(sBlock) + 1)&lt;BR /&gt;
sBlock(UBound(sBlock)) = Block.Name&lt;BR /&gt;
End If&lt;BR /&gt;
Next Block&lt;BR /&gt;
&lt;BR /&gt;
GetBlockListFrom = sBlock&lt;BR /&gt;
Set dbxDoc = Nothing&lt;BR /&gt;
&lt;BR /&gt;
myfix:&lt;BR /&gt;
Err = 0&lt;BR /&gt;
GetBlockListFrom = sBlock&lt;BR /&gt;
Set dbxDoc = Nothing&lt;BR /&gt;
End Function&lt;BR /&gt;
&lt;BR /&gt;
Private Function CopyBlockFrom(sDwgFile As String, sBlock As String) As Boolean&lt;BR /&gt;
Dim dbxDoc As Object&lt;BR /&gt;
Dim objs As AcadBlock&lt;BR /&gt;
Dim objb(0) As Object&lt;BR /&gt;
&lt;BR /&gt;
On Error GoTo myfix&lt;BR /&gt;
&lt;BR /&gt;
Set dbxDoc = AcadApplication.GetInterfaceObject("ObjectDBX.AxDbDocument.16")&lt;BR /&gt;
dbxDoc.Open sDwgFile&lt;BR /&gt;
&lt;BR /&gt;
Dim Block As AcadBlock&lt;BR /&gt;
&lt;BR /&gt;
For Each Block In dbxDoc.Blocks&lt;BR /&gt;
If Block.Name = sBlock Then&lt;BR /&gt;
Set objs = Block&lt;BR /&gt;
Exit For&lt;BR /&gt;
End If&lt;BR /&gt;
Next Block&lt;BR /&gt;
&lt;BR /&gt;
Set objb(0) = objs&lt;BR /&gt;
dbxDoc.CopyObjects objb, ThisDrawing.Database.Blocks&lt;BR /&gt;
&lt;BR /&gt;
CopyBlockFrom = True&lt;BR /&gt;
Set dbxDoc = Nothing&lt;BR /&gt;
&lt;BR /&gt;
Exit Function&lt;BR /&gt;
&lt;BR /&gt;
myfix:&lt;BR /&gt;
Err = 0&lt;BR /&gt;
CopyBlockFrom = False&lt;BR /&gt;
Set dbxDoc = Nothing&lt;BR /&gt;
End Function</description>
      <pubDate>Mon, 25 Jun 2007 17:06:09 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/vba-forum/possible-to-insert-block-from-external-dwg-w-o-inserting-whole/m-p/2001462#M24681</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2007-06-25T17:06:09Z</dc:date>
    </item>
    <item>
      <title>Re: Possible to insert block from external DWG w/o inserting whole DWG?</title>
      <link>https://forums.autodesk.com/t5/vba-forum/possible-to-insert-block-from-external-dwg-w-o-inserting-whole/m-p/2001463#M24682</link>
      <description>thanks, i´ll try it</description>
      <pubDate>Tue, 26 Jun 2007 08:23:56 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/vba-forum/possible-to-insert-block-from-external-dwg-w-o-inserting-whole/m-p/2001463#M24682</guid>
      <dc:creator>junagore</dc:creator>
      <dc:date>2007-06-26T08:23:56Z</dc:date>
    </item>
    <item>
      <title>Re: Possible to insert block from external DWG w/o inserting whole DWG?</title>
      <link>https://forums.autodesk.com/t5/vba-forum/possible-to-insert-block-from-external-dwg-w-o-inserting-whole/m-p/2001464#M24683</link>
      <description>Hi wowens9 , lots of thanks i´ll be very helpfull to me.</description>
      <pubDate>Tue, 26 Jun 2007 08:34:16 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/vba-forum/possible-to-insert-block-from-external-dwg-w-o-inserting-whole/m-p/2001464#M24683</guid>
      <dc:creator>junagore</dc:creator>
      <dc:date>2007-06-26T08:34:16Z</dc:date>
    </item>
  </channel>
</rss>

