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: ラベル付された長さ寸法