Cyclone 3DR Script
from Technodigit, part of Hexagon. Copyright 1997-2021.
SSurveying Namespace Reference

These functions are only available if you have the Surveying (Topo) plugin.
. More...

Enumerations

enum  CrossSectionOrientation { vertical , locallyPerpendicular }
 
enum  InspectionType { TunnelType , RoadType }
 
enum  TunnelComputedObj { TunnelMesh , TunnelCloud , TunnelNoiseCloud }
 
enum  TunnelMeshingStrategy { FastMesh , RegularResampling , RefineMesh , LastMeshingStrategy }
 

Functions

static Array CompareCrossSections (Array< SComp > tblDComp, InspectionType iInspectionType, SVector iDirection2D, String iReferenceName, Array iOptions=Array(), SReportData ipReportData)
 Compare sections by pair. To keep the compatibility between sections, they should be generated using the command Create along axis. This command gives new lines with colorized segments, showing the differences between two profiles. These differences may have positive or negative values. More...
 
static Array ComputeDsm (Array< SCloud > iClouds, Number iStep=0.)
 Compute the Digital Surface Model of one (or several) cloud(s) More...
 
static Array ContourLine (SCloud iCloud, SVector iPlaneNormal, Number iStep, Number iHeightStart, Number iHeightEnd, Number iPlaneThickness, Number iChainingDist, Boolean iCheckNoise, Array renderingOption=Array(), Number iMinClosedLine, Number iMinUnclosedLine)
 Creates contour lines on meshes or clouds. More...
 
static Array ContourLine (SPoly iPoly, SVector iPlaneNormal, Number iStep, Number iHeightStart, Number HeightEnd, Array renderingOption=Array(), Number iMinClosedLine, Number iMinUnclosedLine)
 
static Array CreateCrossSections (SComp FirstComp, SComp SecondComp, SComp NeutralAxis, Array< Number > iDistanceList=Array< Number >(), Array iSections=Array(), Array iOptions=Array())
 Create cross sections on an object (mesh or point cloud) along a polyline. More...
 
static Array ExtractGround (SCloud iCloud, Number Step, Number AngleDeg, SVector Direction, Number GroundExtractionStrategy, Number MeshingStrategy)
 Extract points on the ground (in a grid) and Create a mesh corresponding to the terrain in the point cloud. More...
 
static Array ExtractTunnel (SCloud initialCloud, SMultiline NeutralAxis, Number Step, TunnelComputedObj ComputedObjects, TunnelMeshingStrategy MeshStrategy, Boolean TryToKeepDetails)
 Extract points on exterior layer of the tunnel and create a mesh from those points. More...
 
static Array FilterFeatureLines (SSetMultiline RidgeLines, SSetMultiline RavineLines, Number Length, Number Pertinence)
 Filter feature lines according to their length/pertinence. More...
 
static Array FlattenCylindricCloud (SCloud CloudToFlatten, SMultiline Axis, Number Radius, Boolean WithRelief, SVector Direction=SVector(0, 0, -1), Array iGridOptions=Array())
 Flatten a cloud representing a tubular shape (for example a tunnel) More...
 
static Array FlattenCylindricPoly (SPoly Poly, SMultiline Axis, Number Radius, Boolean WithRelief, SVector Direction=SVector(0, 0, -1), Array iGridOptions=Array())
 Flatten a polyhedron representing a tubular shape (for example a tunnel) More...
 
static Array FloorFlatness (Array< SComp > iCompToTreat, SVector iDirection, Number iRulerLength, Number iTolerance)
 
static String GetType ()
 To return the type of the object. More...
 
static Array SlopeAnalysis (Array< SComp > iCompToTreat, Number iSlopeTolerance, Boolean isPercentage, Number iNeighborsDistance)
 Get the slope on each point of the object. More...
 
static Array SurfaceLevelness (Array< SComp > iCompToTreat, SVector iDirection, SPoint iPlanePosition)
 Compute a surface levelness analysis on meshes or clouds. More...
 
String toString ()
 Get the type of the variable. More...
 
static Array UnrollAlong (Array< SMultiline > iMultiToUnroll, SMultiline iAxis, Number iAltiRef)
 Unroll polylines along an axis. More...
 
static Array WallsAndFloors (Array< SCloud > iCloudsToTreat, Array iOptions)
 Segment walls, floors and ceilings from a point cloud. More...
 

Detailed Description

These functions are only available if you have the Surveying (Topo) plugin.
.

Warning
How to use function from namespace SSurveying ?
Use name of the namespace before to call function.
var result = SSurveying.FlattenCylindricPoly( myPoly, myAxis, radius );
These functions are only available if you have the Surveying (Topo) plugin. .
Definition: SSurveying.h:31

Enumeration Type Documentation

◆ CrossSectionOrientation

Enumerator
vertical 

to compute sections vertically

locallyPerpendicular 

to compute sections locally perpendicular to the NA

◆ InspectionType

Enumerator
TunnelType 

to make a 3D inspection

RoadType 

to make a 2D inspection

◆ TunnelComputedObj

Enumerator
TunnelMesh 
TunnelCloud 
TunnelNoiseCloud 

◆ TunnelMeshingStrategy

Enumerator
FastMesh 

raw mesh: mesh vertices come from the lines extracted from slices

RegularResampling 

regular resampling: vertices of the mesh are regularly located according to input cloud

RefineMesh 

refine the mesh (could be very time consuming)

LastMeshingStrategy 

Not used only to identify the last enum

Function Documentation

◆ CompareCrossSections()

static Array SSurveying::CompareCrossSections ( Array< SComp tblDComp,
InspectionType  iInspectionType,
SVector  iDirection2D,
String  iReferenceName,
Array  iOptions = Array(),
SReportData  ipReportData 
)
static

Compare sections by pair. To keep the compatibility between sections, they should be generated using the command Create along axis. This command gives new lines with colorized segments, showing the differences between two profiles. These differences may have positive or negative values.

Return values
Array.ErrorCodeThe error code.
  • 0 OK, no error
  • 1 An Exception occurred
  • 2 the name of the reference is not correct
  • 3 problem during computation
Array.CompTbla table containing the inspected DSet of multi. The colors are defined. Blue for underbreak and red for overbreak
Parameters
[in]tblDComptable of SComp containing the DSet and the DPoints
[in]iInspectionTypeDefine the inspection type : 2D(RoadType) or 3D(TunnelType)
[in]iDirection2DDefine the direction for 2D inspection. If 3D inspection choose Z direction
[in]iReferenceNameName of the reference DSet
[in]iOptionsdata structure containing filtering options
  • RemovePtsMoreThan: [Boolean] option to activate the option "Remove points distant of more than:"
  • RemovePtsMoreThanValue: [Number] : value corresponding to the option "RemovePtsMoreThan". if false, choose 0
  • RemovePtsLessThan: [Boolean] option to activate the option "Remove points distant of less than:"
  • RemovePtsLessThanValue: [Number] value corresponding to he option "RemovePtsLessThan". if false, choose 0
  • IgnoreRoad: [Boolean] option to activate the option "Ignore the road:".If inspection 2D choose false
  • IgnoreRoadValue: [Number] value corresponding to the option "IgnoreRoad". if false, choose 0
  • CompareWithStep: [Boolean] option to activate the option "Compare with regular step:"
  • CompareWithStepValue: [Number] value corresponding to the option "CompareWithStep". if false, choose 0
  • CompareWithStepUnit: [Number] value corresponding to the unit for the option "CompareWithStep". Choose 0: metric unit in meter or 1: angle unit in radiant. For inspection 2D, only Metric unit is available, for inspection 3D, you can choose metric or angle unit
[in]ipReportDataThe SReportData to fill with compared sections data, view set, ...

◆ ComputeDsm()

static Array SSurveying::ComputeDsm ( Array< SCloud iClouds,
Number  iStep = 0. 
)
static

Compute the Digital Surface Model of one (or several) cloud(s)

Return values
Array.ErrorCodeThe error code.
  • 0 OK, no error
  • 1 An error occurred.
Array.Polya mesh of the computed DSM
Parameters
[in]iCloudsinitial cloud(s) used to create the DSM
[in]iStepthe step used for the grid size (auto if <= 0)

◆ ContourLine() [1/2]

static Array SSurveying::ContourLine ( SCloud  iCloud,
SVector  iPlaneNormal,
Number  iStep,
Number  iHeightStart,
Number  iHeightEnd,
Number  iPlaneThickness,
Number  iChainingDist,
Boolean  iCheckNoise,
Array  renderingOption = Array(),
Number  iMinClosedLine,
Number  iMinUnclosedLine 
)
static

Creates contour lines on meshes or clouds.

Note
the following code is an example of the data structure that you can use to specify the rendering aspect of the contour lines
var renderingOption = {intermNormalLineNb:4, colorNormal:[0, 0, 255], colorMajor:[255, 0, 0], displayText:2, widthNormal:2, widthMajor:4};
Return values
Array.ErrorCodeThe error code:
  • 0 No error occurred.
  • 1 An error occurred.
Array.SetMultithe created set of multiline
Parameters
[in]iCloudSCloud on which to create sections
[in]iPlaneNormalNormal vector of the plane
[in]iStepstep between sections
[in]iHeightStartstarting height - Major lines (if any) will be located at this height
[in]iHeightEndending height or 0 if sections all over
iPlaneThicknessPlane thickness. We consider that all points between two parallel planes belong to the section. Half of the thickness is taken on each side of each plane.
iChainingDistIf the distance between two neighbor points is less than this value a segment is created.
iCheckNoiseShould we activate noise reduction ?
[in]renderingOptiondata structure containing rendering options this data structure should contain the following fields:
  • colorNormal (Array of 3 integer numerical value), // color of normal lines (default color: blue [0, 0, 255])
  • displayText (integer numerical value), // 0=display no text 1=display texts only on major 2=display texts on all (default value = display all texts)
  • widthMajor (integer numerical value) // width of major lines (between 1 and 11) (default value = 2)
[in]iMinClosedLinedelete closed lines whose number of segments is less than this value.
[in]iMinUnclosedLinedelete unclosed lines whose number of segments is less than this value.

◆ ContourLine() [2/2]

static Array SSurveying::ContourLine ( SPoly  iPoly,
SVector  iPlaneNormal,
Number  iStep,
Number  iHeightStart,
Number  HeightEnd,
Array  renderingOption = Array(),
Number  iMinClosedLine,
Number  iMinUnclosedLine 
)
static
Parameters
[in]iPolySPoly on which to create sections
[in]iPlaneNormalNormal vector of the plane
[in]iStepstep between sections
[in]iHeightStartstarting height - Major lines (if any) will be located at this height
[in]HeightEndending height or 0 if sections all over
[in]renderingOptiondata structure containing rendering options this data structure should contain the following fields:
  • colorNormal (QColor), // color of normal lines (default color: blue)
  • displayText (integer numerical value), // 0=display no text 1=display texts only on major 2=display texts on all (default value = display all texts)
  • widthMajor (integer numerical value) // width of major lines (between 1 and 11) (default value = 2)
[in]iMinClosedLinedelete closed lines whose number of segments is less than this value.
[in]iMinUnclosedLinedelete unclosed lines whose number of segments is less than this value.

◆ CreateCrossSections()

static Array SSurveying::CreateCrossSections ( SComp  FirstComp,
SComp  SecondComp,
SComp  NeutralAxis,
Array< Number >  iDistanceList = Array< Number >(),
Array  iSections = Array(),
Array  iOptions = Array() 
)
static

Create cross sections on an object (mesh or point cloud) along a polyline.

Note
the following code is an example of the data structure that you can use to specify the iSections and iOptions
var sections = {step:4, begin:10, end:30};
var DisplayOpt = { sectionOrientation:1, isIn2D : false, prefix : "MP", offset : 0, removePtsValue : 0 };
Return values
Array.ErrorCodeThe error code.
  • 0 OK, no error
  • 1 An Exception occurred
  • 2 problem during the reading of Array iSections
  • 3 problem during computation
Array.CompTbla table containing the computed DComps : the table of points and the computed sections
Array.ReportDataThe SReportData containing all sections data, view set, ...
Parameters
[in]FirstCompfirst comp (could be a mesh or a cloud)
[in]SecondCompsecond comp if any (could be a mesh or a cloud)
[in]NeutralAxisneutral axis of the tunnel to extract
[in]iDistanceListThis is the first option to create sections: Define a list of distances (ex:[10,20,30]. If you prefer the step option, enter [].
[in]iSectionsdata structure containing rendering options if you chose the distance list options choose This is the second option to create sections with a regular step : -- step: [Number] step to create sections -- begin: [Number] define the start of the range of values -- end: [Number] define the end of the range of values
[in]iOptionsdata structure containing rendering options
  • sectionOrientation: [Number] Sections could be created vertically (value = 0) or locally perpendicular (value = 1)
  • isIn2D: [Boolean] Define if the curvilinear distance is computed in 2D(x,y) or in 3D(x,y,z)
  • prefix: [string] prefix for the distance information
  • offset: [Number] value added to the position of the section
  • removePtsValue: [Number] Option to remove points distant of more than the selected value. Choose 0 to deactivate this filter
  • Next options are useful ONLY for clouds
  • activeNoiseReduction: [Boolean] option to activate noise reduction.
  • planeThickness: [Number] all points between two parallel planes distant from this value belong to the section
  • chainingDistance: [Number] if the distance between two neighbor points is less than this value, a segment is created

◆ ExtractGround()

static Array SSurveying::ExtractGround ( SCloud  iCloud,
Number  Step,
Number  AngleDeg,
SVector  Direction,
Number  GroundExtractionStrategy,
Number  MeshingStrategy 
)
static

Extract points on the ground (in a grid) and Create a mesh corresponding to the terrain in the point cloud.

Return values
Array.ErrorCodeThe error code.
  • 0 OK, no error
  • 1 An error occurred.
  • 2 Invalid license.
  • 3 Invalid value for the Step or not enough memory for this value of the step.
Array.PolyGround
Array.GroundCloud
Array.CloudNotOnGround
Array.CloudNoisy
Parameters
[in]iCloudThe Cloud to apply the extraction
[in]Stepstep = dimension of the squares inside the mesh
[in]AngleDegMax slope angle in degree of the terrain that can be seen on the ground. Zero means a terrain perfectly flat, in other words, perfectly perpendicular to the horizontal plane normal vector.
[in]DirectionNormalized normal vector of the horizontal plane. Most of the time, this vector is (0, 0, 1)
[in]GroundExtractionStrategyGround extraction strategy
  • 0: Fast no noise filter.
  • 1: Noise elimination.
  • 2: Noise elimination and try to extend the extraction in the abrupt slopes.
[in]MeshingStrategyMeshing strategy
  • 0: Meshing a grid
  • 1: Meshing with the points of the original cloud.
  • 2: Make a smooth mesh. This option is not compatible with the fast strategy extraction

◆ ExtractTunnel()

static Array SSurveying::ExtractTunnel ( SCloud  initialCloud,
SMultiline  NeutralAxis,
Number  Step,
TunnelComputedObj  ComputedObjects,
TunnelMeshingStrategy  MeshStrategy,
Boolean  TryToKeepDetails 
)
static

Extract points on exterior layer of the tunnel and create a mesh from those points.

Return values
Array.ErrorCodeThe error code.
  • 0 OK, no error
  • 1 problem during mesh extraction
  • 2 problem during cloud split
  • 3 Invalid value for the Step or not enough memory for this value of the step.
  • 4 An Exception occurred
  • 5 An Escape Exception occurred
Array.Poly: a mesh of the tunnel
Array.Cloud: Useful points to make a tunnel mesh
Array.CloudNoisy: Useless points to make a tunnel mesh
Parameters
[in]initialCloudinitial point cloud of the tunnel
[in]NeutralAxisneutral axis of the tunnel to extract
[in]Stepstep to travel along the neutral axis. This value directly implies: output mesh density and number of slices
[out]ComputedObjectsyou can extract 3 different objects : TunnelMesh (see enum TunnelComputedObj) : mesh corresponding to the tunnel shape/ TunnelCloud : sub-cloud of points that are on the tunnel / TunnelNoiseCloud : sub-cloud of points that are INSIDE or OUTSIDE the tunnel and suspected to be noisy
[in]MeshStrategyMeshing strategy (cf TunnelMeshingStrategy)
  • FastMesh: raw mesh: mesh vertices come from the lines extracted from slices
  • RegularResampling: regular resampling: vertices of the mesh are regularly located according to input cloud
  • RefineMesh: refine the mesh (could be very time consuming)
[in]TryToKeepDetailsOptions of tunnel extraction processing (cf TunnelExtractor::Options)
  • bit 0 (false): simple cloud extraction using distance
  • bit 1 (true): cloud extraction using distance and normal continuity (=try to keep details)

◆ FilterFeatureLines()

static Array SSurveying::FilterFeatureLines ( SSetMultiline  RidgeLines,
SSetMultiline  RavineLines,
Number  Length,
Number  Pertinence 
)
static

Filter feature lines according to their length/pertinence.

Return values
Array.ErrorCodeThe error code:
  • 0 No error occurred.
  • 1 An error occurred.
Array.SetMultiTblA table of SSetMultiline containing successively the filtered convex (item 0) and concave lines (item 1).
Parameters
[in]RidgeLinesConvex lines to filter
[in]RavineLinesConvex lines to filter
[in]LengthMinimal length threshold
[in]PertinenceMinimal pertinence threshold (between 0 and 1)

◆ FlattenCylindricCloud()

static Array SSurveying::FlattenCylindricCloud ( SCloud  CloudToFlatten,
SMultiline  Axis,
Number  Radius,
Boolean  WithRelief,
SVector  Direction = SVector(0, 0, -1),
Array  iGridOptions = Array() 
)
static

Flatten a cloud representing a tubular shape (for example a tunnel)

Return values
Array.ErrorCodeThe error code:
  • 0 No error occurred.
  • 1 An error occurred.
Array.CloudThe new Flatted Cloud.
Array.ReportDataThe SReportData containing the unroll data.
Parameters
[in]CloudToFlattencloud to flatten
[in]Axisneutral axis of the cloud
[in]Radiusmean radius of the cloud
[in]WithReliefif true: the relief is preserved; if false: the result is completely flat
[in]Directionon which direction is projected the axis
[in]iGridOptionsthe array of grid options
  • SizeOfRow: [Number] Size of rows
  • SizeOfCol: [Number] Size of columns
  • NumberOfSubRow: [Number] Number of sub rows
  • NumberOfSubCol: [Number] Number of sub columns
  • ShowGraduation: [Boolean] Option to show graduation

◆ FlattenCylindricPoly()

static Array SSurveying::FlattenCylindricPoly ( SPoly  Poly,
SMultiline  Axis,
Number  Radius,
Boolean  WithRelief,
SVector  Direction = SVector(0, 0, -1),
Array  iGridOptions = Array() 
)
static

Flatten a polyhedron representing a tubular shape (for example a tunnel)

Return values
Array.ErrorCodeThe error code:
  • 0 No error occurred.
  • 1 An error occurred.
Array.PolyThe new Flatted Poly.
Array.ReportDataThe SReportData containing the unroll data.
Parameters
[in]Polypoly to flatten
[in]Axisneutral axis of the poly
[in]Radiusmean radius of the poly
[in]WithReliefif true: the relief is preserved; if false: the result is completely flat
[in]Directionon which direction is projected the axis
[in]iGridOptionsthe array of grid options
  • SizeOfRow: [Number] Size of rows
  • SizeOfCol: [Number] Size of columns
  • NumberOfSubRow: [Number] Number of sub rows
  • NumberOfSubCol: [Number] Number of sub columns
  • ShowGraduation: [Boolean] Option to show graduation

◆ FloorFlatness()

static Array SSurveying::FloorFlatness ( Array< SComp iCompToTreat,
SVector  iDirection,
Number  iRulerLength,
Number  iTolerance 
)
static
Return values
Array.PolyTbla table containing the new colored polys representing flatness on input Polyhedrons
Array.CloudTbla table containing the new colored clouds representing flatness on input Clouds
Array.ReportDataThe SReportdata containing the floor flatness data.
Parameters
[in]iCompToTreatthe object to use (only meshes or clouds are processed)
[in]iDirectionNormalized normal vector of the horizontal plane. Most of the this vector is (0, 0, 1)
[in]iRulerLengthThe ruler length
[in]iToleranceThe tolerance

◆ GetType()

static String SSurveying::GetType ( )
static

To return the type of the object.

◆ SlopeAnalysis()

static Array SSurveying::SlopeAnalysis ( Array< SComp iCompToTreat,
Number  iSlopeTolerance,
Boolean  isPercentage,
Number  iNeighborsDistance 
)
static

Get the slope on each point of the object.

Return values
Array.PolyTbla table containing the new colored polys representing slope on input Polyhedrons
Array.CloudTbla table containing the new colored clouds representing slope on input Clouds
Array.ReportDataThe SReportData containing the slope analysis data.
Parameters
[in]iCompToTreatthe object to use (only meshes or clouds are processed)
[in]iSlopeToleranceslope tolerance in degrees
[in]isPercentagetrue if results should be displayed in percentage
[in]iNeighborsDistanceThis distance will be used to approximate the normal ( > 0) (searching the neighbors at this distance).
if iNeighborsDistance <= 0 than iNeighborsDistance = cLoud.GetMeanDistance()*2.0;

◆ SurfaceLevelness()

static Array SSurveying::SurfaceLevelness ( Array< SComp iCompToTreat,
SVector  iDirection,
SPoint  iPlanePosition 
)
static

Compute a surface levelness analysis on meshes or clouds.

Return values
Array.PolyTbla table containing the new colored polys representing levelness on input Polyhedrons
Array.CloudTbla table containing the new colored clouds representing levelness on input Clouds
Array.ReportDataThe SReportData containing surface levelness data.
Parameters
[in]iCompToTreatthe object to use (only meshes or clouds are processed)
[in]iDirectionNormal direction of the surface
[in]iPlanePositionA point on the surface

◆ toString()

String SSurveying::toString ( )

Get the type of the variable.

◆ UnrollAlong()

static Array SSurveying::UnrollAlong ( Array< SMultiline iMultiToUnroll,
SMultiline  iAxis,
Number  iAltiRef 
)
static

Unroll polylines along an axis.

Note
You must have the license LIC3DR_Surveying to execute this function.
Return values
Array.ErrorCodeThe error code:
  • 0 No error occurred.
  • 1 An error occurred.
Array.SetMultia set of unrolled polylines.
Array.ReportDataThe SReportData containing the unroll along axis data.
Parameters
[in]iMultiToUnrollthe polylines to unroll
[in]iAxisthe axis for the unroll
[in]iAltiRefreference altitude to use for the unroll

◆ WallsAndFloors()

static Array SSurveying::WallsAndFloors ( Array< SCloud iCloudsToTreat,
Array  iOptions 
)
static

Segment walls, floors and ceilings from a point cloud.

Note
You must have the license LIC3DR_Surveying to execute this function.
Return values
Array.ErrorCodeThe error code:
  • 0 No error occurred.
  • 1 An error occurred concerning walls segmentation.
  • 2 An error occurred concerning floors segmentation.
  • 3 Another error occurred.
Array.WallsTbla table containing the computed DClouds corresponding to walls.
Array.FloorsTbla table containing the computed DClouds corresponding to floors and ceilings.
Array.OtherTbla table containing the computed DClouds corresponding to other points.
Parameters
[in]iCloudsToTreatthe clouds to use
[in]iOptionsdata structure containing computation options segmentWalls: [Boolean] segment walls or not segmentFloors: [Boolean] segment floors and ceilings or not segmentOther: [Boolean] segment other points or not wallsTolerance: [Number] angular tolerance for walls segmentation (in degree) between 0 and 90 degree floorsTolerance: [Number] angular tolerance for floors segmentation (in degree) between 0 and 90 degree