Divide Wireframe

Dividing wireframes using strings and cutting planes

Divide Wireframe

To access this dialog:

  • Activate the Solids ribbon and select Operations | Plane | Divide by Strings

  • From the Command line, run the divide-wireframe-by-strings command.

note.gif (1017 bytes)

This menu option will be disabled unless both a wireframe and a strings object have been loaded into memory.

The splitting strings must be selected before this command is run.

 

The Divide Wireframe dialog is used to split a wireframe into several parts using the selected strings, the defined projection and optional cutting plane parameters.

note.gif (1017 bytes)

If the wireframe selected is a closed wireframe volume, the resultant split wireframes are closed volumes; surfaces are split into surfaces.

 

Field Details:

Input Wireframe:

Object Name : select a wireframe object using the drop-down (default is the current wireframe object).

note.gif (1017 bytes)

The input wireframe is left unchanged by the operation.

 

: click this button and then select a wireframe object interactively from a 3D window.

Type : select eitherClosed Volume (i.e. the wireframe is a fully closed volume(s)) or DTM ( i.e. if the wireframe is a digital terrain model or open wireframe).

note.gif (1017 bytes)

The type of wireframe object determines how it will be handled by the function. DTMs will simply be split by the strings and optional planes, and the fragments given a block ID based on their position relative to those strings and planes. Closed Volumes will use the cutting strings and planes to add to the split wireframe fragments to ensure they are still closed volumes. In order for the function to complete successfully, the original closed volumes must be closed manifold surfaces (i.e. no open edges, shared edges or intersections). The wireframe-verify command can be used to check this.

 

Key Field : optionally select a data column which identifies separate volumes/surfaces.

note.gif (1017 bytes)

This option should be used if the wireframe object contains multiple wireframe volumes or surfaces.

 


Output Wireframe
:

Current Object : select this option to add the output wireframes to the current wireframe object; this option is only available if the current wireframe object is not the same as the Input Wireframe.

New Object : select this option to output the split wireframes toNew Object Name(default).

New Object Name: accept the default or type in a new object name.

Cutting String Projection:

note.gif (1017 bytes)

The buttons on the left are used to set the Azimuth and Inclination values; alternatively these can also be defined manually by typing in the required values. These parameters define the direction in which the strings are projected. Each pair of projected and original strings define the planes which are then used to split the wireframe object.

 

View Plane: set Azimuth and Inclination perpendicular to the current view plane.

Vertical: set Azimuth and Inclination for vertical projection (i.e. azimuth is 0 degrees and dip is -90 degrees).

North-South: set Azimuth and Inclination for North-South projection (i.e. azimuth is 0 degrees and dip is 0 degrees).

East-West: set Azimuth and Inclination for East-West projection (i.e. azimuth is 90 degrees and dip is 0 degrees).

3D Section: select a section from the dropdown, then click the button to set Azimuth and Inclination perpendicular to the selected section plane. Any sections that have been defined in the 3D window, or the first section of a loaded section definition file, can be used. If no sections have been defined, this option will be unavailable.

Azimuth: the projection azimuth. This field is automatically updated when any of the above five options are selected.

Inclination: the projection Inclination of the plane. This field is automatically updated when any of the above five options are selected.

Additional Cutting Planes:

note.gif (1017 bytes)

In addition to the strings being used for cutting the wireframe object, an optional set of regularly spaced planes may also contribute to the splitting. These may be useful for augmenting the input strings to create a 3D grid, for example, with the strings splitting the wireframes vertically, and horizontal planes splitting the results into different layers.

 

Use additional cutting planes: tick this checkbox to use cutting planes, in addition to the selected strings, for splitting the wireframe.

Distance between planes: accept the default or enter a value for the perpendicular cutting plane spacing (default '0').

note.gif (1017 bytes)

If only a single cutting plane is required, this value is set to 0. A non-zero value will indicate that an infinite number of planes should be used, separated by the specified distance.

 

Plane Orientation:

note.gif (1017 bytes)

The buttons on the left are used to set the Azimuth and Inclination values; alternatively these can also be defined manually by typing in the required values. These parameters define the orientation of  the cutting plane(s).

 

View Plane: set Azimuth and Inclination using the current view plane.

Horizontal: set the plane(s) to horizontal (i.e. azimuth is 0 degrees and dip is 0 degrees).

North-South: set the plane(s) to a vertical North-South orientation (i.e. azimuth is 90 degrees and dip is -90 degrees).

East-West: sets the plane(s) to a vertical East-West orientation (i.e. azimuth is 0 degrees and dip is -90 degrees).

VR Section: select a 3D window section from the dropdown, then click the button to set Azimuth and Inclination using the selected section plane. Any sections that have been defined in the VR window, or the first section of a loaded section definition file, can be used. If no sections have been defined, this option will be unavailable.

Azimuth: the azimuth of the plane. This field is automatically updated when any of the above four options are selected.

Inclination: the Inclination of the plane. This field is automatically updated when any of the above four options are selected.

Plane Reference Point: identifies a single point which will fix the plane in space.

X: displays or sets the X coordinate (northing) of the reference point.

Y: displays or sets the Y coordinate (easting) of the reference point.

Z: displays or sets the Z coordinate (elevation) of the reference point.

 

note.gif (1017 bytes)

This is a complex geometric task and by necessity makes some assumptions of the input data.

  1. The input wireframe must have been verified without any shared edges, intersections or open edges (if a closed volume). If a key field was necessary for a successful verification, then it should also be used as the key field for this function.

  2. Strings should pass completely through the wireframes they are segmenting i.e. extend beyond the wireframe's limits.  A partial cut will not create separate segments.

  3. The Block ID classification assumes that each wireframe segment is clearly on one side or the other of each string. Open strings which do not pass across the entire wireframe extents may lead to ambiguous classification and possibly erroneous results.

  4. Planes should preferably be perpendicular to the cutting strings. Planes which are parallel to the cutting strings will prevent the creation of the additional closing edges on Closed Volume wireframes and may lead to erroneous results.

  5. Strings or cutting planes which exactly align with wireframe triangle surfaces may lead to problems in the internal Boolean functions and erroneous results. If this is suspected, then moving the string or wireframe a tiny amount away from the triangle surface will usually resolve the situation as it provides clearer evidence of distinct surfaces.

 

Cutting string options

Outlines only: special controls are available when splitting a wireframe with a closed perimeter to allow you to inject an attribute value from the cutting string into the resulting wireframe segment. Select this option to enable the following controls:

Inside column: typically used where outline data is generated with the outline-inside-switch-on enabled, you can select an attribute that determines if a boundary string is 'inside' the targeted wireframe. This will allow you to create voids in blocks, or to speed up the processing of outlines with only a small number of nested outlines.

Copy column: select any non-system attribute on the selected cutting string(s) to add the corresponding value to the output wireframe. This could be a location indicator, for example.

Block ID:

note.gif (1017 bytes)

After the wireframe has been split, the different wireframe parts are assigned a numeric Block Identifier (ID) to define which group of parts they belong to. Within each Key Field pass, each part having the same relationship to the cutting strings and optional planes (being in front or behind each in turn) will share the same Block ID, even if they are separate surfaces or volumes.

The order the block IDs are applied is non-specific and is independent of the wireframe and strings geometry

  

Output Field: define the column name in the output wireframe object which will contain the Block ID values (default BLOCKID).

Initial Value: accept the default or enter a value for the first Block ID value (default '1').

Increment: accept the default or enter a value for the Block ID increment (default '1').

 

To see an example of how this dialog is used, please click here.

  openbook.gif (910 bytes)  Related Topics

 

Boolean operations
divide-wireframe-by-strings