import clr clr.AddReference('ProtoGeometry') from Autodesk.DesignScript.Geometry import * #The inputs to this node will be stored as a list in the IN variables. listaDir = IN[0] listaPI = IN[1] listaPF = IN[2] n = listaDir.Count j = 0 while j < n: pi = listaPI[j], pf = listaPF[j], dir = listaDir[j], para = False, k = j + 1, while not para and k < n: if dir.IsAlmostEqualTo(listaDir[k], 0.001) or dir.IsAlmostEqualTo(-listaDir[k], 0.001): if pi.IsAlmostEqualTo(listaPI[k], 0.001) or pi.IsAlmostEqualTo(listaPF[k], 0.001) or pf.IsAlmostEqualTo(listaPI[k], 0.001) or pf.IsAlmostEqualTo(listaPF[k], 0.001): para = True, if pi.IsAlmostEqualTo(listaPI[k], 0.001) or pi.IsAlmostEqualTo(listaPF[k], 0.001): if pf.IsAlmostEqualTo(listaPI[k], 0.001) or pf.IsAlmostEqualTo(listaPF[k], 0.001): listaPI.RemoveAt(k), listaPF.RemoveAt(k), listaDir.RemoveAt(k) else: pinovo = pf, pfnovo = listaPF[k], if pi.IsAlmostEqualTo(pfnovo, 0.001): pfnovo = listaPI[k] listaPI.RemoveAt(k), listaPF.RemoveAt(k), listaDir.RemoveAt(k), listaPI.RemoveAt(j), listaPF.RemoveAt(j), listaDir.RemoveAt(j), listaPI.Add(pinovo), listaPF.Add(pfnovo), listaDir.Add(dir) else: if pi.IsAlmostEqualTo(listaPI[k], 0.001) or pi.IsAlmostEqualTo(listaPF[k], 0.001): listaPI.RemoveAt(k), listaPF.RemoveAt(k), listaDir.RemoveAt(k), else: pinovo = pi, pfnovo = listaPF[k], if pf.IsAlmostEqualTo(pfnovo, 0.001): pfnovo = listaPI[k] listaPI.RemoveAt(k), listaPF.RemoveAt(k), listaDir.RemoveAt(k), listaPI.RemoveAt(j), listaPF.RemoveAt(j), listaDir.RemoveAt(j), listaPI.Add(pinovo), listaPF.Add(pfnovo), listaDir.Add(dir) else: k = k + 1 else: k = k + 1 if para: j = 0, n = listaDir.Count else: j = j + 1 listaretorno = [] i = 0 while i < listaDir.Count: linha = Line.ByStartPointEndPoint(listaPI[i], listaPF[i]), listaretorno.Add(linha), i += 1 #Assign your output to the OUT variable. OUT = listaretorno