<?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 Titleblock Schema and Store Data in Revit API Forum</title>
    <link>https://forums.autodesk.com/t5/revit-api-forum/titleblock-schema-and-store-data/m-p/6271243#M66389</link>
    <description>&lt;P&gt;I’m working on a add-in which needs extra parameters.&amp;nbsp; I don’t want to clutter the user’s type parameters, therefore, I decided that I would use a “&lt;STRONG&gt;Schema and Store Data&lt;/STRONG&gt;”.&amp;nbsp; I have everything working wonderfully, however, my add-in is only adding the Schema to one titleblock (current titleblock) instead of all the title blocks like a “&lt;STRONG&gt;type parameter&lt;/STRONG&gt;”.&amp;nbsp;&amp;nbsp; My code is included I’m using a &lt;STRONG&gt;FamilyInstance&lt;/STRONG&gt; of the current title block.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;        private string familyName = "";
        private FamilyInstance familyInstance;
        private FamilySymbol familySymbol;

        //Retrives the titleblock in the active view.  The method is used to compare the size of the titlblock.
        public void getTitleblockSize(Document doc)
        {
            FilteredElementCollector collector = new FilteredElementCollector(doc, doc.ActiveView.Id);
            collector.OfCategory(BuiltInCategory.OST_TitleBlocks).OfClass(typeof(FamilyInstance));

            //get the built in parameter parameters of titleblock in view. 
            foreach (FamilyInstance tbk in collector)
            {
               
                familyInstance = tbk;

                //titleblock information 
                FamilySymbol familySymbol = tbk.Symbol;
                string familyTypeName = familySymbol.Name;
                Family family = familySymbol.Family;
                familyName = family.Name;
            }
        }   


 class SchemaAndStoreData
    {
        //X values of cell
        private string titleblockName = "";
        private string cellSizeDistance_X = "";
        private string lowerGap_X = "";
        private string additionalEdge_X = "";
        private string fineTune_X = "";
        //Y values of cell 
        private string cellSizeDistance_Y = "";
        private string lowerGap_Y = "";
        private string additionalEdge_Y = "";
        private string fineTune_Y = "";

        //Size of grid in sheet
        private string cellGrid = "";

        // Create a data structure, attach it to a wall, populate it with data, and retrieve the data back from the wall
        public void CreateSchemeAndStoreData(FamilyInstance titleblock)
        {
            SchemaBuilder schemaBuilder = new SchemaBuilder(new Guid("1a68d420-96dd-44aa-a1de-000774a6104b"));
            schemaBuilder.SetReadAccessLevel(AccessLevel.Public); // allow anyone to read the object
            schemaBuilder.SetSchemaName("TitleBlockSettings");
            // create a field to store data 
            FieldBuilder fieldBuilder_titleblockName = schemaBuilder.AddSimpleField("titleblockName", typeof(string));

            FieldBuilder fieldBuilder_cellSizeDistance_X = schemaBuilder.AddSimpleField("cellSizeDistance_X", typeof(string));
            FieldBuilder fieldBuilder_lowerGap_X = schemaBuilder.AddSimpleField("lowerGap_X", typeof(string));
            FieldBuilder fieldBuilder_additionalEdge_X = schemaBuilder.AddSimpleField("additionalEdge_X", typeof(string));
            FieldBuilder fieldBuilder_fineTune_X = schemaBuilder.AddSimpleField("fineTune_X", typeof(string));

            FieldBuilder fieldBuilder_cellSizeDistance_Y = schemaBuilder.AddSimpleField("cellSizeDistance_Y", typeof(string));
            FieldBuilder fieldBuilder_lowerGap_Y = schemaBuilder.AddSimpleField("lowerGap_Y", typeof(string));
            FieldBuilder fieldBuilder_additionalEdge_Y = schemaBuilder.AddSimpleField("additionalEdge_Y", typeof(string));
            FieldBuilder fieldBuilder_fineTune_Y = schemaBuilder.AddSimpleField("fineTune_Y", typeof(string));

            FieldBuilder fieldBuilder_cellGrid = schemaBuilder.AddSimpleField("cellGrid", typeof(string));

            //fieldBuilder.SetDocumentation("store length of cell size in X direction.");

            Schema schema = schemaBuilder.Finish(); // register the Schema object
        }

        public void RetrieveData(FamilyInstance titleblock)
        {
            string[] objects = new string[9];
            
            Schema schema = Schema.Lookup(new Guid("1a68d420-96dd-44aa-a1de-000774a6104b"));
            // get the field from the schema
            Field field_titleblockName = schema.GetField("titleblockName");

            Field field_cellSizeDistance_X = schema.GetField("cellSizeDistance_X");
            Field field_lowerGap_X = schema.GetField("lowerGap_X");
            Field field_additionalEdge_X = schema.GetField("additionalEdge_X");
            Field field_fineTune_X = schema.GetField("fineTune_X");

            Field field_cellSizeDistance_Y = schema.GetField("cellSizeDistance_Y");
            Field field_lowerGap_Y = schema.GetField("lowerGap_Y");
            Field field_additionalEdge_Y = schema.GetField("additionalEdge_Y");
            Field field_fineTune_Y = schema.GetField("fineTune_Y");

            Field field_cellGrid = schema.GetField("cellGrid");

            // get the data back from the titleblock
            Entity retrievedEntity = titleblock.GetEntity(schema);
            string retrievedData_titleblockName = retrievedEntity.Get&amp;lt;string&amp;gt;(schema.GetField("titleblockName"));

            string retrievedData_cellSizeDistance_X = retrievedEntity.Get&amp;lt;string&amp;gt;(schema.GetField("cellSizeDistance_X"));
            string retrievedData_lowerGap_X = retrievedEntity.Get&amp;lt;string&amp;gt;(schema.GetField("lowerGap_X"));
            string retrievedData_additionalEdge_X = retrievedEntity.Get&amp;lt;string&amp;gt;(schema.GetField("additionalEdge_X"));
            string retrievedData_fineTune_X = retrievedEntity.Get&amp;lt;string&amp;gt;(schema.GetField("fineTune_X"));

            string retrievedData_cellSizeDistance_Y = retrievedEntity.Get&amp;lt;string&amp;gt;(schema.GetField("cellSizeDistance_Y"));
            string retrievedData_lowerGap_Y = retrievedEntity.Get&amp;lt;string&amp;gt;(schema.GetField("lowerGap_Y"));
            string retrievedData_additionalEdge_Y = retrievedEntity.Get&amp;lt;string&amp;gt;(schema.GetField("additionalEdge_Y"));
            string retrievedData_fineTune_Y = retrievedEntity.Get&amp;lt;string&amp;gt;(schema.GetField("fineTune_Y"));

            string retrievedData_cellGrid = retrievedEntity.Get&amp;lt;string&amp;gt;(schema.GetField("cellGrid"));

            titleblockName = retrievedData_titleblockName;

            cellSizeDistance_X = retrievedData_cellSizeDistance_X;
            lowerGap_X = retrievedData_lowerGap_X;
            additionalEdge_X = retrievedData_additionalEdge_X;
            fineTune_X = retrievedData_fineTune_X;

            cellSizeDistance_Y = retrievedData_cellSizeDistance_Y;
            lowerGap_Y = retrievedData_lowerGap_Y;
            additionalEdge_Y = retrievedData_additionalEdge_Y;
            fineTune_Y = retrievedData_fineTune_Y;

            cellGrid = retrievedData_cellGrid;
        }

        public void StoreData(FamilyInstance titleblock)
        {
            Schema schema = Schema.Lookup(new Guid("1a68d420-96dd-44aa-a1de-000774a6104b"));
            Entity entity = new Entity(schema);

            Field field_titleblockName = schema.GetField("titleblockName");

            Field field_cellSizeDistance_X = schema.GetField("cellSizeDistance_X");
            Field field_lowerGap_X = schema.GetField("lowerGap_X");
            Field field_additionalEdge_X = schema.GetField("additionalEdge_X");
            Field field_fineTune_X = schema.GetField("fineTune_X");

            Field field_cellSizeDistance_Y = schema.GetField("cellSizeDistance_Y");
            Field field_lowerGap_Y = schema.GetField("lowerGap_Y");
            Field field_additionalEdge_Y = schema.GetField("additionalEdge_Y");
            Field field_fineTune_Y = schema.GetField("fineTune_Y");

            Field field_cellGrid = schema.GetField("cellGrid");

            entity.Set&amp;lt;string&amp;gt;(field_titleblockName, titleblockName);

            entity.Set&amp;lt;string&amp;gt;(field_cellSizeDistance_X, cellSizeDistance_X);
            entity.Set&amp;lt;string&amp;gt;(field_lowerGap_X, lowerGap_X);
            entity.Set&amp;lt;string&amp;gt;(field_additionalEdge_X, additionalEdge_X);
            entity.Set&amp;lt;string&amp;gt;(field_fineTune_X, fineTune_X);

            entity.Set&amp;lt;string&amp;gt;(field_cellSizeDistance_Y, cellSizeDistance_Y);
            entity.Set&amp;lt;string&amp;gt;(field_lowerGap_Y, lowerGap_Y);
            entity.Set&amp;lt;string&amp;gt;(field_additionalEdge_Y, additionalEdge_Y);
            entity.Set&amp;lt;string&amp;gt;(field_fineTune_Y, fineTune_Y);

            entity.Set&amp;lt;string&amp;gt;(field_cellGrid, cellGrid);

            titleblock.SetEntity(entity); // store the entity in the element
        }&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 14 Apr 2016 16:23:42 GMT</pubDate>
    <dc:creator>Anonymous</dc:creator>
    <dc:date>2016-04-14T16:23:42Z</dc:date>
    <item>
      <title>Titleblock Schema and Store Data</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/titleblock-schema-and-store-data/m-p/6271243#M66389</link>
      <description>&lt;P&gt;I’m working on a add-in which needs extra parameters.&amp;nbsp; I don’t want to clutter the user’s type parameters, therefore, I decided that I would use a “&lt;STRONG&gt;Schema and Store Data&lt;/STRONG&gt;”.&amp;nbsp; I have everything working wonderfully, however, my add-in is only adding the Schema to one titleblock (current titleblock) instead of all the title blocks like a “&lt;STRONG&gt;type parameter&lt;/STRONG&gt;”.&amp;nbsp;&amp;nbsp; My code is included I’m using a &lt;STRONG&gt;FamilyInstance&lt;/STRONG&gt; of the current title block.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;        private string familyName = "";
        private FamilyInstance familyInstance;
        private FamilySymbol familySymbol;

        //Retrives the titleblock in the active view.  The method is used to compare the size of the titlblock.
        public void getTitleblockSize(Document doc)
        {
            FilteredElementCollector collector = new FilteredElementCollector(doc, doc.ActiveView.Id);
            collector.OfCategory(BuiltInCategory.OST_TitleBlocks).OfClass(typeof(FamilyInstance));

            //get the built in parameter parameters of titleblock in view. 
            foreach (FamilyInstance tbk in collector)
            {
               
                familyInstance = tbk;

                //titleblock information 
                FamilySymbol familySymbol = tbk.Symbol;
                string familyTypeName = familySymbol.Name;
                Family family = familySymbol.Family;
                familyName = family.Name;
            }
        }   


 class SchemaAndStoreData
    {
        //X values of cell
        private string titleblockName = "";
        private string cellSizeDistance_X = "";
        private string lowerGap_X = "";
        private string additionalEdge_X = "";
        private string fineTune_X = "";
        //Y values of cell 
        private string cellSizeDistance_Y = "";
        private string lowerGap_Y = "";
        private string additionalEdge_Y = "";
        private string fineTune_Y = "";

        //Size of grid in sheet
        private string cellGrid = "";

        // Create a data structure, attach it to a wall, populate it with data, and retrieve the data back from the wall
        public void CreateSchemeAndStoreData(FamilyInstance titleblock)
        {
            SchemaBuilder schemaBuilder = new SchemaBuilder(new Guid("1a68d420-96dd-44aa-a1de-000774a6104b"));
            schemaBuilder.SetReadAccessLevel(AccessLevel.Public); // allow anyone to read the object
            schemaBuilder.SetSchemaName("TitleBlockSettings");
            // create a field to store data 
            FieldBuilder fieldBuilder_titleblockName = schemaBuilder.AddSimpleField("titleblockName", typeof(string));

            FieldBuilder fieldBuilder_cellSizeDistance_X = schemaBuilder.AddSimpleField("cellSizeDistance_X", typeof(string));
            FieldBuilder fieldBuilder_lowerGap_X = schemaBuilder.AddSimpleField("lowerGap_X", typeof(string));
            FieldBuilder fieldBuilder_additionalEdge_X = schemaBuilder.AddSimpleField("additionalEdge_X", typeof(string));
            FieldBuilder fieldBuilder_fineTune_X = schemaBuilder.AddSimpleField("fineTune_X", typeof(string));

            FieldBuilder fieldBuilder_cellSizeDistance_Y = schemaBuilder.AddSimpleField("cellSizeDistance_Y", typeof(string));
            FieldBuilder fieldBuilder_lowerGap_Y = schemaBuilder.AddSimpleField("lowerGap_Y", typeof(string));
            FieldBuilder fieldBuilder_additionalEdge_Y = schemaBuilder.AddSimpleField("additionalEdge_Y", typeof(string));
            FieldBuilder fieldBuilder_fineTune_Y = schemaBuilder.AddSimpleField("fineTune_Y", typeof(string));

            FieldBuilder fieldBuilder_cellGrid = schemaBuilder.AddSimpleField("cellGrid", typeof(string));

            //fieldBuilder.SetDocumentation("store length of cell size in X direction.");

            Schema schema = schemaBuilder.Finish(); // register the Schema object
        }

        public void RetrieveData(FamilyInstance titleblock)
        {
            string[] objects = new string[9];
            
            Schema schema = Schema.Lookup(new Guid("1a68d420-96dd-44aa-a1de-000774a6104b"));
            // get the field from the schema
            Field field_titleblockName = schema.GetField("titleblockName");

            Field field_cellSizeDistance_X = schema.GetField("cellSizeDistance_X");
            Field field_lowerGap_X = schema.GetField("lowerGap_X");
            Field field_additionalEdge_X = schema.GetField("additionalEdge_X");
            Field field_fineTune_X = schema.GetField("fineTune_X");

            Field field_cellSizeDistance_Y = schema.GetField("cellSizeDistance_Y");
            Field field_lowerGap_Y = schema.GetField("lowerGap_Y");
            Field field_additionalEdge_Y = schema.GetField("additionalEdge_Y");
            Field field_fineTune_Y = schema.GetField("fineTune_Y");

            Field field_cellGrid = schema.GetField("cellGrid");

            // get the data back from the titleblock
            Entity retrievedEntity = titleblock.GetEntity(schema);
            string retrievedData_titleblockName = retrievedEntity.Get&amp;lt;string&amp;gt;(schema.GetField("titleblockName"));

            string retrievedData_cellSizeDistance_X = retrievedEntity.Get&amp;lt;string&amp;gt;(schema.GetField("cellSizeDistance_X"));
            string retrievedData_lowerGap_X = retrievedEntity.Get&amp;lt;string&amp;gt;(schema.GetField("lowerGap_X"));
            string retrievedData_additionalEdge_X = retrievedEntity.Get&amp;lt;string&amp;gt;(schema.GetField("additionalEdge_X"));
            string retrievedData_fineTune_X = retrievedEntity.Get&amp;lt;string&amp;gt;(schema.GetField("fineTune_X"));

            string retrievedData_cellSizeDistance_Y = retrievedEntity.Get&amp;lt;string&amp;gt;(schema.GetField("cellSizeDistance_Y"));
            string retrievedData_lowerGap_Y = retrievedEntity.Get&amp;lt;string&amp;gt;(schema.GetField("lowerGap_Y"));
            string retrievedData_additionalEdge_Y = retrievedEntity.Get&amp;lt;string&amp;gt;(schema.GetField("additionalEdge_Y"));
            string retrievedData_fineTune_Y = retrievedEntity.Get&amp;lt;string&amp;gt;(schema.GetField("fineTune_Y"));

            string retrievedData_cellGrid = retrievedEntity.Get&amp;lt;string&amp;gt;(schema.GetField("cellGrid"));

            titleblockName = retrievedData_titleblockName;

            cellSizeDistance_X = retrievedData_cellSizeDistance_X;
            lowerGap_X = retrievedData_lowerGap_X;
            additionalEdge_X = retrievedData_additionalEdge_X;
            fineTune_X = retrievedData_fineTune_X;

            cellSizeDistance_Y = retrievedData_cellSizeDistance_Y;
            lowerGap_Y = retrievedData_lowerGap_Y;
            additionalEdge_Y = retrievedData_additionalEdge_Y;
            fineTune_Y = retrievedData_fineTune_Y;

            cellGrid = retrievedData_cellGrid;
        }

        public void StoreData(FamilyInstance titleblock)
        {
            Schema schema = Schema.Lookup(new Guid("1a68d420-96dd-44aa-a1de-000774a6104b"));
            Entity entity = new Entity(schema);

            Field field_titleblockName = schema.GetField("titleblockName");

            Field field_cellSizeDistance_X = schema.GetField("cellSizeDistance_X");
            Field field_lowerGap_X = schema.GetField("lowerGap_X");
            Field field_additionalEdge_X = schema.GetField("additionalEdge_X");
            Field field_fineTune_X = schema.GetField("fineTune_X");

            Field field_cellSizeDistance_Y = schema.GetField("cellSizeDistance_Y");
            Field field_lowerGap_Y = schema.GetField("lowerGap_Y");
            Field field_additionalEdge_Y = schema.GetField("additionalEdge_Y");
            Field field_fineTune_Y = schema.GetField("fineTune_Y");

            Field field_cellGrid = schema.GetField("cellGrid");

            entity.Set&amp;lt;string&amp;gt;(field_titleblockName, titleblockName);

            entity.Set&amp;lt;string&amp;gt;(field_cellSizeDistance_X, cellSizeDistance_X);
            entity.Set&amp;lt;string&amp;gt;(field_lowerGap_X, lowerGap_X);
            entity.Set&amp;lt;string&amp;gt;(field_additionalEdge_X, additionalEdge_X);
            entity.Set&amp;lt;string&amp;gt;(field_fineTune_X, fineTune_X);

            entity.Set&amp;lt;string&amp;gt;(field_cellSizeDistance_Y, cellSizeDistance_Y);
            entity.Set&amp;lt;string&amp;gt;(field_lowerGap_Y, lowerGap_Y);
            entity.Set&amp;lt;string&amp;gt;(field_additionalEdge_Y, additionalEdge_Y);
            entity.Set&amp;lt;string&amp;gt;(field_fineTune_Y, fineTune_Y);

            entity.Set&amp;lt;string&amp;gt;(field_cellGrid, cellGrid);

            titleblock.SetEntity(entity); // store the entity in the element
        }&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 14 Apr 2016 16:23:42 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/titleblock-schema-and-store-data/m-p/6271243#M66389</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2016-04-14T16:23:42Z</dc:date>
    </item>
    <item>
      <title>Re: Titleblock Schema and Store Data</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/titleblock-schema-and-store-data/m-p/6271967#M66390</link>
      <description>&lt;P&gt;Since you stated that you're using the FamilyInstance, I think you are only adding the "schema" to one "instance" of the family:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;public class FamilyInstance : Autodesk.Revit.DB.Instance
 
Summary:
This object represents a single instance of a family type, such as a single I beam.&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;As for a solution......... I don't know. I don't have enough experience with the Revit API.&lt;/P&gt;&lt;P&gt;Maybe try storing it in the element itself, not just the FamilyInstance?&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;P&gt;I did a quick search through Jeremy Tammik's blog, and this is what I found:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="http://thebuildingcoder.typepad.com/blog/2011/04/extensible-storage.html" target="_blank"&gt;http://thebuildingcoder.typepad.com/blog/2011/04/extensible-storage.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And this PDF:&lt;/P&gt;&lt;P&gt;&lt;A href="http://thebuildingcoder.typepad.com/files/cp6760-l_tammik_estorage.pdf" target="_blank"&gt;http://thebuildingcoder.typepad.com/files/cp6760-l_tammik_estorage.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Particularly this section in the PDF:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;FamilyStorage &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;The FamilyStorage sample shows how to create estorage in a family document and retrieve its data in a project containing an instance of that family.&lt;/P&gt;&lt;P&gt;It defines two external commands to implement this, AddDataToFamily and GetFamilyData.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;But I'm not sure if that solves your issue.&lt;/P&gt;</description>
      <pubDate>Thu, 14 Apr 2016 23:01:43 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/titleblock-schema-and-store-data/m-p/6271967#M66390</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2016-04-14T23:01:43Z</dc:date>
    </item>
    <item>
      <title>Re: Titleblock Schema and Store Data</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/titleblock-schema-and-store-data/m-p/6272278#M66391</link>
      <description>&lt;P&gt;Dear Dgurion,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you for your answer.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I believe you hit the nail on the head.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Dear Danny,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you for your query.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The code you posted is much too voluminous for me poor biological organism to grasp at a glance, so I cannot tell what you are doing from that.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I fully agree with your verbal assessment, though.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What you describe is officially termed &lt;EM&gt;&lt;STRONG&gt;extensible storage&lt;/STRONG&gt;&lt;/EM&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It is definitely the method of choice to store Revit add-in data that neither the user nor Revit needs to see or care about.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Just as you and Dgurion both point out, you define a so-called &lt;EM&gt;&lt;STRONG&gt;Schema&lt;/STRONG&gt;&lt;/EM&gt; object to specify the extensible storage data structure, and then attach so-called &lt;EM&gt;&lt;STRONG&gt;Entity&lt;/STRONG&gt;&lt;/EM&gt; to each Revit element that you wish to equip with an instance of that data.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;All this is described in full detail with numerous examples by The Building Coder topic group on extensible storage:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://thebuildingcoder.typepad.com/blog/about-the-author.html#5.23" target="_blank"&gt;http://thebuildingcoder.typepad.com/blog/about-the-author.html#5.23&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Take a close look at that and all will become clear.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Good luck and have fun!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best regards,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Jeremy&lt;/P&gt;</description>
      <pubDate>Fri, 15 Apr 2016 06:24:04 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/titleblock-schema-and-store-data/m-p/6272278#M66391</guid>
      <dc:creator>jeremytammik</dc:creator>
      <dc:date>2016-04-15T06:24:04Z</dc:date>
    </item>
    <item>
      <title>Re: Titleblock Schema and Store Data</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/titleblock-schema-and-store-data/m-p/6273226#M66392</link>
      <description>&lt;P&gt;Sorry about the poor attempt to grab a snip of code from a large project. &amp;nbsp;I think that the instance is what need to be changed so that I can add it to the overall project titleblock. &amp;nbsp;I will read through the examples and maybe hunt through some of the Revit API Community to see if anyone has a example of changing all the titleblocks. &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you. &amp;nbsp;I think this gives me a good place start my search. &amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 15 Apr 2016 15:26:37 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/titleblock-schema-and-store-data/m-p/6273226#M66392</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2016-04-15T15:26:37Z</dc:date>
    </item>
    <item>
      <title>Re: Titleblock Schema and Store Data</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/titleblock-schema-and-store-data/m-p/6282291#M66393</link>
      <description>&lt;P&gt;In case anyone is interested my solution was to add the data schema to a &lt;STRONG&gt;FamilySymbol&lt;/STRONG&gt; which added it to all my titleblocks.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 20 Apr 2016 15:39:54 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/titleblock-schema-and-store-data/m-p/6282291#M66393</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2016-04-20T15:39:54Z</dc:date>
    </item>
  </channel>
</rss>

