Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
andydandy74 committed Dec 29, 2024
1 parent 502f2d3 commit 4707b4b
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 9 deletions.
29 changes: 21 additions & 8 deletions nodes/3.x/Element.Geometry+.dyf
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@
{
"ConcreteType": "PythonNodeModels.PythonNode, PythonNodeModels",
"NodeType": "PythonScriptNode",
"Code": "import clr\r\nclr.AddReference('RevitAPI')\r\nfrom Autodesk.Revit.DB import *\r\n\r\nclr.AddReference(\"RevitNodes\")\r\nimport Revit\r\nclr.ImportExtensions(Revit.Elements)\r\nclr.ImportExtensions(Revit.GeometryConversion)\r\n\r\nclr.AddReference(\"RevitServices\")\r\nimport RevitServices\r\nfrom RevitServices.Persistence import DocumentManager\r\nfrom RevitServices.Transactions import TransactionManager\r\n\r\n# this function takes care of exploding \r\n# GeometryInstance objects. GI objects typically\r\n# represent family instance geometry.\r\n# in order to also catch possible nested families\r\n# the fucntion calls itself recursively.\r\ndef convert_geometry_instance(geo, elementlist):\r\n\tfor g in geo:\r\n\t\tif str(g.GetType()) == 'Autodesk.Revit.DB.GeometryInstance':\r\n\t\t\telementlist = convert_geometry_instance(g.GetInstanceGeometry(), elementlist)\r\n\t\telse:\r\n\t\t\ttry: \r\n\t\t\t\tif g.Volume != 0:\r\n\t\t\t\t\telementlist.append(g)\r\n\t\t\texcept:\r\n\t\t\t\tpass\r\n\treturn elementlist\r\n\r\ndoc = DocumentManager.Instance.CurrentDBDocument\r\nitems = UnwrapElement(IN[0])\r\nif IN[1] == \"Coarse\": detail_lvl = ViewDetailLevel.Coarse\r\nelif IN[1] == \"Fine\": detail_lvl = ViewDetailLevel.Fine\r\nelse: detail_lvl = ViewDetailLevel.Medium\r\ninc_invis = IN[2]\r\nview = UnwrapElement(IN[3])\r\ninserts = UnwrapElement(IN[4])\r\nremove_inserts = IN[5]\r\nrevitlist = list()\r\ndynlist = list()\r\ncatlist = list()\r\n# we might need a transaction in order to \r\n# temporarily delete all inserts and retrieve gross wall areas\r\nTransactionManager.Instance.EnsureInTransaction(doc)\r\ntrans = SubTransaction(doc)\r\ntrans.Start()\r\ni = 0\r\nfor item in items:\r\n\tif remove_inserts == True:\r\n\t\tfor insert in inserts[i]:\r\n\t\t\tdoc.Delete(insert.Id)\r\n\t\tdoc.Regenerate()\r\n\tgeo_options = Options()\r\n\tif view == None: geo_options.DetailLevel = detail_lvl\r\n\tgeo_options.IncludeNonVisibleObjects = inc_invis\r\n\tif view != None: geo_options.View = view\r\n\trevitGeo = item.Geometry[geo_options]\r\n\ttry:\t\t\r\n\t\trevit_geos = convert_geometry_instance(revitGeo, list())\r\n\t\trevitlist.append(revit_geos)\r\n\t\tdyn_geos = list()\r\n\t\tcats = list()\r\n\t\tfor geo in revit_geos:\r\n\t\t\ttry:\r\n\t\t\t\tdyn_geos.append(geo.ToProtoType())\r\n\t\t\texcept:\r\n\t\t\t\tdyn_geos.append(None)\r\n\t\t\ttry:\r\n\t\t\t\tgraphstyle = doc.GetElement(geo.GraphicsStyleId)\r\n\t\t\t\tif graphstyle != None:\r\n\t\t\t\t\tcats.append(Revit.Elements.Category.ById(graphstyle.GraphicsStyleCategory.Id.IntegerValue))\r\n\t\t\t\telse:\r\n\t\t\t\t\tcats.append(None)\r\n\t\t\texcept:\r\n\t\t\t\tcats.append(None)\r\n\t\tdynlist.append(dyn_geos)\r\n\t\tcatlist.append(cats)\t\t\r\n\texcept:\r\n\t\trevitlist.append(list())\r\n\t\tdynlist.append(list())\r\n\t\tcatlist.append(list())\r\n\ti += 1\r\ntrans.RollBack()\r\nTransactionManager.Instance.TransactionTaskDone()\r\nOUT = (dynlist,revitlist,catlist)",
"Code": "import clr\r\nclr.AddReference('RevitAPI')\r\nfrom Autodesk.Revit.DB import *\r\n\r\nclr.AddReference(\"RevitNodes\")\r\nimport Revit\r\nclr.ImportExtensions(Revit.Elements)\r\nclr.ImportExtensions(Revit.GeometryConversion)\r\n\r\nclr.AddReference(\"RevitServices\")\r\nimport RevitServices\r\nfrom RevitServices.Persistence import DocumentManager\r\nfrom RevitServices.Transactions import TransactionManager\r\n\r\n# this function takes care of exploding \r\n# GeometryInstance objects. GI objects typically\r\n# represent family instance geometry.\r\n# in order to also catch possible nested families\r\n# the fucntion calls itself recursively.\r\ndef convert_geometry_instance(geo, elementlist):\r\n\tfor g in geo:\r\n\t\tif str(g.GetType()) == 'Autodesk.Revit.DB.GeometryInstance':\r\n\t\t\telementlist = convert_geometry_instance(g.GetInstanceGeometry(), elementlist)\r\n\t\telse:\r\n\t\t\ttry: \r\n\t\t\t\tif g.Volume != 0:\r\n\t\t\t\t\telementlist.append(g)\r\n\t\t\texcept:\r\n\t\t\t\tpass\r\n\treturn elementlist\r\n\r\ndoc = DocumentManager.Instance.CurrentDBDocument\r\nitems = UnwrapElement(IN[0])\r\nif IN[1] == \"Coarse\": detail_lvl = ViewDetailLevel.Coarse\r\nelif IN[1] == \"Fine\": detail_lvl = ViewDetailLevel.Fine\r\nelse: detail_lvl = ViewDetailLevel.Medium\r\ninc_invis = IN[2]\r\nview = UnwrapElement(IN[3])\r\ninserts = UnwrapElement(IN[4])\r\nremove_inserts = IN[5]\r\nrevitlist = list()\r\ndynlist = list()\r\ncatlist = list()\r\n# we might need a transaction in order to \r\n# temporarily delete all inserts and retrieve gross wall areas\r\nTransactionManager.Instance.EnsureInTransaction(doc)\r\ntrans = SubTransaction(doc)\r\ntrans.Start()\r\ni = 0\r\nfor item in items:\r\n\tif remove_inserts == True:\r\n\t\tfor insert in inserts[i]:\r\n\t\t\tdoc.Delete(insert.Id)\r\n\t\tdoc.Regenerate()\r\n\tgeo_options = Options()\r\n\tif view == None: geo_options.DetailLevel = detail_lvl\r\n\tgeo_options.IncludeNonVisibleObjects = inc_invis\r\n\tif view != None: geo_options.View = view\r\n\trevitGeo = item.get_Geometry(geo_options)\r\n\ttry:\t\t\r\n\t\trevit_geos = convert_geometry_instance(revitGeo, list())\r\n\t\trevitlist.append(revit_geos)\r\n\t\tdyn_geos = list()\r\n\t\tcats = list()\r\n\t\tfor geo in revit_geos:\r\n\t\t\ttry:\r\n\t\t\t\tdyn_geos.append(geo.ToProtoType())\r\n\t\t\texcept:\r\n\t\t\t\tdyn_geos.append(None)\r\n\t\t\ttry:\r\n\t\t\t\tgraphstyle = doc.GetElement(geo.GraphicsStyleId)\r\n\t\t\t\tif graphstyle != None:\r\n\t\t\t\t\tcats.append(Revit.Elements.Category.ById(graphstyle.GraphicsStyleCategory.Id.IntegerValue))\r\n\t\t\t\telse:\r\n\t\t\t\t\tcats.append(None)\r\n\t\t\texcept:\r\n\t\t\t\tcats.append(None)\r\n\t\tdynlist.append(dyn_geos)\r\n\t\tcatlist.append(cats)\t\t\r\n\texcept:\r\n\t\trevitlist.append(list())\r\n\t\tdynlist.append(list())\r\n\t\tcatlist.append(list())\r\n\ti += 1\r\ntrans.RollBack()\r\nTransactionManager.Instance.TransactionTaskDone()\r\nOUT = (dynlist,revitlist,catlist)",
"Engine": "CPython3",
"VariableInputPorts": true,
"Id": "7f53ae10a8834106808cf044c50e5f97",
Expand Down Expand Up @@ -702,7 +702,20 @@
"cd09ad33-8c34-4850-ac26-24448d92c38f",
"bc5b8366-c225-4166-a8ed-a3b20817c8e2"
],
"NodeLibraryDependencies": [],
"NodeLibraryDependencies": [
{
"Name": "Clockwork for Dynamo 2.x",
"Version": "2.12.2",
"ReferenceType": "Package",
"Nodes": [
"d22827f027d64ffea0126b0b48a82f63",
"393572cab3074246bbcc731d14a9cec6",
"41ad8b0a34334c34ba1fea1053aa03de",
"31407c184371431fb1513f3cd0c87274",
"40a48499d99c4b26b5164813aaf0af98"
]
}
],
"Author": "None provided",
"Bindings": [],
"View": {
Expand Down Expand Up @@ -764,8 +777,8 @@
"IsSetAsInput": false,
"IsSetAsOutput": false,
"Excluded": false,
"X": -300.5,
"Y": 220.606666666667
"X": -342.03833096265521,
"Y": 146.51126549003894
},
{
"ShowGeometry": true,
Expand Down Expand Up @@ -844,7 +857,7 @@
"IsSetAsInput": false,
"IsSetAsOutput": false,
"Excluded": false,
"X": 101.059774420445,
"X": 101.05977442044502,
"Y": 613.727642062281
},
{
Expand Down Expand Up @@ -889,8 +902,8 @@
}
],
"Annotations": [],
"X": -13.310811279955146,
"Y": -187.74587905606444,
"Zoom": 1.0542982150113271
"X": 387.07408999718461,
"Y": 60.778820732895213,
"Zoom": 0.34438636458508759
}
}
2 changes: 1 addition & 1 deletion nodes/3.x/python/Element.Geometry+.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ def convert_geometry_instance(geo, elementlist):
if view == None: geo_options.DetailLevel = detail_lvl
geo_options.IncludeNonVisibleObjects = inc_invis
if view != None: geo_options.View = view
revitGeo = item.Geometry[geo_options]
revitGeo = item.get_Geometry(geo_options)
try:
revit_geos = convert_geometry_instance(revitGeo, list())
revitlist.append(revit_geos)
Expand Down

0 comments on commit 4707b4b

Please sign in to comment.