{"id":19655,"date":"2017-03-23T00:16:50","date_gmt":"2017-03-22T23:16:50","guid":{"rendered":"https:\/\/www.modelical.com\/node\/etiquetas-de-material-en-revit-resolver-los-signos-de-interrogacion\/"},"modified":"2024-07-29T11:45:21","modified_gmt":"2024-07-29T09:45:21","slug":"etiquetas-de-material-en-revit-resolver-los-signos-de-interrogacion","status":"publish","type":"node","link":"https:\/\/www.modelical.com\/es\/node\/etiquetas-de-material-en-revit-resolver-los-signos-de-interrogacion\/","title":{"rendered":"Etiquetas de Material en Revit"},"content":{"rendered":"<p>El siguiente c\u00f3digo arregla el bug de Revit que dejaba algunas etiquetas de material con un signo de interrogaci\u00f3n (?).<\/p>\n<p>El problema era conocido pues lleva unos a\u00f1os d\u00e1ndose y la \u00fanica soluci\u00f3n consist\u00eda en mover ligeramente la etiqueta antes exportar o imprimir<\/p>\n<pre class=\"lang:c#decode:true \">public void MaterialTagFix()\r\n\t\t{\r\n\t\t\tUIDocument uidoc = this.Application.ActiveUIDocument; \/\/Get active document\r\n\t\t\tuidoc.RefreshActiveView(); \/\/Refresh the view - Unnecessary\r\n\t\t\tList noIDs = new List(); \r\n\t\t\tList tags = new List(); \r\n\t\t\t\r\n\t\t\tList mtags = new List();\r\n\t\t\tList pinnedtags = new List();\r\n\t\t\tnoIDs.Add(ElementId.InvalidElementId); \/\/create a null selection for later use\r\n\t\t\t\r\n\t\t\tList selectedIds = new List(); \/\/ a list for selected elements\r\n\t\t\t\r\n\t\t\tforeach (Element e in new FilteredElementCollector(Document).OfCategory(BuiltInCategory.OST_MaterialTags).OfClass(typeof(IndependentTag))) \/\/collect material tags in the document\r\n\t\t\t{\r\n\t\t\t\ttags.Add(e); \/\/store in list of tags\r\n\t\t\t\tselectedIds.Add(e.Id); \/\/store the tag ID in the list for selecting items\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tList views2open = new List(); \/\/ a list for views to be opened\r\n\t\t\t\r\n\t\t\t\r\n\t\t\tforeach (Element tag in tags) \/\/find the containing view for all material tags\r\n\t\t\t{\r\n\t\t\t\tIndependentTag itag = tag as IndependentTag;\r\n\t\t\t\tif (itag != null)\r\n\t\t\t\t{\r\n\t\t\t\t\tElementId vid = itag.OwnerViewId; \r\n\t\t\t\t\tif(!views2open.Contains(vid))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tviews2open.Add(vid); \/\/add the view to the list only if does not exist \r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tView startingView = uidoc.ActiveView; \/\/store the starting view as a courtesy to the user\r\n\t\t\t\r\n\t\t\tforeach (ElementId v2oId in views2open) \/\/open all views containing material tags\r\n\t\t\t{\r\n\t\t\t\tView v2o = Document.GetElement(v2oId) as View;\r\n\t\t\t\tif (v2o != null)\r\n\t\t\t\t{\r\n\t\t\t\t\tuidoc.ActiveView = v2o; \/\/get the view ID and set it as active\r\n\t\t\t\t\t\r\n\t\t\t\t\tUIView uiview = null; \r\n\t\t\t\t\tIList uiviews = uidoc.GetOpenUIViews();\r\n\t\t\t\t\t\r\n\t\t\t\t\tforeach( UIView uv in uiviews ) \/\/get the corresponding UIview to the opened view\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif( uv.ViewId.Equals( v2oId ) )\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tuiview = uv;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(null != uiview) \/\/if corresponding UIview exists, set the UIview zoom to the view's crop\r\n\t\t\t\t\t{ \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tBoundingBoxXYZ crop = v2o.CropBox;\r\n\t\t\t\t\t\tXYZ p = crop.Min;\r\n\t\t\t\t\t\tXYZ q = crop.Max;\r\n\t\t\t\t\t\tuiview.ZoomAndCenterRectangle( p, q );\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tuidoc.Selection.SetElementIds(selectedIds); \/\/select all material tags\r\n\t\t\t\t\tuidoc.RefreshActiveView(); \/\/ refresh the view\r\n\t\t\t\t\tuidoc.Selection.SetElementIds(noIDs); \/\/ clear the selection\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\/\/\r\n\t\t\t\/\/ The following block can be used to actually nudge the tags, only if select and deselect does not work.\r\n\t\t\t\/\/ Be careful because elements might be pinned or non-editable.\r\n\t\t\t\/\/\r\n\t\t\t\/*\r\n\t\t\tXYZ v1 = new XYZ(0.01*MeterToFeet,0.01*MeterToFeet,0); \/\/vector to nudge the tags a little bit to the right\r\n\t\t\tXYZ v2 = new XYZ(-0.01*MeterToFeet,-0.01*MeterToFeet,0); \/\/vector to nudge the tags a little bit back to the left\r\n\t\t\t\r\n\t\t\tusing (Transaction tx = new Transaction(Document))\r\n\t\t\t{\r\n\t\t\t\ttx.Start(\"Move Tags\");\r\n\t\t\t\t\r\n\t\t\t\tforeach(Element etag in tags)\r\n\t\t\t\t{\r\n\t\t\t\t\tif(etag.Pinned)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpinnedtags.Add(etag); \/\/ register pinned tags\r\n\t\t\t\t\t\tetag.Pinned = false; \/\/ unpin pinned tags\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (etag.Location.Move(v1)) \/\/ if move was successful\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tmtags.Add(etag); \/\/ register the tag as moved so you can revert the change\r\n\t\t\t\t\t}\r\n\t\t\t\t}\t\t\t\t\r\n\t\t\t\ttx.Commit(); \/\/ commit, a refresh is triggered\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tusing (Transaction tx = new Transaction(Document)) \/\/undo the previous transaction moving back the tags\r\n\t\t\t{\r\n\t\t\t\ttx.Start(\"Move Tags Back\");\r\n\t\t\t\t\r\n\t\t\t\tforeach(Element etag in mtags)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (etag.Location.Move(v2))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\/\/mtags.Add(etag);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tforeach(Element ptag in pinnedtags)\r\n\t\t\t\t{\r\n\t\t\t\t\tptag.Pinned = true; \/\/ re-pin tags\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\ttx.Commit();\r\n\t\t\t}*\/\r\n\t\t\t\r\n\t\t\tuidoc.ActiveView = startingView; \/\/ set the view back to the starting view\r\n\t\t\tuidoc.Selection.SetElementIds(selectedIds); \/\/ select and refresh, because why not?\r\n\t\t\tuidoc.RefreshActiveView();\r\n\t\t\tuidoc.Selection.SetElementIds(noIDs);\r\n\t\t\t\r\n\t\t\tif(views2open.Contains(startingView.Id)) \/\/ if the starting view contained tags\r\n\t\t\t{\r\n\t\t\t\tviews2open.Remove(startingView.Id); \/\/ remove it from the list as we want to close all of them, just a courtesy to the user\r\n\t\t\t}\r\n\t\t\tbool closeviews = true; \/\/ set to false in case you don't want to close the views\r\n\t\t\tif(closeviews)\r\n\t\t\t{\r\n\t\t\t\tforeach (UIView openview in uidoc.GetOpenUIViews()) \r\n\t\t\t\t{\r\n\t\t\t\t\tif(views2open.Contains(openview.ViewId))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\topenview.Close(); \/\/ close the views that were opened by the macro\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tuidoc.ActiveView = startingView; \/\/ set the the view back to the starting view - redundant\r\n\t\t\t}\t\r\n\t\t}\r\n\t\tconst double MeterToFeet = 3.2808399;\r\n<\/pre>\n<p>Puedes a\u00f1adir el m\u00e9todo en el Startup Module de las macros de tu archivo para arreglar el problema autom\u00e1ticamente cuando se abra el documento.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>El siguiente c\u00f3digo arregla el bug de Revit que dejaba algunas etiquetas de material con un signo de interrogaci\u00f3n (?).<\/p>\n","protected":false},"featured_media":18566,"template":"","categories":[715],"tags":[757],"class_list":["post-19655","node","type-node","status-publish","has-post-thumbnail","hentry","category-nodos","tag-tecnologia-revit-api"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Etiquetas de Material en Revit - Resolver los signos de interrogaci\u00f3n<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.modelical.com\/es\/node\/etiquetas-de-material-en-revit-resolver-los-signos-de-interrogacion\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Etiquetas de Material en Revit - Resolver los signos de interrogaci\u00f3n\" \/>\n<meta property=\"og:description\" content=\"El siguiente c\u00f3digo arregla el bug de Revit que dejaba algunas etiquetas de material con un signo de interrogaci\u00f3n (?).\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.modelical.com\/es\/node\/etiquetas-de-material-en-revit-resolver-los-signos-de-interrogacion\/\" \/>\n<meta property=\"og:site_name\" content=\"Modelical\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Modelical\/\" \/>\n<meta property=\"article:modified_time\" content=\"2024-07-29T09:45:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.modelical.com\/wp-content\/uploads\/MaterialTagsFix.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1367\" \/>\n\t<meta property=\"og:image:height\" content=\"387\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@modelical\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.modelical.com\\\/es\\\/node\\\/etiquetas-de-material-en-revit-resolver-los-signos-de-interrogacion\\\/\",\"url\":\"https:\\\/\\\/www.modelical.com\\\/es\\\/node\\\/etiquetas-de-material-en-revit-resolver-los-signos-de-interrogacion\\\/\",\"name\":\"Etiquetas de Material en Revit - Resolver los signos de interrogaci\u00f3n\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.modelical.com\\\/es\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.modelical.com\\\/es\\\/node\\\/etiquetas-de-material-en-revit-resolver-los-signos-de-interrogacion\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.modelical.com\\\/es\\\/node\\\/etiquetas-de-material-en-revit-resolver-los-signos-de-interrogacion\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.modelical.com\\\/wp-content\\\/uploads\\\/MaterialTagsFix.jpg\",\"datePublished\":\"2017-03-22T23:16:50+00:00\",\"dateModified\":\"2024-07-29T09:45:21+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.modelical.com\\\/es\\\/node\\\/etiquetas-de-material-en-revit-resolver-los-signos-de-interrogacion\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.modelical.com\\\/es\\\/node\\\/etiquetas-de-material-en-revit-resolver-los-signos-de-interrogacion\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.modelical.com\\\/es\\\/node\\\/etiquetas-de-material-en-revit-resolver-los-signos-de-interrogacion\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.modelical.com\\\/wp-content\\\/uploads\\\/MaterialTagsFix.jpg\",\"contentUrl\":\"https:\\\/\\\/www.modelical.com\\\/wp-content\\\/uploads\\\/MaterialTagsFix.jpg\",\"width\":1367,\"height\":387,\"caption\":\"Material Tags Fix\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.modelical.com\\\/es\\\/node\\\/etiquetas-de-material-en-revit-resolver-los-signos-de-interrogacion\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Nodes & Macros\",\"item\":\"https:\\\/\\\/www.modelical.com\\\/es\\\/node\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Etiquetas de Material en Revit\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.modelical.com\\\/es\\\/#website\",\"url\":\"https:\\\/\\\/www.modelical.com\\\/es\\\/\",\"name\":\"Modelical\",\"description\":\"We build information\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.modelical.com\\\/es\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Etiquetas de Material en Revit - Resolver los signos de interrogaci\u00f3n","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:\/\/www.modelical.com\/es\/node\/etiquetas-de-material-en-revit-resolver-los-signos-de-interrogacion\/","og_locale":"es_ES","og_type":"article","og_title":"Etiquetas de Material en Revit - Resolver los signos de interrogaci\u00f3n","og_description":"El siguiente c\u00f3digo arregla el bug de Revit que dejaba algunas etiquetas de material con un signo de interrogaci\u00f3n (?).","og_url":"https:\/\/www.modelical.com\/es\/node\/etiquetas-de-material-en-revit-resolver-los-signos-de-interrogacion\/","og_site_name":"Modelical","article_publisher":"https:\/\/www.facebook.com\/Modelical\/","article_modified_time":"2024-07-29T09:45:21+00:00","og_image":[{"width":1367,"height":387,"url":"https:\/\/www.modelical.com\/wp-content\/uploads\/MaterialTagsFix.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_site":"@modelical","twitter_misc":{"Tiempo de lectura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.modelical.com\/es\/node\/etiquetas-de-material-en-revit-resolver-los-signos-de-interrogacion\/","url":"https:\/\/www.modelical.com\/es\/node\/etiquetas-de-material-en-revit-resolver-los-signos-de-interrogacion\/","name":"Etiquetas de Material en Revit - Resolver los signos de interrogaci\u00f3n","isPartOf":{"@id":"https:\/\/www.modelical.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.modelical.com\/es\/node\/etiquetas-de-material-en-revit-resolver-los-signos-de-interrogacion\/#primaryimage"},"image":{"@id":"https:\/\/www.modelical.com\/es\/node\/etiquetas-de-material-en-revit-resolver-los-signos-de-interrogacion\/#primaryimage"},"thumbnailUrl":"https:\/\/www.modelical.com\/wp-content\/uploads\/MaterialTagsFix.jpg","datePublished":"2017-03-22T23:16:50+00:00","dateModified":"2024-07-29T09:45:21+00:00","breadcrumb":{"@id":"https:\/\/www.modelical.com\/es\/node\/etiquetas-de-material-en-revit-resolver-los-signos-de-interrogacion\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.modelical.com\/es\/node\/etiquetas-de-material-en-revit-resolver-los-signos-de-interrogacion\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.modelical.com\/es\/node\/etiquetas-de-material-en-revit-resolver-los-signos-de-interrogacion\/#primaryimage","url":"https:\/\/www.modelical.com\/wp-content\/uploads\/MaterialTagsFix.jpg","contentUrl":"https:\/\/www.modelical.com\/wp-content\/uploads\/MaterialTagsFix.jpg","width":1367,"height":387,"caption":"Material Tags Fix"},{"@type":"BreadcrumbList","@id":"https:\/\/www.modelical.com\/es\/node\/etiquetas-de-material-en-revit-resolver-los-signos-de-interrogacion\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Nodes & Macros","item":"https:\/\/www.modelical.com\/es\/node\/"},{"@type":"ListItem","position":2,"name":"Etiquetas de Material en Revit"}]},{"@type":"WebSite","@id":"https:\/\/www.modelical.com\/es\/#website","url":"https:\/\/www.modelical.com\/es\/","name":"Modelical","description":"We build information","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.modelical.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"}]}},"_links":{"self":[{"href":"https:\/\/www.modelical.com\/es\/wp-json\/wp\/v2\/node\/19655","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.modelical.com\/es\/wp-json\/wp\/v2\/node"}],"about":[{"href":"https:\/\/www.modelical.com\/es\/wp-json\/wp\/v2\/types\/node"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.modelical.com\/es\/wp-json\/wp\/v2\/media\/18566"}],"wp:attachment":[{"href":"https:\/\/www.modelical.com\/es\/wp-json\/wp\/v2\/media?parent=19655"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.modelical.com\/es\/wp-json\/wp\/v2\/categories?post=19655"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.modelical.com\/es\/wp-json\/wp\/v2\/tags?post=19655"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}