Revit API メソッドへの入力として曲線が必要になることがよくあります。これらは複数の方法で作成できます。
Curve には多数の派生タイプがあり、静的メソッドを使用して曲線を作成できます。基本的な Curve クラスには、既存の曲線から新しい Curve を作成するメソッドが備わっています。
曲線作成メソッドでは、Revit の許容値よりも短い曲線は作成されません。この許容値は Application.ShortCurveTolerance プロパティを通して表示されます。
Curve クラスには、既存の曲線から新しい曲線を作成するメソッドがいくつか備わっています。
新しい Line の作成には 2 つの静的メソッドを使用できます。
|
コード領域: 境界のない線形曲線を作成 |
// define start point and direction for unbound line XYZ startPoint = new XYZ(0, 0, 0); XYZ directionPt = new XYZ(10, 10, 10); // create line Line line = Line.CreateUnbound(startPoint, directionPt); |
オーバーロードした静的 Create()メソッドを使用すると、次の 3 つの方法で Arc を作成できます。
|
コード領域: 3 つの点で円弧を作成 |
// Create a new arc using two ends and a point on the curve XYZ end0 = new XYZ(1, 0, 0); // start point of the arc XYZ end1 = new XYZ(10, 10, 10); // end point of the arc XYZ pointOnCurve = new XYZ(10, 0, 0); // point along arc Arc arc = Arc.Create(end0, end1, pointOnCurve); |
|
コード領域: 平面で円弧を作成 |
Arc CreateArcByGivingPlane(Autodesk.Revit.ApplicationServices.Application application, Plane plane)
{
// Create an arc which is placed on the plane and whose center is the plane's origin
double radius = 10;
double startAngle = 0; // The unit is radian
double endAngle = 2 * Math.PI; // this arc will be a circle
return Arc.Create(plane, radius, startAngle, endAngle);
}
|
|
コード領域: 軸で円弧を作成 |
// Create a new arc defined by its center, radios, angles and 2 axes double radius = 10; double startAngle = 0; // In radian double endAngle = Math.PI; // In radian XYZ center = new XYZ(5, 0, 0); XYZ xAxis = new XYZ(1, 0, 0); // The x axis to define the arc plane. Must be normalized XYZ yAxis = new XYZ(0, 1, 0); // The y axis to define the arc plane. Must be normalized Arc arc = Arc.Create(center, radius, startAngle, endAngle, xAxis, yAxis); |
最後の 2 つのオプションについては、角度の範囲が 2 * pi 以上の場合、曲線が境界のない円に自動的に変換されます。
静的 Create()メソッドでは、楕円の平面と開始パラメータと終了パラメータを定義する中心点、楕円の x ベクトル半径と y ベクトル半径、x 軸と y 軸を指定して Ellipse を作成します。値に応じて、楕円や楕円弧が作成されます。
CylindricalHelix の静的 Create()メソッドは、軸の基本点、半径、x ベクトル、z ベクトル、ピッチ、らせんの開始点を指定する開始角度、らせんの終了点を指定する終了角度から、新しい CylindricalHelix を作成します。z ベクトルは軸の向きを示し、x ベクトルに対して垂直に設定する必要があります。ピッチが正の値の場合は右回りのらせんが作成され、ピッチが負の値の場合は左回りのらせんが作成されます。
NurbSpline は NURBS (Non-Uniform Rational B-Spline)曲線を表します。オーバーロードした静的 Create()メソッドでは 2 つの方法で NURBS 曲線を作成できます。1 つ目は、Revit がユーザ インタフェースでスプラインをスケッチする際に使用するのと同じ計算を使用する方法です。一連の制御点と重みを使用して新しい NurbSpline を作成します。スプラインのノットと次数は指定した制御点と重みから算出されます。
2 つ目のオプションにも制御点と重みのリストが必要になりますが、同様に NurbSpline のノットと次数のリストも必要になります。2 つの追加のパラメータによって、NurbSpline が閉じているか開いているか、有理であるかどうかが示されます。次数は 3 以上である必要があります。有理である場合、制御点と重みの配列のサイズが同じになります。少なくとも次数 + 1 の制御点が必要です。ノットのサイズは次数、制御点の配列のサイズ、1 の合計と等しくなる必要があります。最初の次数 + 1 のノットは最後の次数 + 1 ノットと同様に、一致させる必要があります。シーケンスの中央のノットは非減少とする必要があります。
オーバーロードした静的 HermiteSpline.Create()メソッドでは、Hermite スプラインを作成するための 2 つのオプションがあります。Hermite スプラインを作成する最も簡単な方法は、端点で既定の接線を使用する方法です。必要となるのは、制御点のリストと、Hermite スプラインが周期的かどうかを示すフラグのみです。2 つ目のオプションは、端点に接線を指定して Hermite スプラインを作成します。この方法は、HermiteSplineTangents オブジェクトの追加パラメータを使用して、曲線の始端と終端の両方または片方に接線を指定します。