PointCloudInstanceGetPoints Method |
Extracts a collection of points based on a filter.
Namespace: Autodesk.Revit.DBAssembly: RevitAPI (in RevitAPI.dll) Version: 25.0.0.0 (25.0.0.0)
Syntaxpublic PointCollection GetPoints(
PointCloudFilter filter,
double averageDistance,
int numPoints
)
Public Function GetPoints (
filter As PointCloudFilter,
averageDistance As Double,
numPoints As Integer
) As PointCollection
public:
PointCollection^ GetPoints(
PointCloudFilter^ filter,
double averageDistance,
int numPoints
)
member GetPoints :
filter : PointCloudFilter *
averageDistance : float *
numPoints : int -> PointCollection
Parameters
- filter PointCloudFilter
-
The filter to control which points are extracted. The filter should be passed in the coordinates
of the Revit model.
- averageDistance Double
-
Desired average distance between "adjacent" cloud points (Revit units of length).
The smaller the averageDistance the larger number of points will be returned up to the numPoints limit.
Specifying this parameter makes actual number of points returned for a given filter independent of the
density of coverage produced by the scanner.
- numPoints Int32
-
The maximum number of points requested.
Return Value
PointCollection
A collection object containing points that pass the filter, but no more than the maximum number requested.
Exceptions
Remarks
If there are more points in the cloud passing the filter than the number requested in this function,
the results may not be consistent if the same call is made again.
Exampleprivate void GetPointCloudDataByIteration(PointCloudInstance pcInstance, PointCloudFilter pointCloudFilter)
{
double averageDistance = 0.001;
int numberOfPoints= 10000;
PointCollection points = pcInstance.GetPoints(pointCloudFilter, averageDistance, numberOfPoints);
foreach (CloudPoint point in points)
{
System.Drawing.Color color = System.Drawing.ColorTranslator.FromWin32(point.Color);
String pointDescription = String.Format("({0}, {1}, {2}, {3}", point.X, point.Y, point.Z, color.ToString());
}
}
public unsafe void GetPointCloudDataByPointer(PointCloudInstance pcInstance, PointCloudFilter pointCloudFilter)
{
double averageDistance = 0.001;
int numOfPoints = 10000;
PointCollection points = pcInstance.GetPoints(pointCloudFilter, averageDistance, numOfPoints);
CloudPoint* pointBuffer = (CloudPoint*)points.GetPointBufferPointer().ToPointer();
int totalCount = points.Count;
for (int numberOfPoints = 0; numberOfPoints < totalCount; numberOfPoints++)
{
CloudPoint point = *(pointBuffer + numberOfPoints);
System.Drawing.Color color = System.Drawing.ColorTranslator.FromWin32(point.Color);
String pointDescription = String.Format("({0}, {1}, {2}, {3}", point.X, point.Y, point.Z, color.ToString());
}
}
See Also