Represents a set of one-dimensional point coordinates (defined usually on curve)
Namespace:
Autodesk.Revit.DB.Analysis
Assembly:
RevitAPI
(in RevitAPI.dll) Version: 17.0.0.0 (17.0.484.0)
Since:
2011
Syntax
C# |
---|
|
Visual Basic |
---|
|
Visual C++ |
---|
|
Examples
Copy
C#
Document doc = commandData.Application.ActiveUIDocument.Document;
UIDocument uiDoc = commandData.Application.ActiveUIDocument;
SpatialFieldManager sfm = SpatialFieldManager.GetSpatialFieldManager(doc.ActiveView);
if (sfm == null)
{
sfm = SpatialFieldManager.CreateSpatialFieldManager(doc.ActiveView, 1);
}
ReferenceArray ra = new ReferenceArray();
Reference curveRef = uiDoc.Selection.PickObject(ObjectType.Element, "Select a curve");
ra.Append(curveRef);
foreach (Reference reference in ra)
{
ModelCurve modelCurve = doc.GetElement(reference) as ModelCurve;
Curve curve = modelCurve.GeometryCurve;
if (curve == null)
{
TaskDialog.Show("Error", "Must select a curve");
return Result.Cancelled;
}
else
{
int idx = sfm.AddSpatialFieldPrimitive(curve.Reference);
IList<double> pts = new List<double>();
double u = curve.GetEndParameter(0);
double range = curve.GetEndParameter(1) - u;
for (int ii = 0; ii < 10; ii++)
{
pts.Add(u);
u = u + range / 10;
}
FieldDomainPointsByParameter pnts = new FieldDomainPointsByParameter(pts);
List<double> doubleList = new List<double>();
IList<ValueAtPoint> valList = new List<ValueAtPoint>();
double x = 0;
while (valList.Count < pts.Count)
//for (double x = 0; x < 1; x = x + 0.1)
{
doubleList.Clear();
doubleList.Add(x * 10);
valList.Add(new ValueAtPoint(doubleList));
x = x + 0.1;
}
FieldValues vals = new FieldValues(valList);
AnalysisResultSchema resultSchema = new AnalysisResultSchema("Schema Name", "Description");
int schemaIndex = sfm.RegisterResult(resultSchema);
sfm.UpdateSpatialFieldPrimitive(idx, pnts, vals, schemaIndex);
}
}
Copy
VB.NET
Dim doc As Document = commandData.Application.ActiveUIDocument.Document
Dim uiDoc As UIDocument = commandData.Application.ActiveUIDocument
Dim sfm As SpatialFieldManager = SpatialFieldManager.GetSpatialFieldManager(doc.ActiveView)
If sfm Is Nothing Then
sfm = SpatialFieldManager.CreateSpatialFieldManager(doc.ActiveView, 1)
End If
Dim ra As New ReferenceArray()
Dim curveRef As Reference = uiDoc.Selection.PickObject(ObjectType.Element, "Select a curve")
ra.Append(curveRef)
For Each reference As Reference In ra
Dim modelCurve As ModelCurve = TryCast(doc.GetElement(reference), ModelCurve)
Dim curve As Curve = modelCurve.GeometryCurve
If curve Is Nothing Then
TaskDialog.Show("Error", "Must select a curve")
Return Result.Cancelled
Else
Dim idx As Integer = sfm.AddSpatialFieldPrimitive(curve.Reference)
Dim pts As IList(Of Double) = New List(Of Double)()
Dim u As Double = curve.GetEndParameter(0)
Dim range As Double = curve.GetEndParameter(1) - u
For ii As Integer = 0 To 9
pts.Add(u)
u = u + range / 10
Next
Dim pnts As New FieldDomainPointsByParameter(pts)
Dim doubleList As New List(Of Double)()
Dim valList As IList(Of ValueAtPoint) = New List(Of ValueAtPoint)()
Dim x As Double = 0
While valList.Count < pts.Count
'for (double x = 0; x < 1; x = x + 0.1)
doubleList.Clear()
doubleList.Add(x * 10)
valList.Add(New ValueAtPoint(doubleList))
x = x + 0.1
End While
Dim vals As New FieldValues(valList)
Dim resultSchema As New AnalysisResultSchema("Schema Name", "Description")
Dim schemaIndex As Integer = sfm.RegisterResult(resultSchema)
sfm.UpdateSpatialFieldPrimitive(idx, pnts, vals, schemaIndex)
End If
Next
Inheritance Hierarchy
System
Object
Autodesk.Revit.DB.Analysis FieldDomainPoints
Autodesk.Revit.DB.Analysis FieldDomainPointsByParameter
Autodesk.Revit.DB.Analysis FieldDomainPoints
Autodesk.Revit.DB.Analysis FieldDomainPointsByParameter