Unionを繰り返して生成したSurfaceをPerimeterCurvesで直線にばらすと、 線分が無駄に細かく刻まれていて面倒な時がある。
まっすぐな線分をつなぐDynamoノードのためのPythonスクリプトを書いた。以下。
# 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) d0 = line0.Direction.Normalized() ret = [] debug = [] while True: line = next(it, None) if line is None: break d = line.Direction.Normalized() if d.IsAlmostEqualTo(d0): if line0.EndPoint.DistanceTo(line.StartPoint) < threshold: line0 = Line.ByStartPointEndPoint( line0.StartPoint, line.EndPoint ) continue ret.append(line0) line0 = line d0 = d ret.append(line0) return ret # 出力を OUT 変数に割り当てます。 OUT = main(IN)