Export Fabrication Hanger Coordinates Using Dynamo

Export Fabrication Hanger Coordinates Using Dynamo

luiseojeda
Explorer Explorer
390 Views
0 Replies
Message 1 of 1

Export Fabrication Hanger Coordinates Using Dynamo

luiseojeda
Explorer
Explorer

A simple way to export coordinates of Fabrication Hangers to a text file that Trimble can read (CSV File).

 

Dynamo Script.PNG

 

# Created By: Luis Ojeda - BIMcredible 2023

import clr
clr.AddReference('ProtoGeometry')
import Autodesk.DesignScript.Geometry
from Autodesk.DesignScript.Geometry import *

clr.AddReference('DSCoreNodes')
import DSCore
from DSCore import *

clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import FabricationPart
from Autodesk.Revit.DB import FilteredElementCollector, BuiltInCategory

clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager

doc = DocumentManager.Instance.CurrentDBDocument
itmLst = UnwrapElement(IN[0])
startNum = UnwrapElement(IN[1])
locLst = [UnwrapElement(IN[2])]
coordType = UnwrapElement(IN[3])
pntId = startNum

def GetFabLoc(item, pntId, itmDsc, coordType):
	tmpLst = []
	rodInfo = item.GetRodInfo()
	rodCnt = rodInfo.RodCount

	for n in range(rodCnt):
		rodLoc = rodInfo.GetRodEndPosition(n)
		pntLoc = (Point.ByCoordinates(rodLoc.X,rodLoc.Y,rodLoc.Z))
		pntCoord = pntLoc
		if coordType == 1:
			pntCoord = ConvToSharedCoordinates(pntLoc.ToXyz())
		#pntLine = pntId.ToString() + ',' + pntCoord.Y.ToString() + ',' + pntCoord.X.ToString() + ',' + pntCoord.Z.ToString() + ',' + itmDsc
		pntLine = pntId.ToString() + ',' + pntCoord.Y.ToString() + ',' + pntCoord.X.ToString() + ',' + pntCoord.Z.ToString() + ',Hanger'
		tmpLst.append(pntLine)
		pntId = pntId + 1

	return tmpLst, pntId

def ConvToSharedCoordinates(pnt):
	pnt = doc.ActiveProjectLocation.GetTotalTransform().Inverse.OfPoint(pnt).ToPoint()
	return pnt

for item in itmLst:
	if item.Category.Name.ToString() == 'MEP Fabrication Hangers':
		itmDsc = item.LookupParameter('Product Long Description').AsString()
		tmpVal = GetFabLoc(item, pntId, itmDsc, coordType)
		locLst.append(tmpVal[0])
	pntId = tmpVal[1]

OUT = locLst

 

 

Output File

Output File.PNG

 

0 Likes
391 Views
0 Replies
Replies (0)