This is a repository of some of the Python code samples that have assisted me in my development of the Sastrugi package.
As I have been learning about coding, I have made an effort to only use open-source or readily available code, so hope you can use these samples freely in your endeavors.
import clr
clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import *
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
clr.AddReference("RevitAPIUI")
from Autodesk.Revit.UI import *
doc = DocumentManager.Instance.CurrentDBDocument
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
from System.Collections.Generic import *
clr.AddReference('DSCoreNodes')
import DSCore
from DSCore import *
import sys
sys.path.append('C:\Program Files (x86)\IronPython 2.7\Lib')
import random
# Convert an instance/list to a list
def ToList(obj1):
if hasattr(obj1,"__iter__"): return obj1
else: return [obj1]
# Return the difference between two lists
def Diff(list1, list2):
c = set(list1).union(set(list2))
d = set(list1).intersection(set(list2))
return list(c - d)
# Create a sequence with a specified step value
def Seq(start, stop, step=1):
n = int(round((stop - start)/float(step)))
if n > 1:
return([start + step*i for i in range(n+1)])
elif n == 1:
return([start])
else:
return([])
# Sort a list by Values
def SortByValue(data):
sdata = sorted(data)
indices = []
result = []
for s in sdata:
i = data.index(s)
indices.append(i)
for x in indices:
result.append(data[x])
return result
# Get the Indexes of Sorted Values
def IndexByValue(data):
sdata = sorted(data)
indices = []
for s in sdata:
i = data.index(s)
indices.append(i)
return indices
# For removing duplicate Curves
def CleanLines(curves):
C0 = []
C1 = []
for c in curves:
if str(c) not in C1 and str(Line.Reverse(c)) not in C1:
C0.append(c)
C1.append(str(c))
return C0
# Remove Duplicates from a List
def RemoveDuplicates(mylist):
newlist = list(dict.fromkeys(mylist))
return newlist
# Remove item at multiple indices
def RemoveAtIndices(l, id_to_del):
somelist = [i for j, i in enumerate(l) if j not in id_to_del]
return somelist
# Split list into chunks
def Chucks(data,sizes):
it = iter(data)
return [[next(it) for _ in range(size)] for size in sizes]