Used hardware:
Stockpile volume calculations (with Civil 3D)
FF / FL (grid inspection and localize values)
Deviation analysis with BCF tags
Mesh segmentation by deviation, extract areas
BIM Progress monitoring
C2C analysis for monitoring
Missing technical holes
Measure geometry
BIM Clash or Profile analysis
Scripts (volumes for plastering, values from points, tiles calculation)
In today's video, we're delving into the cutting-edge world of construction monitoring using laser scanning technology. Today, I will not only explain the concept of laser scanning for construction monitoring but also demonstrate the ten most popular tools and techniques in Leica Cyclone 3DR software suitable for analysis applications. From ensuring precision and safety to saving time and resources, laser scanning has become an indispensable tool in the construction industry. So, let's dive into the world of laser scanning and see how it's reshaping the future of construction monitoring.
In every construction project, from skyscrapers to family homes, it all begins with the ground working. In the Leica Cyclone 3DR, we have a variety of tools for volume calculations and ground analysis. One of the easiest is Stockpile - this command enables you to compute stockpile volumes by drawing the contour of each one on a cloud.
Select point cloud and create a Stockpile project
Define the project's parameters
Draw Stockpile contour - the easiest way to do it when your point cloud colored by slope analysis
Select a Method to compute the reference mesh ("former ground") and click the Enter button
The software will use a point cloud within the contour to create one surface and points of the contour will be used to create another reference surface. Next, the software will show volumes between two surfaces.
The generated surface of the Stockpile could be used also for:
Contour extraction
2D section comparison against the design model
3D surface comparison with deviation heatmaps
Export generated model to other CAD software for additional types of analyses
Following the groundwork phase, the subsequent critical stage involves concrete works. Here, the assessment of floor levelness and flatness is paramount to guarantee the quality and performance of the constructed elements.
Surface Levelness - This command allows you to analyze the levelness of a mesh or a point cloud.
Select the point cloud and go to Surface Levelness.
Choose the Z direction to check the levelness, uncheck the Offset value, and then click on Preview.
Adjust the color scheme. The points of the cloud are colored according to their Z coordinate.
You can now see the lowest points in dark blue and the highest points in red.
This type of analysis also could be recreated with comparison tools, selecting the 3D model of the floor and adjacent point cloud, and comparing them with each other. If you colorize the mesh model, then you could apply on it also the Localize Values and the Gridded Inspection tools. Additional information significantly enhances the efficiency of reports.
Surface Flatness - This command allows you to inspect the flatness of a mesh or a point cloud. An inspection value will be associated with each point of the cloud or vertex according to the local flatness.
The calculated inspection value is local. It means that the flatness calculated for each point only considers its neighbors within a maximum distance of half the ruler dimension.
The algorithm moves a cylinder aligned to the Z axis all along a regular grid covering the object's surface. The ruler radius corresponds to the cylinder radius.
For each cylinder position, a best local plane is computed.
Then it compares points inside the cylinder to the local plane so as to evaluate the flatness of the associated area according to a given tolerance.
Surface Slope - This command allows you to inspect the slope of a mesh or a point cloud. An inspection value will be associated with each point of the cloud or vertex according to the angle between the local normal of the surface and the horizontal.
Select point cloud then go to Slope Analysis
Set 4% as the maximum slope tolerance. In this way, you will check that the entire floor does not contain a zone with a slope higher than 4%
Set the local normal smoothing cursor in the middle to compute the slope on zones that are approximately 40 cm wide
Click Preview to preview the results
In Leica Cyclone 3DR there are different options for comparison As-build against Design. The most beneficial is to Compare the Cloud versus BIM model, in that case, we can get an ID of each element that is out of tolerance. To do this:
Select point cloud and design model together and run the Cloud vs BIM (or Mesh) command
Choose the BIM model as a reference object
Adjust tolerance and color scheme
When you're using the BIM model for the analysis then you can create BCF notes via the Inspection Notes BCF tool. This command creates or edits notes either to make a report or export a BCF. A note documents an identified defect (as-built vs model), it may contain: inspection labels, 3D views, photos from the camera device, description, and other information. The notes can be exported to a BCF file which later can be imported into BIM collaboration platforms. All information will also be used to generate a PDF or CSV report via the Report Editor.
If you would like to clearly see all areas that have out-of-deviation values then split the mesh based on the inspection steps.
Run the Inspection Steps tool.
Your model will be divided according to color validation thresholds.
You can then ungroup the selected mesh into many individual segments.
For each segment, you can extract the Surface Area in m2, the Lowest or Highest point, and the external contour as a polyline.
This polyline can be loaded to the TotalSation if you would like to highlight this area for your workers or automated construction machines.
BIM Progress Monitoring is a workflow that helps you to identify which parts of a construction site have been built or not by analyzing the coverage of a scan on a BIM model.
Select at least one cloud and a BIM object then launch the command. The full workflow is divided into three different steps:
Analyze - automatic classification of parts according to their coverage (Not installed, Incomplete, Installed).
Check - verify and edit the analysis.
Export - generate the report data and a BCF file.
At the Analyze stage:
Define the Coverage thresholds. Depending on the coverage ratio, the parts will be classified: as No data, Not installed, Incomplete, or Installed
Set the Tolerance distance to define the maximum distance to link points and parts.
Set the Resolution of the inspection.
Click Compute.
Check stage - This step allows to verify and edit the analysis manually. The coverage thresholds are displayed as a reminder.
In the dialog, a Result table lists all BIM parts and some associated data such as the coverage score, current status, and global offset (median value of the offset distribution).
Each time a new element is clicked in the table, the 3D views are updated. Press SPACE to change the current element status.
The table header columns can be sorted.
Optionally, filter the visible parts according to their status.
Export stage - This step allows exporting the analysis as a report and BCF files.
Set the view, then click Update Report View to define the main view of the report.
You have the possibility to export only one summary issue or the full list of issues per status (see BCF (Bim Collaboration Format)).
Exit the command to validate the workflow.
You can now check your report from the Report Editor to generate a PDF file.
Another version of progress monitoring analysis could be a Cloud vs Cloud comparison. This method is very useful, especially when you don't have any design model and just need to track changes on-site. Select two point clouds captured at different periods of time and run the Compare Cloud vs Cloud tool. You can define by yourself which exactly cloud will be colored by inspection. Adjust the color scheme.
If you select previous surveying for colorization then you'll see elements that were removed from your site
If you select the new surveying for colorization then new elements will be highlighted.
To detect missing technical holes in your point cloud you should have a design model or 2D drawing.
Select both elements and Compare Cloud vs Mesh
Choose the point cloud as an object for colorization, because point clouds have points in areas where according to design should be technical holes
Adjust colors to highlight only points related to the missing holes
Segment point cloud by Inspection Steps
Split point cloud by distance
Apply the Best Plane for all cloud segments
If you would like to extract all parameters for each plane, use the Measure Geometry tool
Measure Geometry - This command allows you to create labels from geometries and compare values to nominal data. You can enter this command with any number of geometries (Line, Circle, Rectangle, Plane, Cylinder, Sphere, Cone) but labels will only be created from the first type of geometry selected.
The parameters you see will depend on what geometries you entered the command with. You can choose to Add nominal information about the selected object(s).
Reference allows you to fill in nominal information by selecting an existing geometry in the 3D scene. Otherwise, you can fill them out manually.
Every parameter can either be displayed or not (see table below for compatibility).
You can add a Comment.
You can also include the current CS name.
This command detects clashes between surface objects and clouds and generates report data. Select meshes, surface features, CAD objects, or BIM objects and clouds. Then launch the command.
Set clash detection parameters:
Points closer than the Tolerance value are considered as clashes.
Cluster distance allows merging nearby clashes into one according to a given distance.
Check Analyze per sub-element to make individual analyses of sub-elements that are included in a compound or a BIM object.
Otherwise, you can ungroup / group CAD elements or edit the BIM objects prior to the command.
After a computation, click Reset to modify these settings: note previous results will be lost since potential clashes will be different.
When the computation is done, the user interface guides you to classify potential clashes to create a report. Results will be displayed in a table:
Optionally, click Export BCF. A file with one issue per cluster will be created.
Custom scripting in Leica Cyclone 3DR is a powerful tool that enhances data processing. It improves efficiency, offers customization, supports batch processing, facilitates integration, automates complex tasks, enables repeatability, and allows for advanced analysis. With scripting, you could create unique tools to solve your task. Below you can find some examples.
Tags by template - suitable when you need to extract deviation values according to some rule, template, or standard. You can create a set of vertexes in the position where you need to extract these tags. In the video, I'll use sections and planes to generate vertexes in intersections. To run the script select all vertexes and point cloud after inspection, then run the script. As a result, you'll get tags for particular points
Volume from inspection values - Calculate volumes based on mesh surfaces and inspection values. A useful tool when you need to calculate the volume of plastering or floor leveling, usually it can be done through the Cut & Fill volume tool which requires generating surface from the existing cloud and design surface. But via a script workflow:
- You can just place a plane to the desired location, for example in place of plaster level
- Compare Cloud vs Plane
- Select the inspected surface and run the script
It will automatically split the wall by inspection steps, extract the surface area for each segment, and multiply it by the dedication value, then all values will be summarized and you'll get the Total volume required for the wall plastering.
//select templatePoints and their corresponding cloud (which has been inspected), then run the script
var selectedPoints=SPoint.FromSel();
var inspectedCloud=SCloud.FromSel()[0];
//main loop
for(var i=0;i<selectedPoints.length;i++){
//find the closest point corresponding to the template point
var res=inspectedCloud.ClosestPoint(selectedPoints[i],null,0);
if(!res.ErrorCode){
var correspondingPoint=res.Point;
//separate the cloud so as to be able to find the deviation thanks to a SCloudIterator
//We hope there is only one point within a radius of 0.00001
var res2=inspectedCloud.SeparateFeature(SSphere.New(correspondingPoint,0.00001),0,SCloud.FILL_IN_ONLY);
if(!res2.ErrorCode){
if (res2.InCloud.GetNumber()==1){
var subCloud=res2.InCloud.GetIterator();
if (subCloud.IsValid()){
var deviation=subCloud.GetDeviation();
//create the label
var oLabel=SLabel.New(4,1)
oLabel.SetName(selectedPoints[i].GetName()+"-"+inspectedCloud.GetName())
oLabel.SetColType([SLabel.Deviation])
oLabel.SetLineType([SLabel.XX,SLabel.YY,SLabel.ZZ,SLabel.Distance])
oLabel.SetCell(0,0,correspondingPoint.GetX())
oLabel.SetCell(1,0,correspondingPoint.GetY())
oLabel.SetCell(2,0,correspondingPoint.GetZ())
oLabel.SetCell(3,0,deviation)
oLabel.AttachToPoint(correspondingPoint)
oLabel.AddToDoc();
}else{
print("Error 4: invalid subCloud");
}
}else{
print("Error 3: more than 1 point");
}
}else{
print("Error 2: impossible to separate with sphere");
}
}else{
print("Error 1:cannot find closest point");
}
}
//Select an inspected mesh with defined ranges
var iPoly = SPoly.FromSel()[0];
//Explode by range
var result = iPoly.ExplodeWithInspectionSteps();
//Find the cursors (thresholds)
var colorGradient = iPoly.GetColorGradient();
var cursorTbl = new Array();
for (var i = result.PolyTbl.length - 1; i >= 0; i--) {
cursorTbl.push(colorGradient.Gradient.GetCursorInfo(i).Position);
if (cursorTbl.length > 1) {
if (cursorTbl[cursorTbl.length - 1] == cursorTbl[cursorTbl.length - 2]) {
throw new Error("Duplicated cursors: please redefine the color gradient");
}
}
}
// Function to summarize volumes
function summarizeVolumes(polyTbl) {
var totalVolume = 0;
for (var j = 0; j < polyTbl.length - 1; j++) {
var surface = polyTbl[j].GetSurface().Surface;
var volume = surface * 0.5 * (cursorTbl[j + 1] + cursorTbl[j]);
totalVolume += volume;
}
return totalVolume;
}
// Print Surface and volume for each segment
if (!result.ErrorCode) {
for (var j = 0; j < result.PolyTbl.length; j++) {
// Add segments to the document
result.PolyTbl[j].SetName("" + j);
result.PolyTbl[j].AddToDoc();
if (j == result.PolyTbl.length - 1) {
print("Undefined: S=" + result.PolyTbl[j].GetSurface().Surface);
} else {
// Volume estimation for each segment
var surface = result.PolyTbl[j].GetSurface().Surface;
var volume = surface * 0.5 * (cursorTbl[j + 1] + cursorTbl[j]);
print("Range" + j + " from " + cursorTbl[j] + " to " + cursorTbl[j + 1] + ": S=" + surface + "; Vol=" + volume);
}
}
// Summarize volumes
var totalVolume = summarizeVolumes(result.PolyTbl);
print("Total Volume: " + totalVolume);
}
These were my top 10 favorite tools and approaches in Leica Cyclone 3DR for construction analysis applications. Instead of ranking them by popularity, I've categorized them based on the main construction stages – from groundwork to concrete works, installation analysis, and so on.
Of course, there are many more tools you can utilize in your daily work. If you're eager to learn more, head over to the Leica E-learning platform, where you'll find three comprehensive online courses covering various tools within Leica Cyclone 3DR. These courses include detailed workflow descriptions, assessment tests, and data samples. Upon completion, you'll even receive an official certificate from Leica Geosystems.
So, don't miss out on the opportunity to enhance your skills and boost your expertise. Explore these courses, and let's continue to build a brighter future in construction analysis with Leica Cyclone 3DR. Thanks for watching!