<?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: Add the Dynamic Block Callout Bubble and others using C# in .NET Forum</title>
    <link>https://forums.autodesk.com/t5/net-forum/add-the-dynamic-block-callout-bubble-and-others-using-c/m-p/11967032#M8814</link>
    <description>&lt;P&gt;I tried below code I but it is only placing the numbers but not the bubble so in Image here Actual is what I am getting.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="kmkxperia_0-1684239339590.png" style="width: 600px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1215042iFE128C6200BEA66B/image-size/medium?v=v2&amp;amp;px=400" role="button" title="kmkxperia_0-1684239339590.png" alt="kmkxperia_0-1684239339590.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="general"&gt;[CommandMethod("AddCalloutBubble")]
        public static void AddCalloutBubble()

        {

            string blockPath = @"C:\\Program Files\\Autodesk2021\\AutoCAD 2021\\Sample\\en-us\\Dynamic Blocks\\Annotation - Imperial.dwg";
            string blockName = "Callout Bubble - Imperial";
            InsertBlock(blockPath, blockName);
        }

        private static void InsertBlock(string blockPath, string blockName)
        {
            var doc = Application.DocumentManager.MdiActiveDocument;
            var db = doc.Database;
            var ed = doc.Editor;
            using (var tr = db.TransactionManager.StartTransaction())
            {
                var bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);
                ObjectId btrId = bt.Has(blockName) ?
                    bt[blockName] :
                    ImportBlock(db, blockName, blockPath);
                if (btrId.IsNull)
                {
                    ed.WriteMessage($"\nBlock '{blockName}' not found.");
                    return;
                }

                var cSpace = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite);
                var br = new BlockReference(Point3d.Origin, btrId);
                cSpace.AppendEntity(br);
                tr.AddNewlyCreatedDBObject(br, true);

                // add attribute references to the block reference
                var btr = (BlockTableRecord)tr.GetObject(btrId, OpenMode.ForRead);
                var attInfos = new Dictionary&amp;lt;string, TextInfo&amp;gt;();
                if (btr.HasAttributeDefinitions)
                {
                    foreach (ObjectId id in btr)
                    {
                        if (id.ObjectClass.DxfName == "ATTDEF")
                        {
                            var attDef = (AttributeDefinition)tr.GetObject(id, OpenMode.ForRead);
                            attInfos[attDef.Tag] = new TextInfo(
                                attDef.Position,
                                attDef.AlignmentPoint,
                                attDef.Justify != AttachmentPoint.BaseLeft,
                                attDef.Rotation);
                            var attRef = new AttributeReference();
                            attRef.SetAttributeFromBlock(attDef, br.BlockTransform);
                            attRef.TextString = attDef.TextString;
                            br.AttributeCollection.AppendAttribute(attRef);
                            tr.AddNewlyCreatedDBObject(attRef, true);
                        }
                    }
                }
                var jig = new InsertBlockJig(br, attInfos);
                var pr = ed.Drag(jig);
                if (pr.Status != PromptStatus.OK)
                {
                    br.Erase();
                }
                tr.Commit();
            }
        }

        private static ObjectId ImportBlock(Database destDb, string blockName, string sourceFileName)
        {
            if (System.IO.File.Exists(sourceFileName))
            {
                using (var sourceDb = new Database(false, true))
                {
                    try
                    {
                        // Read the DWG into a side database
                        sourceDb.ReadDwgFile(sourceFileName, FileOpenMode.OpenForReadAndAllShare, true, "");

                        // Create a variable to store the block identifier
                        var id = ObjectId.Null;
                        using (var tr = new OpenCloseTransaction())
                        {
                            // Open the block table
                            var bt = (BlockTable)tr.GetObject(sourceDb.BlockTableId, OpenMode.ForRead, false);

                            // if the block table contains 'blockName', store it into the variable
                            if (bt.Has(blockName))
                                id = bt[blockName];
                            MessageBox.Show(blockName);

                        }
                        // if the variable is not null (i.e. the block was found)
                        if (!id.IsNull)
                        {
                            // Copy the block deinition from source to destination database
                            var blockIds = new ObjectIdCollection();
                            blockIds.Add(id);
                            var mapping = new IdMapping();
                            sourceDb.WblockCloneObjects(blockIds, destDb.BlockTableId, mapping, DuplicateRecordCloning.Replace, false);
                            // if the copy succeeded, return the ObjectId of the clone
                            if (mapping[id].IsCloned)
                                return mapping[id].Value;
                        }
                    }
                    catch (Autodesk.AutoCAD.Runtime.Exception ex)
                    {
                        var ed = Application.DocumentManager.MdiActiveDocument.Editor;
                        ed.WriteMessage("\nError during copy: " + ex.Message + "\n" + ex.StackTrace);
                    }
                }
            }
            return ObjectId.Null;
        }

        struct TextInfo
        {
            public Point3d Position { get; private set; }
            public Point3d Alignment { get; private set; }
            public bool IsAligned { get; private set; }
            public double Rotation { get; private set; }
            public TextInfo(Point3d position, Point3d alignment, bool aligned, double rotation)
            {
                Position = position;
                Alignment = alignment;
                IsAligned = aligned;
                Rotation = rotation;
            }
        }

        class InsertBlockJig : EntityJig
        {
            BlockReference br;
            Point3d pt;
            Dictionary&amp;lt;string, TextInfo&amp;gt; attInfos;

            public InsertBlockJig(BlockReference br, Dictionary&amp;lt;string, TextInfo&amp;gt; attInfos) : base(br)
            {
                this.br = br;
                this.attInfos = attInfos;
            }

            protected override SamplerStatus Sampler(JigPrompts prompts)
            {
                var options = new JigPromptPointOptions("\nSpecify insertion point: ");
                options.UserInputControls = UserInputControls.Accept3dCoordinates;
                var result = prompts.AcquirePoint(options);
                if (result.Value.IsEqualTo(pt))
                    return SamplerStatus.NoChange;
                pt = result.Value;
                return SamplerStatus.OK;
            }

            protected override bool Update()
            {
                br.Position = pt;
                if (br.AttributeCollection.Count &amp;gt; 0)
                {
                    var tr = br.Database.TransactionManager.TopTransaction;
                    foreach (ObjectId id in br.AttributeCollection)
                    {
                        var attRef = (AttributeReference)tr.GetObject(id, OpenMode.ForRead);
                        string tag = attRef.Tag.ToUpper();
                        if (attInfos.ContainsKey(tag))
                        {
                            TextInfo ti = attInfos[tag];
                            attRef.Position = ti.Position.TransformBy(br.BlockTransform);
                            if (ti.IsAligned)
                            {
                                attRef.AlignmentPoint =
                                    ti.Alignment.TransformBy(br.BlockTransform);
                                attRef.AdjustAlignment(br.Database);
                            }
                            if (attRef.IsMTextAttribute)
                            {
                                attRef.UpdateMTextAttribute();
                            }
                        }
                    }
                }
                return true;
            }
        }
    }&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 16 May 2023 12:16:35 GMT</pubDate>
    <dc:creator>kmkxperia</dc:creator>
    <dc:date>2023-05-16T12:16:35Z</dc:date>
    <item>
      <title>Add the Dynamic Block Callout Bubble and others using C#</title>
      <link>https://forums.autodesk.com/t5/net-forum/add-the-dynamic-block-callout-bubble-and-others-using-c/m-p/11964990#M8812</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Hi I am trying to add the below dynamic bubble annotation using annotation. I am able to goto the dynamic block but not able to figure out how to get these annotations and put them on the drawing&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;[CommandMethod("CreateOrdinateDimension")]&lt;BR /&gt;public static void CreateOrdinateDimension()&lt;BR /&gt;{&lt;BR /&gt;// Get the current database&lt;BR /&gt;Document acDoc = Application.DocumentManager.MdiActiveDocument;&lt;BR /&gt;Database acCurDb = acDoc.Database;&lt;/P&gt;&lt;P&gt;// Start a transaction&lt;BR /&gt;using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())&lt;BR /&gt;{&lt;BR /&gt;// Open the Block table for read&lt;BR /&gt;BlockTable acBlkTbl;&lt;BR /&gt;acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId,&lt;BR /&gt;OpenMode.ForRead) as BlockTable;&lt;/P&gt;&lt;P&gt;// Open the Block table record Model space for write&lt;BR /&gt;BlockTableRecord acBlkTblRec;&lt;BR /&gt;acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace],&lt;BR /&gt;OpenMode.ForWrite) as BlockTableRecord;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#FF0000"&gt;&lt;EM&gt;&lt;STRONG&gt;How to add below annotation and get other annotations names&lt;/STRONG&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="kmkxperia_0-1684166890330.png" style="width: 600px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1214624i50429E2112217747/image-size/medium?v=v2&amp;amp;px=400" role="button" title="kmkxperia_0-1684166890330.png" alt="kmkxperia_0-1684166890330.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 15 May 2023 16:11:44 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/net-forum/add-the-dynamic-block-callout-bubble-and-others-using-c/m-p/11964990#M8812</guid>
      <dc:creator>kmkxperia</dc:creator>
      <dc:date>2023-05-15T16:11:44Z</dc:date>
    </item>
    <item>
      <title>Re: Add the Dynamic Block Callout Bubble and others using C#</title>
      <link>https://forums.autodesk.com/t5/net-forum/add-the-dynamic-block-callout-bubble-and-others-using-c/m-p/11965360#M8813</link>
      <description>&lt;P&gt;these dynamic blocks showed on Tool PaletteSet are just regular dynamic blocks stored somewhere in the computer by AutoCAD installation. You can find them in "C:\Program Files\Autodesk\AutoCAD 202x\Sample\en-us\Dynamic Blocks" folder. However, these blocks are not saved as individual block drawing. Rather they stored in drawing files (with the name shown as Toll PaletteSet's tab text) as block definitions (BlockTableRecord).&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So, in order to insert block references of these blocks, you need to do:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;1. Open one of the drawing that contains your target block definition as side database, find the block definition and call WBlockCloneObjects() to import the BlockTableRecord into the current drawing's BlockTable;&lt;/P&gt;
&lt;P&gt;2. Create a new BlockReference based in the imported blocktablerecord;&lt;/P&gt;
&lt;P&gt;3. If the block is annotative, you need to associtate approperiate ObjectContext (AnnotationScale) to this block reference;&lt;/P&gt;
&lt;P&gt;4. If the block definition has attribute defined, you add corresponding AttributeReferences to the block reference and set attribute values accordingly;&lt;/P&gt;
&lt;P&gt;5. Since there blocks are dynamic, you need to set dynamic property values as required.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you have done dynamic block insertion coding, all aforementioned steps are straightforward to do. Or, you can search this forum for WBlockCloneObject(), and for dynamic block insertion code samples.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 15 May 2023 18:54:54 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/net-forum/add-the-dynamic-block-callout-bubble-and-others-using-c/m-p/11965360#M8813</guid>
      <dc:creator>norman.yuan</dc:creator>
      <dc:date>2023-05-15T18:54:54Z</dc:date>
    </item>
    <item>
      <title>Re: Add the Dynamic Block Callout Bubble and others using C#</title>
      <link>https://forums.autodesk.com/t5/net-forum/add-the-dynamic-block-callout-bubble-and-others-using-c/m-p/11967032#M8814</link>
      <description>&lt;P&gt;I tried below code I but it is only placing the numbers but not the bubble so in Image here Actual is what I am getting.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="kmkxperia_0-1684239339590.png" style="width: 600px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1215042iFE128C6200BEA66B/image-size/medium?v=v2&amp;amp;px=400" role="button" title="kmkxperia_0-1684239339590.png" alt="kmkxperia_0-1684239339590.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="general"&gt;[CommandMethod("AddCalloutBubble")]
        public static void AddCalloutBubble()

        {

            string blockPath = @"C:\\Program Files\\Autodesk2021\\AutoCAD 2021\\Sample\\en-us\\Dynamic Blocks\\Annotation - Imperial.dwg";
            string blockName = "Callout Bubble - Imperial";
            InsertBlock(blockPath, blockName);
        }

        private static void InsertBlock(string blockPath, string blockName)
        {
            var doc = Application.DocumentManager.MdiActiveDocument;
            var db = doc.Database;
            var ed = doc.Editor;
            using (var tr = db.TransactionManager.StartTransaction())
            {
                var bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);
                ObjectId btrId = bt.Has(blockName) ?
                    bt[blockName] :
                    ImportBlock(db, blockName, blockPath);
                if (btrId.IsNull)
                {
                    ed.WriteMessage($"\nBlock '{blockName}' not found.");
                    return;
                }

                var cSpace = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite);
                var br = new BlockReference(Point3d.Origin, btrId);
                cSpace.AppendEntity(br);
                tr.AddNewlyCreatedDBObject(br, true);

                // add attribute references to the block reference
                var btr = (BlockTableRecord)tr.GetObject(btrId, OpenMode.ForRead);
                var attInfos = new Dictionary&amp;lt;string, TextInfo&amp;gt;();
                if (btr.HasAttributeDefinitions)
                {
                    foreach (ObjectId id in btr)
                    {
                        if (id.ObjectClass.DxfName == "ATTDEF")
                        {
                            var attDef = (AttributeDefinition)tr.GetObject(id, OpenMode.ForRead);
                            attInfos[attDef.Tag] = new TextInfo(
                                attDef.Position,
                                attDef.AlignmentPoint,
                                attDef.Justify != AttachmentPoint.BaseLeft,
                                attDef.Rotation);
                            var attRef = new AttributeReference();
                            attRef.SetAttributeFromBlock(attDef, br.BlockTransform);
                            attRef.TextString = attDef.TextString;
                            br.AttributeCollection.AppendAttribute(attRef);
                            tr.AddNewlyCreatedDBObject(attRef, true);
                        }
                    }
                }
                var jig = new InsertBlockJig(br, attInfos);
                var pr = ed.Drag(jig);
                if (pr.Status != PromptStatus.OK)
                {
                    br.Erase();
                }
                tr.Commit();
            }
        }

        private static ObjectId ImportBlock(Database destDb, string blockName, string sourceFileName)
        {
            if (System.IO.File.Exists(sourceFileName))
            {
                using (var sourceDb = new Database(false, true))
                {
                    try
                    {
                        // Read the DWG into a side database
                        sourceDb.ReadDwgFile(sourceFileName, FileOpenMode.OpenForReadAndAllShare, true, "");

                        // Create a variable to store the block identifier
                        var id = ObjectId.Null;
                        using (var tr = new OpenCloseTransaction())
                        {
                            // Open the block table
                            var bt = (BlockTable)tr.GetObject(sourceDb.BlockTableId, OpenMode.ForRead, false);

                            // if the block table contains 'blockName', store it into the variable
                            if (bt.Has(blockName))
                                id = bt[blockName];
                            MessageBox.Show(blockName);

                        }
                        // if the variable is not null (i.e. the block was found)
                        if (!id.IsNull)
                        {
                            // Copy the block deinition from source to destination database
                            var blockIds = new ObjectIdCollection();
                            blockIds.Add(id);
                            var mapping = new IdMapping();
                            sourceDb.WblockCloneObjects(blockIds, destDb.BlockTableId, mapping, DuplicateRecordCloning.Replace, false);
                            // if the copy succeeded, return the ObjectId of the clone
                            if (mapping[id].IsCloned)
                                return mapping[id].Value;
                        }
                    }
                    catch (Autodesk.AutoCAD.Runtime.Exception ex)
                    {
                        var ed = Application.DocumentManager.MdiActiveDocument.Editor;
                        ed.WriteMessage("\nError during copy: " + ex.Message + "\n" + ex.StackTrace);
                    }
                }
            }
            return ObjectId.Null;
        }

        struct TextInfo
        {
            public Point3d Position { get; private set; }
            public Point3d Alignment { get; private set; }
            public bool IsAligned { get; private set; }
            public double Rotation { get; private set; }
            public TextInfo(Point3d position, Point3d alignment, bool aligned, double rotation)
            {
                Position = position;
                Alignment = alignment;
                IsAligned = aligned;
                Rotation = rotation;
            }
        }

        class InsertBlockJig : EntityJig
        {
            BlockReference br;
            Point3d pt;
            Dictionary&amp;lt;string, TextInfo&amp;gt; attInfos;

            public InsertBlockJig(BlockReference br, Dictionary&amp;lt;string, TextInfo&amp;gt; attInfos) : base(br)
            {
                this.br = br;
                this.attInfos = attInfos;
            }

            protected override SamplerStatus Sampler(JigPrompts prompts)
            {
                var options = new JigPromptPointOptions("\nSpecify insertion point: ");
                options.UserInputControls = UserInputControls.Accept3dCoordinates;
                var result = prompts.AcquirePoint(options);
                if (result.Value.IsEqualTo(pt))
                    return SamplerStatus.NoChange;
                pt = result.Value;
                return SamplerStatus.OK;
            }

            protected override bool Update()
            {
                br.Position = pt;
                if (br.AttributeCollection.Count &amp;gt; 0)
                {
                    var tr = br.Database.TransactionManager.TopTransaction;
                    foreach (ObjectId id in br.AttributeCollection)
                    {
                        var attRef = (AttributeReference)tr.GetObject(id, OpenMode.ForRead);
                        string tag = attRef.Tag.ToUpper();
                        if (attInfos.ContainsKey(tag))
                        {
                            TextInfo ti = attInfos[tag];
                            attRef.Position = ti.Position.TransformBy(br.BlockTransform);
                            if (ti.IsAligned)
                            {
                                attRef.AlignmentPoint =
                                    ti.Alignment.TransformBy(br.BlockTransform);
                                attRef.AdjustAlignment(br.Database);
                            }
                            if (attRef.IsMTextAttribute)
                            {
                                attRef.UpdateMTextAttribute();
                            }
                        }
                    }
                }
                return true;
            }
        }
    }&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 16 May 2023 12:16:35 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/net-forum/add-the-dynamic-block-callout-bubble-and-others-using-c/m-p/11967032#M8814</guid>
      <dc:creator>kmkxperia</dc:creator>
      <dc:date>2023-05-16T12:16:35Z</dc:date>
    </item>
    <item>
      <title>Re: Add the Dynamic Block Callout Bubble and others using C#</title>
      <link>https://forums.autodesk.com/t5/net-forum/add-the-dynamic-block-callout-bubble-and-others-using-c/m-p/11967446#M8815</link>
      <description>&lt;P&gt;Not sure what/when the code went wrong. Can you open the block definition in Block Editor (command "BEDIT") to verify whether the block definition is imported correctly? You could try to only run the method "ImportBlock()". I just copied your code with very minor changes, as following, and ran it. The block was imported correctly:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="csharp"&gt;		[CommandMethod("ImportBlk")]
		public static void ImportBlk()
		{
			var file = @"C:\Program Files\Autodesk\AutoCAD 2021\Sample\en-us\Dynamic Blocks\Annotation - Imperial.dwg";
			var blkName = "Callout Bubble - Imperial";
			var blkId = ObjectId.Null;
			var curDb = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Database;
			using (var db = new Database(false, true))
			{
				db.ReadDwgFile(file, FileOpenMode.OpenForReadAndAllShare, false, null);
				using (var tran=db.TransactionManager.StartTransaction())
				{
					var bt = (BlockTable)tran.GetObject(db.BlockTableId, OpenMode.ForRead);
					if (bt.Has(blkName))
					{
						blkId = bt[blkName];
					}

					tran.Commit();
				}

				if (!blkId.IsNull)
				{
					var ids = new ObjectIdCollection();
					ids.Add(blkId);
					var mapping = new IdMapping();
					db.WblockCloneObjects(ids, curDb.BlockTableId, mapping, DuplicateRecordCloning.Replace, false);
				}
			}
		}&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;BTW, in your JIG's Update() method, you do not have to change BlockRefernece's Position and then each AttributeReference's position with some many lines of code. You simply create a Displacement Matrix3d and use it to transform the BlockReference, this would move the block and its attributes together:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;var mt=Matrix3d.Displacement([prevPoint].GetVectorTo([currentPoint]);&lt;/P&gt;
&lt;P&gt;br.TrnsformeBy(mt);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 16 May 2023 13:31:24 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/net-forum/add-the-dynamic-block-callout-bubble-and-others-using-c/m-p/11967446#M8815</guid>
      <dc:creator>norman.yuan</dc:creator>
      <dc:date>2023-05-16T13:31:24Z</dc:date>
    </item>
    <item>
      <title>Re: Add the Dynamic Block Callout Bubble and others using C#</title>
      <link>https://forums.autodesk.com/t5/net-forum/add-the-dynamic-block-callout-bubble-and-others-using-c/m-p/11968171#M8816</link>
      <description>&lt;P&gt;Checked Bedit and the block is shown,&lt;BR /&gt;but error still persists, You mentioned in point #3&amp;nbsp;&lt;SPAN&gt;&amp;nbsp;&lt;EM&gt;If the block is annotative, you need to associtate approperiate ObjectContext (AnnotationScale) to this block reference;&lt;/EM&gt;&lt;/SPAN&gt; do I need to do those?&lt;/P&gt;</description>
      <pubDate>Tue, 16 May 2023 17:43:56 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/net-forum/add-the-dynamic-block-callout-bubble-and-others-using-c/m-p/11968171#M8816</guid>
      <dc:creator>kmkxperia</dc:creator>
      <dc:date>2023-05-16T17:43:56Z</dc:date>
    </item>
  </channel>
</rss>

