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