Line[]をPolygonにマージするDynamoノード

Polygonは、Surface.ByPatchでSurfaceに変換してから、Surface.PerimeterCurvesでLineには変換できるんだけど、逆にLineからPolygonとかSurfaceに変換は標準のノードではできない。(と思う。)

だけど戻したいことはよくある。仕方ないから書いた。

サードパーティーのノードとか探せばあるのかな。。。

# Python 標準ライブラリおよび DesignScript ライブラリをロード
import sys
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *

# このノードへの入力は、リスト形式で IN 変数に格納されます。
dataEnteringNode = IN

# この距離以下の点は同一とみなす
threshold = 0.1

# この行の下にコードを配置します
def main(IN):
    lines = IN[0]
    
    it = iter(lines)

    line0 = next(it)
    
    s = line0.StartPoint
    p0 = line0.EndPoint

    pts = [s]
    polygons = []
    while True:
        line = next(it, None)
        if line is None:
            break
        if line.StartPoint.DistanceTo(p0) < threshold:
            pts.append(p0)
            p0 = line.EndPoint

        if s.DistanceTo(p0) < 0.1:
            if len(pts) >= 3:
                polygons.append(Polygon.ByPoints(pts))
                pts = []
            break

    return polygons

# 出力を OUT 変数に割り当てます。
OUT = main(IN)