<?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: read anonymous blocks in Civil 3D Customization Forum</title>
    <link>https://forums.autodesk.com/t5/civil-3d-customization-forum/read-anonymous-blocks/m-p/3670198#M19339</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;FONT color="#666699"&gt;&amp;gt;&amp;gt; Unable to cast object of type 'Autodesk.AutoCAD.DatabaseServices.BlockTableRecord' &lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;FONT color="#666699"&gt;&amp;gt;&amp;gt; to type 'Autodesk.AutoCAD.DatabaseServices.BlockReference'.&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;I have not tried it, but I guess that the function &lt;FONT color="#666699" face="lucida sans unicode,lucida sans"&gt;.GetAnonymousBlockIds&lt;/FONT&gt; returns ObjectIDs of BlockTableRecords.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So change your last shown code line to:&lt;/P&gt;&lt;P&gt;&lt;FONT color="#666699" face="lucida sans unicode,lucida sans"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim myBlockBTR as BlockTableRecord = DirectCast(tr.GetObject(refId, OpenMode.ForRead), BlockTableRecord)&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;...does that work?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;- alfred -&lt;/P&gt;</description>
    <pubDate>Tue, 23 Oct 2012 11:01:36 GMT</pubDate>
    <dc:creator>Alfred.NESWADBA</dc:creator>
    <dc:date>2012-10-23T11:01:36Z</dc:date>
    <item>
      <title>read anonymous blocks</title>
      <link>https://forums.autodesk.com/t5/civil-3d-customization-forum/read-anonymous-blocks/m-p/3670192#M19338</link>
      <description>&lt;P&gt;I have the follwoing error in C3D R2013.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Unable to cast object of type 'Autodesk.AutoCAD.DatabaseServices.BlockTableRecord' to type 'Autodesk.AutoCAD.DatabaseServices.BlockReference'.&lt;/P&gt;&lt;P&gt;When casting from a number, the value must be a number less than infinity&lt;/P&gt;&lt;P&gt;Make sure the source type is convertible to the destination type&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My code is:&lt;/P&gt;&lt;PRE&gt;Imports System
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Geometry
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD
Imports Autodesk.AutoCAD.ApplicationServices.Application
Imports Autodesk.AutoCAD.LayerManager
Imports Autodesk.AutoCAD.Windows
Imports Autodesk.AutoCAD.PlottingServices
Imports Autodesk.AutoCAD.Colors
Imports Autodesk.Civil.DatabaseServices
Imports Autodesk.Civil.ApplicationServices
Imports Autodesk.Civil.DatabaseServices.LabelGroup
Imports Autodesk.Civil.DatabaseServices.Styles.LabelSetStylesRoot
Imports Autodesk.Civil.Runtime
Imports Excel = Microsoft.Office.Interop.Excel
Imports Microsoft.VisualBasic.FileIO.FileSystem
Imports System.IO
Imports System.Convert
Imports Microsoft.VisualBasic.Strings
Imports System.Runtime.InteropServices
Imports System.Collections.Specialized

...

Using tr As Transaction = db.TransactionManager.StartTransaction()
            Dim btable As BlockTable = DirectCast(tr.GetObject(db.BlockTableId, OpenMode.ForRead), BlockTable)
            If btable.Has("vbredakdettek") Then
                Dim btr As BlockTableRecord = DirectCast(tr.GetObject(btable("vbredakdettek"), OpenMode.ForRead), BlockTableRecord)
                For Each refId As ObjectId In btr.GetAnonymousBlockIds()
                    myBlock = DirectCast(tr.GetObject(refId, OpenMode.ForRead), BlockReference)

...&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 23 Oct 2012 10:54:31 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/civil-3d-customization-forum/read-anonymous-blocks/m-p/3670192#M19338</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2012-10-23T10:54:31Z</dc:date>
    </item>
    <item>
      <title>Re: read anonymous blocks</title>
      <link>https://forums.autodesk.com/t5/civil-3d-customization-forum/read-anonymous-blocks/m-p/3670198#M19339</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;FONT color="#666699"&gt;&amp;gt;&amp;gt; Unable to cast object of type 'Autodesk.AutoCAD.DatabaseServices.BlockTableRecord' &lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;FONT color="#666699"&gt;&amp;gt;&amp;gt; to type 'Autodesk.AutoCAD.DatabaseServices.BlockReference'.&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;I have not tried it, but I guess that the function &lt;FONT color="#666699" face="lucida sans unicode,lucida sans"&gt;.GetAnonymousBlockIds&lt;/FONT&gt; returns ObjectIDs of BlockTableRecords.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So change your last shown code line to:&lt;/P&gt;&lt;P&gt;&lt;FONT color="#666699" face="lucida sans unicode,lucida sans"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim myBlockBTR as BlockTableRecord = DirectCast(tr.GetObject(refId, OpenMode.ForRead), BlockTableRecord)&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;...does that work?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;- alfred -&lt;/P&gt;</description>
      <pubDate>Tue, 23 Oct 2012 11:01:36 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/civil-3d-customization-forum/read-anonymous-blocks/m-p/3670198#M19339</guid>
      <dc:creator>Alfred.NESWADBA</dc:creator>
      <dc:date>2012-10-23T11:01:36Z</dc:date>
    </item>
    <item>
      <title>Re: read anonymous blocks</title>
      <link>https://forums.autodesk.com/t5/civil-3d-customization-forum/read-anonymous-blocks/m-p/3670380#M19340</link>
      <description>&lt;P&gt;that works, but my code continues with:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;            Using tr As Transaction = db.TransactionManager.StartTransaction()
                Dim btable As BlockTable = DirectCast(tr.GetObject(db.BlockTableId, OpenMode.ForRead), BlockTable)
                If btable.Has("vbredakdettek") Then
                    Dim btr As BlockTableRecord = DirectCast(tr.GetObject(btable("vbredakdettek"), OpenMode.ForRead), BlockTableRecord)
                For Each refId As ObjectId In btr.GetAnonymousBlockIds()
                    Dim myBlockBTR As BlockTableRecord = DirectCast(tr.GetObject(refId, OpenMode.ForRead), BlockTableRecord)
                    'myBlock = DirectCast(tr.GetObject(refId, OpenMode.ForRead), BlockReference)


                    Dim owner As BlockTableRecord = DirectCast(tr.GetObject(myBlock.OwnerId, OpenMode.ForRead), BlockTableRecord)
                    If owner.IsLayout Then
                        If myBlock.Name.ToUpper = "VBREDAKDETTEK" Then&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;How can I then get "myblock" ?&lt;/P&gt;</description>
      <pubDate>Tue, 23 Oct 2012 12:53:29 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/civil-3d-customization-forum/read-anonymous-blocks/m-p/3670380#M19340</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2012-10-23T12:53:29Z</dc:date>
    </item>
    <item>
      <title>Re: read anonymous blocks</title>
      <link>https://forums.autodesk.com/t5/civil-3d-customization-forum/read-anonymous-blocks/m-p/3670694#M19341</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;use the function myBlockBTR&lt;FONT color="#666699" face="lucida sans unicode,lucida sans"&gt;.GetBlockReferenceIDs&lt;/FONT&gt; to get the ObjectIDs pointing to the blockreferences then.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;- alfred -&lt;/P&gt;</description>
      <pubDate>Tue, 23 Oct 2012 15:42:39 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/civil-3d-customization-forum/read-anonymous-blocks/m-p/3670694#M19341</guid>
      <dc:creator>Alfred.NESWADBA</dc:creator>
      <dc:date>2012-10-23T15:42:39Z</dc:date>
    </item>
  </channel>
</rss>

