{"id":2773,"date":"2024-11-06T09:26:49","date_gmt":"2024-11-06T09:26:49","guid":{"rendered":"https:\/\/infralligence.com\/?p=2773"},"modified":"2024-12-31T09:28:30","modified_gmt":"2024-12-31T09:28:30","slug":"inserting-families-with-revit-api","status":"publish","type":"post","link":"https:\/\/infralligence.com\/pl\/resources\/inserting-families-with-revit-api\/","title":{"rendered":"Inserting Families with Revit API"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"2773\" class=\"elementor elementor-2773\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a636728 e-con-full kk-blog-post e-flex rael-particle-no e-con e-parent\" data-id=\"a636728\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-978bece elementor-widget elementor-widget-text-editor\" data-id=\"978bece\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>You can insert families programmatically at points, on faces or lines, or create hosted families.<\/p><p>Inserting Families is the core of creating Revit Elements \u2013 and a must-know for Revit plugin developers.<\/p><p>In this post: code, examples, and everything you need to know about <strong>Inserting Families<\/strong>.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-98d5948 elementor-widget elementor-widget-text-editor\" data-id=\"98d5948\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h5>\ud83d\udccc TLDR \u2013 Summary Upfront:<\/h5><p>To insert Families programmatically:<\/p><p>\u27a1\ufe0f <strong>Get the FamilySymbol<\/strong> representing the family type to insert.<\/p><p>\u27a1\ufe0f <strong>Use doc.Create.NewFamilyInstance<\/strong> to insert families at a point, on face or line, or with a host.<\/p><p>\u27a1\ufe0f <strong>Remember Transactions<\/strong> \u2013 required for modifying Revit projects.<\/p><p>To prompt the user for family placement, use <strong>uiDoc.PromptForFamilyInstancePlacement<\/strong> (less flexible, but simpler).<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ecaaabc elementor-widget elementor-widget-rael-table-of-contents\" data-id=\"ecaaabc\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;rael_headings_by_tags&quot;:[&quot;h3&quot;,&quot;h4&quot;],&quot;rael_exclude_headings_by_selector&quot;:[],&quot;rael_min_height&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:0,&quot;sizes&quot;:[]},&quot;rael_marker_view&quot;:&quot;numbers&quot;,&quot;rael_hierarchical_view&quot;:&quot;yes&quot;,&quot;rael_min_height_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;rael_min_height_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"rael-table-of-contents.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"rael-toc__header\">\n\t\t\t\t<h5 class=\"rael-toc__header-title\">\ud83d\udd0dContent: <\/h5>\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"rael-toc__body\">\n\t\t\t<div class=\"rael-toc__spinner-container\">\n\t\t\t\t<i class=\"rael-toc__spinner eicon-loading eicon-animation-spin\" aria-hidden=\"true\"><\/i>\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-697dbb9 elementor-widget elementor-widget-text-editor\" data-id=\"697dbb9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>Getting Family Symbol<\/h3><p>Before inserting families, get the FamilySymbol representing a specific family type.<\/p><p>You can do it by specifying the family name and family type name.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c6c44e1 elementor-widget elementor-widget-code-block-for-elementor\" data-id=\"c6c44e1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-block-for-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<pre class='line-numbers theme-default' data-show-toolbar='no'><code class='language-csharp'>\/\/ Retrieve all family symbols in the document\nvar allFamilySymbolsInDocument = new FilteredElementCollector(doc)\n\t.OfClass(typeof(FamilySymbol))\n\t.WhereElementIsElementType()\n\t.Cast&lt;FamilySymbol&gt;().ToList();\n\nvar familyName = &quot;Test Family&quot;;\nvar familyTypeName = &quot;Test Family Type&quot;;\nvar familySymbol = allFamilySymbolsInDocument.FirstOrDefault(x =&gt; x.FamilyName == familyName &amp;&amp; x.Name == familyTypeName);<\/code><\/pre>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bc20d4b elementor-widget elementor-widget-text-editor\" data-id=\"bc20d4b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p class=\"kk-infobox-info\">\u2139\ufe0f If the family isn\u2019t loaded into the document, load it using doc.LoadFamily(familyPath) before retrieving the FamilySymbol.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ef9d17f elementor-widget elementor-widget-text-editor\" data-id=\"ef9d17f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>Inserting Family Instances<\/h3><p><strong>doc.Create.NewFamilyInstance<\/strong> enables inserting families of various types and placements.<\/p><p>We\u2019ll cover three scenarios: inserting families at points (most common), creating hosted families, and placing families on faces (with advanced user-friendly selection).<\/p><h4>Inserting a Family at a Point<\/h4><p>The most common scenario. You need a FamilySymbol, insertion point, and StructuralType (NonStructural, Beam, Brace, Column, Footing, or UnknownFraming).<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dfabd30 elementor-widget elementor-widget-code-block-for-elementor\" data-id=\"dfabd30\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-block-for-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<pre class='line-numbers theme-default' data-show-toolbar='no'><code class='language-csharp'>var insertionPoint = new XYZ(0, 0, 0);\n\nusing var transaction = new Transaction(doc, &quot;Create family instance&quot;);\ntransaction.Start();\nvar familyInstance_inPoint = doc.Create.NewFamilyInstance(insertionPoint, familySymbol, StructuralType.NonStructural);\ntransaction.Commit();<\/code><\/pre>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-297414c elementor-widget elementor-widget-text-editor\" data-id=\"297414c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"kk-infobox-info\">\u2139\ufe0f Inserting Families requires Transactions.<\/div><div class=\"kk-infobox-info\">Although omitted in this example, using try-catch blocks bullet-proofs real plugins.<h6><a>More about transactions here.<\/a><\/h6><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-af00051 elementor-widget elementor-widget-text-editor\" data-id=\"af00051\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h4>Creating a Hosted Family<\/h4><p>For hosted families (e.g., doors hosted in a wall), you need a FamilySymbol, insertion point, StructuralType, and the hosting element.<\/p><p>In the previous example, the insertion point was \u201chard-written\u201d in code. Here, the insertion point and hosting element are selected by the user.<\/p><h6><a href=\"https:\/\/infralligence.com\/pl\/resources\/selecting-and-picking-elements-in-revit-api\/\">More about selecting elements here.<\/a><\/h6>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2001874 elementor-widget elementor-widget-code-block-for-elementor\" data-id=\"2001874\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-block-for-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<pre class='line-numbers theme-default' data-show-toolbar='no'><code class='language-csharp'>\/\/ Select the hosting element and insertion point \nvar selectionManager = uiDoc.Selection;\t\t\nvar hostingElementReference = selectionManager.PickObject(ObjectType.Element, &quot;Select hosting element&quot;);\nvar hostingElement = doc.GetElement(hostingElementReference);\nvar pickedInsertionPoint = selectionManager.PickPoint(&quot;Pick insertion point&quot;);\n\nusing var transaction2 = new Transaction(doc, &quot;Create hosted family instance&quot;);\ntransaction2.Start();\nvar familyInstance_hosted = doc.Create.NewFamilyInstance(pickedInsertionPoint, familySymbol, hostingElement, StructuralType.NonStructural);\ntransaction2.Commit();\n<\/code><\/pre>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4be413c elementor-widget elementor-widget-text-editor\" data-id=\"4be413c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h4>Inserting a Face-based Family<\/h4><p>To insert a face-based Family, you need a Family Symbol, Face reference, point on the Face, and reference direction (rotation of the created family instance).<\/p><p>Typically, users are prompted twice: first to select a Face, then a point. But you can improve user-experience by prompting only once. The user selects a point on a face, and the code extracts the Face reference and the point. To restrict the selection to faces, create a custom FaceSelectionFilter.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-91c7cc8 elementor-widget elementor-widget-code-block-for-elementor\" data-id=\"91c7cc8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-block-for-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<pre class='line-numbers theme-default' data-show-toolbar='no'><code class='language-csharp'>\/\/ Define the family symbol for a face-based family \nvar faceBasedFamilyName = &quot;Test Face-Based Family&quot;;\nvar faceBasedFamilyTypeName = &quot;Test Family Type&quot;;\nvar faceBasedFamilySymbol = allFamilySymbolsInDocument.FirstOrDefault(x =&gt; x.FamilyName == faceBasedFamilyName &amp;&amp; x.Name == faceBasedFamilyTypeName);\n\n\/\/ Select a point on a face\nvar pickedSurfaceReference = selectionManager.PickObject(ObjectType.PointOnElement, new FaceSelectionFilter(), &quot;Pick point on face&quot;);\nvar pickedPointOnFace = pickedSurfaceReference.GlobalPoint;\nvar pickedFace = doc.GetElement(pickedSurfaceReference).GetGeometryObjectFromReference(pickedSurfaceReference) as Face;\nvar referenceDirection = pickedFace.ComputeDerivatives(new UV(0.5, 0.5)).BasisX; \/\/ determines the rotation of the created family instance\n\t\t\nusing var transaction3 = new Transaction(doc, &quot;Create face-based family instance&quot;);\ntransaction3.Start();\nvar familyInstance_onFace = doc.Create.NewFamilyInstance(pickedSurfaceReference, pickedPointOnFace, referenceDirection, faceBasedFamilySymbol);\ntransaction3.Commit();<\/code><\/pre>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2827730 elementor-widget elementor-widget-code-block-for-elementor\" data-id=\"2827730\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-block-for-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<pre class='line-numbers theme-default' data-show-toolbar='no'><code class='language-csharp'>class FaceSelectionFilter : ISelectionFilter\n{\n\tpublic bool AllowElement(Element elem)\n\t{\n\t\treturn true;\n\t}\n\n\tpublic bool AllowReference(Reference reference, XYZ position)\n\t{\n\t\treturn reference.ElementReferenceType == ElementReferenceType.REFERENCE_TYPE_SURFACE;\n\t}\n}<\/code><\/pre>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ac98c01 elementor-widget elementor-widget-text-editor\" data-id=\"ac98c01\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>Prompting for Family Placement<\/h3><p>To prompt the user to place families, use <strong>uiDoc.PromptForFamilyInstancePlacement<\/strong>.<\/p><p>Place the method inside a t<strong>ry-catch<\/strong> block to handle ESC and prevent errors when users finish placing.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-88805d0 elementor-widget elementor-widget-code-block-for-elementor\" data-id=\"88805d0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-block-for-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<pre class='line-numbers theme-default' data-show-toolbar='no'><code class='language-csharp'>try\n{\t\n\tuiDoc.PromptForFamilyInstancePlacement(familySymbol); \/\/Prompt: &quot;Click to place a free instance&quot;\n}\ncatch { } \/\/ the user probably clicked ESC to finish placing<\/code><\/pre>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>You can insert families programmatically at points, on faces or lines, or create hosted families. Inserting Families is the core of creating Revit Elements \u2013 and a must-know for Revit plugin developers. In this post: code, examples, and everything you need to know about Inserting Families. \ud83d\udccc TLDR \u2013 Summary Upfront: To insert Families programmatically: [&hellip;]<\/p>","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[6],"tags":[],"post_folder":[],"class_list":["post-2773","post","type-post","status-publish","format-standard","hentry","category-revit-api-basics"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Inserting Families with Revit API - Infralligence<\/title>\n<meta name=\"description\" content=\"To programmatically insert family instances with Revit API, use doc.Create.NewFamilyInstance. or uiDoc.PromptForFamilyInstancePlacement...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/infralligence.com\/pl\/resources\/inserting-families-with-revit-api\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Inserting Families with Revit API - Infralligence\" \/>\n<meta property=\"og:description\" content=\"To programmatically insert family instances with Revit API, use doc.Create.NewFamilyInstance. or uiDoc.PromptForFamilyInstancePlacement...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/infralligence.com\/pl\/resources\/inserting-families-with-revit-api\/\" \/>\n<meta property=\"og:site_name\" content=\"Infralligence\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-06T09:26:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-12-31T09:28:30+00:00\" \/>\n<meta name=\"author\" content=\"Kamil Korus\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Napisane przez\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kamil Korus\" \/>\n\t<meta name=\"twitter:label2\" content=\"Szacowany czas czytania\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minuty\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/infralligence.com\/resources\/inserting-families-with-revit-api\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/infralligence.com\/resources\/inserting-families-with-revit-api\/\"},\"author\":{\"name\":\"Kamil Korus\",\"@id\":\"https:\/\/infralligence.com\/#\/schema\/person\/838177275b7d3b8b217b13180a74aeda\"},\"headline\":\"Inserting Families with Revit API\",\"datePublished\":\"2024-11-06T09:26:49+00:00\",\"dateModified\":\"2024-12-31T09:28:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/infralligence.com\/resources\/inserting-families-with-revit-api\/\"},\"wordCount\":396,\"publisher\":{\"@id\":\"https:\/\/infralligence.com\/#organization\"},\"articleSection\":[\"Revit API Basics\"],\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/infralligence.com\/resources\/inserting-families-with-revit-api\/\",\"url\":\"https:\/\/infralligence.com\/resources\/inserting-families-with-revit-api\/\",\"name\":\"Inserting Families with Revit API - Infralligence\",\"isPartOf\":{\"@id\":\"https:\/\/infralligence.com\/#website\"},\"datePublished\":\"2024-11-06T09:26:49+00:00\",\"dateModified\":\"2024-12-31T09:28:30+00:00\",\"description\":\"To programmatically insert family instances with Revit API, use doc.Create.NewFamilyInstance. or uiDoc.PromptForFamilyInstancePlacement...\",\"breadcrumb\":{\"@id\":\"https:\/\/infralligence.com\/resources\/inserting-families-with-revit-api\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/infralligence.com\/resources\/inserting-families-with-revit-api\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/infralligence.com\/resources\/inserting-families-with-revit-api\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/infralligence.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Inserting Families with Revit API\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/infralligence.com\/#website\",\"url\":\"https:\/\/infralligence.com\/\",\"name\":\"Infralligence\",\"description\":\"Digital Automation and AI for civil engineering\",\"publisher\":{\"@id\":\"https:\/\/infralligence.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/infralligence.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/infralligence.com\/#organization\",\"name\":\"Infralligence\",\"url\":\"https:\/\/infralligence.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/infralligence.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/infralligence.com\/wp-content\/uploads\/2024\/11\/android-chrome-192x192-1.png\",\"contentUrl\":\"https:\/\/infralligence.com\/wp-content\/uploads\/2024\/11\/android-chrome-192x192-1.png\",\"width\":192,\"height\":192,\"caption\":\"Infralligence\"},\"image\":{\"@id\":\"https:\/\/infralligence.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/infralligence.com\/#\/schema\/person\/838177275b7d3b8b217b13180a74aeda\",\"name\":\"Kamil Korus\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/infralligence.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/95bd7da2ac29ff34a2ab9bf4ea30273b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/95bd7da2ac29ff34a2ab9bf4ea30273b?s=96&d=mm&r=g\",\"caption\":\"Kamil Korus\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/kamil-korus\/\"],\"url\":\"https:\/\/infralligence.com\/pl\/resources\/author\/kamil-korus\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Inserting Families with Revit API - Infralligence","description":"To programmatically insert family instances with Revit API, use doc.Create.NewFamilyInstance. or uiDoc.PromptForFamilyInstancePlacement...","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/infralligence.com\/pl\/resources\/inserting-families-with-revit-api\/","og_locale":"pl_PL","og_type":"article","og_title":"Inserting Families with Revit API - Infralligence","og_description":"To programmatically insert family instances with Revit API, use doc.Create.NewFamilyInstance. or uiDoc.PromptForFamilyInstancePlacement...","og_url":"https:\/\/infralligence.com\/pl\/resources\/inserting-families-with-revit-api\/","og_site_name":"Infralligence","article_published_time":"2024-11-06T09:26:49+00:00","article_modified_time":"2024-12-31T09:28:30+00:00","author":"Kamil Korus","twitter_card":"summary_large_image","twitter_misc":{"Napisane przez":"Kamil Korus","Szacowany czas czytania":"2 minuty"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/infralligence.com\/resources\/inserting-families-with-revit-api\/#article","isPartOf":{"@id":"https:\/\/infralligence.com\/resources\/inserting-families-with-revit-api\/"},"author":{"name":"Kamil Korus","@id":"https:\/\/infralligence.com\/#\/schema\/person\/838177275b7d3b8b217b13180a74aeda"},"headline":"Inserting Families with Revit API","datePublished":"2024-11-06T09:26:49+00:00","dateModified":"2024-12-31T09:28:30+00:00","mainEntityOfPage":{"@id":"https:\/\/infralligence.com\/resources\/inserting-families-with-revit-api\/"},"wordCount":396,"publisher":{"@id":"https:\/\/infralligence.com\/#organization"},"articleSection":["Revit API Basics"],"inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/infralligence.com\/resources\/inserting-families-with-revit-api\/","url":"https:\/\/infralligence.com\/resources\/inserting-families-with-revit-api\/","name":"Inserting Families with Revit API - Infralligence","isPartOf":{"@id":"https:\/\/infralligence.com\/#website"},"datePublished":"2024-11-06T09:26:49+00:00","dateModified":"2024-12-31T09:28:30+00:00","description":"To programmatically insert family instances with Revit API, use doc.Create.NewFamilyInstance. or uiDoc.PromptForFamilyInstancePlacement...","breadcrumb":{"@id":"https:\/\/infralligence.com\/resources\/inserting-families-with-revit-api\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/infralligence.com\/resources\/inserting-families-with-revit-api\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/infralligence.com\/resources\/inserting-families-with-revit-api\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/infralligence.com\/"},{"@type":"ListItem","position":2,"name":"Inserting Families with Revit API"}]},{"@type":"WebSite","@id":"https:\/\/infralligence.com\/#website","url":"https:\/\/infralligence.com\/","name":"Infralligence","description":"Digital Automation and AI for civil engineering","publisher":{"@id":"https:\/\/infralligence.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/infralligence.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/infralligence.com\/#organization","name":"Infralligence","url":"https:\/\/infralligence.com\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/infralligence.com\/#\/schema\/logo\/image\/","url":"https:\/\/infralligence.com\/wp-content\/uploads\/2024\/11\/android-chrome-192x192-1.png","contentUrl":"https:\/\/infralligence.com\/wp-content\/uploads\/2024\/11\/android-chrome-192x192-1.png","width":192,"height":192,"caption":"Infralligence"},"image":{"@id":"https:\/\/infralligence.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/infralligence.com\/#\/schema\/person\/838177275b7d3b8b217b13180a74aeda","name":"Kamil Korus","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/infralligence.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/95bd7da2ac29ff34a2ab9bf4ea30273b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/95bd7da2ac29ff34a2ab9bf4ea30273b?s=96&d=mm&r=g","caption":"Kamil Korus"},"sameAs":["https:\/\/www.linkedin.com\/in\/kamil-korus\/"],"url":"https:\/\/infralligence.com\/pl\/resources\/author\/kamil-korus\/"}]}},"_links":{"self":[{"href":"https:\/\/infralligence.com\/pl\/wp-json\/wp\/v2\/posts\/2773","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/infralligence.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/infralligence.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/infralligence.com\/pl\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/infralligence.com\/pl\/wp-json\/wp\/v2\/comments?post=2773"}],"version-history":[{"count":7,"href":"https:\/\/infralligence.com\/pl\/wp-json\/wp\/v2\/posts\/2773\/revisions"}],"predecessor-version":[{"id":2780,"href":"https:\/\/infralligence.com\/pl\/wp-json\/wp\/v2\/posts\/2773\/revisions\/2780"}],"wp:attachment":[{"href":"https:\/\/infralligence.com\/pl\/wp-json\/wp\/v2\/media?parent=2773"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/infralligence.com\/pl\/wp-json\/wp\/v2\/categories?post=2773"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/infralligence.com\/pl\/wp-json\/wp\/v2\/tags?post=2773"},{"taxonomy":"post_folder","embeddable":true,"href":"https:\/\/infralligence.com\/pl\/wp-json\/wp\/v2\/post_folder?post=2773"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}