注釈を作成する

注釈を作成する

Dimensions、ModelText、TextNote オブジェクトなどの新しい注釈を、SymbolicCurve、ModelCurve、DetailCurve といった曲線注釈要素と同じように、ファミリに作成することができます。注釈要素の詳細については、「注釈要素」を参照してください。

さらに、新しい位置合わせを追加でき、位置合わせの方向を決めるビューや 2 つのジオメトリ参照を参照します。

次の例では、新しい弧長寸法を作成する方法を紹介します。

コード領域: 寸法を作成

public Dimension CreateArcDimension(Document document, SketchPlane sketchPlane)
{
    Autodesk.Revit.Creation.Application appCreate = document.Application.Create;
    Line gLine1 = Line.CreateBound(new XYZ(0, 2, 0), new XYZ(2, 2, 0));
    Line gLine2 = Line.CreateBound(new XYZ(0, 2, 0), new XYZ(2, 4, 0));
    Arc arctoDim = Arc.Create(new XYZ(1, 2, 0), new XYZ(-1, 2, 0), new XYZ(0, 3, 0));
    Arc arcofDim = Arc.Create(new XYZ(0, 3, 0), new XYZ(1, 2, 0), new XYZ(0.8, 2.8, 0));

    Autodesk.Revit.Creation.FamilyItemFactory creationFamily = document.FamilyCreate;
    ModelCurve modelCurve1 = creationFamily.NewModelCurve(gLine1, sketchPlane);
    ModelCurve modelCurve2 = creationFamily.NewModelCurve(gLine2, sketchPlane);
    ModelCurve modelCurve3 = creationFamily.NewModelCurve(arctoDim, sketchPlane);
    //get their reference
    Reference ref1 = modelCurve1.GeometryCurve.Reference;
    Reference ref2 = modelCurve2.GeometryCurve.Reference;
    Reference arcRef = modelCurve3.GeometryCurve.Reference;

    Dimension newArcDim = creationFamily.NewArcLengthDimension(document.ActiveView, arcofDim, arcRef, ref1, ref2);
    if (newArcDim == null)
    {
        throw new Exception("Failed to create new arc length dimension.");
    }
           
    return newArcDim;
}

図 51: 作成された弧長寸法

一部のタイプの寸法には、FamilyParameter でラベル付けできます。レベル付けできない寸法に対してラベル プロパティを取得または設定しようとすると、Autodesk.Revit.Exceptions.InvalidOperationException が発生します。次の例では、2 つの線分間に新しい長さ寸法を作成し、「Width」というラベルを設定します。

コード領域: 寸法にラベル付け

public Dimension CreateLinearDimension(Document document)
{
    // first create two lines
    XYZ pt1 = new XYZ(5, 5, 0);
    XYZ pt2 = new XYZ(5, 10, 0);
    Line line = Line.CreateBound(pt1, pt2);
    Plane plane = document.Application.Create.NewPlane(pt1.CrossProduct(pt2), pt2);
    SketchPlane skplane = SketchPlane.Create (document, plane);
    ModelCurve modelcurve1 = document.FamilyCreate.NewModelCurve(line, skplane);

    pt1 = new XYZ(10, 5, 0);
    pt2 = new XYZ(10, 10, 0);
    line = Line.CreateBound(pt1, pt2);
    plane = document.Application.Create.NewPlane(pt1.CrossProduct(pt2), pt2);
    skplane = SketchPlane.Create (document, plane);
    ModelCurve modelcurve2 = document.FamilyCreate.NewModelCurve(line, skplane);

    // now create a linear dimension between them
    ReferenceArray ra = new ReferenceArray();
    ra.Append(modelcurve1.GeometryCurve.Reference);
    ra.Append(modelcurve2.GeometryCurve.Reference);

    pt1 = new XYZ(5, 10, 0);
    pt2 = new XYZ(10, 10, 0);
    line = Line.CreateBound(pt1, pt2);

    Dimension dim = document.FamilyCreate.NewLinearDimension(document.ActiveView, line, ra);

    // create a label for the dimension called "width"
    FamilyParameter param = document.FamilyManager.AddParameter("width",
        BuiltInParameterGroup.PG_CONSTRAINTS,
        ParameterType.Length, false);

    dim.FamilyLabel = param;

    return dim;
}

図 52: ラベル付された長さ寸法