Advertisement
Guest User

SpotCoord

a guest
Feb 9th, 2016
854
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.49 KB | None | 0 0
  1. # antonbond Feb2016
  2. import clr
  3. clr.AddReference('ProtoGeometry')
  4. from Autodesk.DesignScript.Geometry import *
  5.  
  6. # Import Element wrapper extension methods
  7. clr.AddReference("RevitNodes")
  8. import Revit
  9. clr.ImportExtensions(Revit.Elements)
  10.  
  11. # Import geometry conversion extension methods
  12. clr.ImportExtensions(Revit.GeometryConversion)
  13.  
  14. # Import DocumentManager and TransactionManager
  15. clr.AddReference("RevitServices")
  16. import RevitServices
  17. from RevitServices.Persistence import DocumentManager
  18. from RevitServices.Transactions import TransactionManager
  19.  
  20. doc = DocumentManager.Instance.CurrentDBDocument
  21. uiapp = DocumentManager.Instance.CurrentUIApplication
  22. app = uiapp.Application
  23.  
  24. # Import RevitAPI
  25. clr.AddReference("RevitAPI")
  26. import Autodesk
  27. from Autodesk.Revit.DB import *
  28.  
  29. import sys
  30. pyt_path = r'C:\Program Files (x86)\IronPython 2.7\Lib'
  31. sys.path.append(pyt_path)
  32.  
  33. #The inputs to this node will be stored as a list in the IN variable.
  34. dataEnteringNode = IN
  35. #
  36. view = doc.ActiveView
  37. opt = Options()
  38. opt.ComputeReferences = True
  39. opt.IncludeNonVisibleObjects = True
  40. #
  41. def spotCoord(fi):
  42.     g = fi.get_Geometry(opt)
  43.     e = g.GetEnumerator()
  44.     e.MoveNext()
  45.     e.MoveNext()
  46.     e.MoveNext()
  47.     cE = e.Current
  48.     cS = cE.GetSymbolGeometry()
  49.     cI = cE.GetInstanceGeometry()
  50.     eS = cS.GetEnumerator()
  51.     eS.MoveNext()
  52.     i = eS.Current
  53.     eI = cI.GetEnumerator()
  54.     eI.MoveNext()
  55.     eI.MoveNext()
  56.     j = eI.Current
  57.     edgeS = i.Edges
  58.     edgeI = j.Edges
  59. # 1st corner:
  60.     ref1 = edgeS[0].GetEndPointReference(0)
  61.     curS1 = edgeS[0].AsCurve()
  62.     curI1 = edgeI[0].AsCurve()
  63.     origin1 = curS1.GetEndPoint(0)
  64.     refPt1 = origin1
  65.     origPt1 = curI1.GetEndPoint(0)
  66.     bend1 = XYZ(origPt1.X + 0.5, origPt1.Y + 0.75, origPt1.Z)
  67.     end1 = XYZ(origPt1.X + 1, origPt1.Y + 0.75, origPt1.Z)
  68. #2nd corner:
  69.     ref2 = edgeS[2].GetEndPointReference(0)
  70.     curS2 = edgeS[2].AsCurve()
  71.     curI2 = edgeI[2].AsCurve()
  72.     origin2 = curS2.GetEndPoint(0)
  73.     refPt2 = origin2
  74.     origPt2 = curI2.GetEndPoint(0)
  75.     bend2 = XYZ(origPt2.X - 0.5, origPt2.Y - 0.75, origPt2.Z)
  76.     end2 = XYZ(origPt2.X - 1, origPt2.Y - 0.75, origPt2.Z)
  77. # TRANSACTION:
  78.     TransactionManager.Instance.EnsureInTransaction(doc)
  79.     doc.Create.NewSpotCoordinate(view, ref1, origin1, bend1, end1, refPt1, True)
  80.     doc.Create.NewSpotCoordinate(view, ref2, origin2, bend2, end2, refPt2, True)
  81.     TransactionManager.Instance.TransactionTaskDone()
  82. ###
  83. col = UnwrapElement(IN[0])
  84.  
  85. if isinstance(IN[0], list):
  86.     map(spotCoord, col)
  87. else:
  88.     spotCoord(col)
  89.    
  90. #Assign your output to the OUT variable.
  91. OUT = col
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement