CSOSplitSelfIntersection

MLModule
genre CSOModificator
authors Frank Heckel, Hans Meine
package FMEwork/ReleaseMeVis
dll MLCSOMiscModules
definition MLCSOMiscModules.def

Purpose

This modules splits self-intersecting CSOs into none self-intersecting parts.

Usage

Attach a CSOList to the module’s input and enter a list of CSO ids into the according field for selecting the subset of CSOs that should be split. If the module does not work directly on the input CSOList (have a look at the according field), the module copies the input CSOList to its output and performs on the copied output list.

Details

For closed contours, all polygons defining connected regions are extracted and it is determined whether the region defines an inside or an outside region with respect to the original CSO. CSOs defining a region whose points are located inside the original CSO the CSO’s subtype SUB_TYPE_CLOSED_INSIDE. Outside regions are set to SUB_TYPE_CLOSED_OUTSIDE.

For open CSOs, the contour is split into all segments between two self intersections and only loops are found as closed contours. The subtype for loops is set to SUB_TYPE_CLOSED_UNKNOWN, as it is not well defined whether this part is inside or outside. The subtype for open contour parts is set to SUB_TYPE_OPEN.

The module only processes CSOs that are in plane. Otherwise, the contour is simply copied if the Splitting Mode is set to ALL.

Windows

Default Panel

../../../Modules/ML/MLCSOMiscModules/mhelp/Images/Screenshots/CSOSplitSelfIntersection._default.png

Input Fields

inCSOList

name: inCSOList, type: MLBase

The CSOList that contains the CSOs that should be split.

Output Fields

outCSOList

name: outCSOList, type: MLBase

If the module should not work directly on the input CSOList, a copy is made and the splitting is performed on this copy. So, the output is either a pointer to the input CSOList or pointer to an internal copy.

Parameter Fields

Visible Fields

Mode (updateMode)

name: updateMode, type: Enum, default: AutoClear

The update mode of the module, concerning the CSOList input and its notifications. Note that the notifications can be adjusted as well.

Values:

Title Name
Off Off
Auto Update AutoUpdate
Auto Clear AutoClear

Auto apply

name: autoApply, type: Bool, default: FALSE

If checked, each field change of the module’s GUI lead to an update, no matter if the update mode is Off.

Update

name: apply, type: Trigger

If pressed, the module performs the adjusted tasks.

Style

name: pathPointStyle, type: Enum, default: LineStyleSolid, deprecated name: pathPointLineStyle

Determines the style of the path points (the contour itself).

Values:

Title Name
None LineStyleNone
Solid LineStyleSolid
Dashed LineStyleDashed
Dotted LineStyleDotted
Short Dashed LineStyleShortDashed

Width

name: pathPointWidth, type: Float, default: 1, deprecated name: pathPointLineWidth

The line width of the path points.

Color (pathPointColor)

name: pathPointColor, type: Color, default: 1 1 0

The color of the path points.

Path Point Alpha

name: pathPointAlpha, type: Float, default: 1, minimum: 0, maximum: 1

The opacity of the path points.

Mode (seedPointStyle)

name: seedPointStyle, type: Enum, default: MarkerModeRect, deprecated name: markerMode

Determines the visualization of the seed points.

Values:

Title Name
None MarkerModeNone
Rect MarkerModeRect
Circle MarkerModeCircle
Fixed Cirlce MarkerModeFixedCirlce

Size

name: seedPointSize, type: Float, default: 2, deprecated name: markerSize

The size of the seed points in device coordinates (pixels).

Color (seedPointColor)

name: seedPointColor, type: Color, default: 0 1 0, deprecated name: markerColor

The color of the seed points.

Seed Point Alpha

name: seedPointAlpha, type: Float, default: 1, minimum: 0, maximum: 1, deprecated name: markerAlpha

The opacity of the seed points.

Write Mode

name: voxelWriteMode, type: Enum, default: VoxelWriteModeModule

The voxel write mode for generated CSOs.

Values:

Title Name
Id VoxelWriteModeId
Const VoxelWriteModeConst
Const Plus Id VoxelWriteModeConstPlusId
Module VoxelWriteModeModule

Value

name: voxelWriteValue, type: Float, default: 1024

The voxel write value. This is the Const part.

CSO Ids

name: csoIdList, type: String

A list of CSO ids that specifies the CSOs to be split. If the list is empty, all CSOs are split.

Work directly on input CSOList

name: workDirectlyOnInputList, type: Bool, default: TRUE

If checked, the module works directly on its input list and does not copy it. Note that the original CSOList is changed globally in the network. If this option is unchecked, the module copies the input list to its output field, and performs the requested operation on the output list.

Enable Undo/Redo

name: useUndoRedo, type: Bool, default: TRUE

Change settings of modified CSOs

name: changeSettingsForModifiedCSOs, type: Bool, default: FALSE

If true the settings of the split CSOs are modified.

Finishing

name: listenToFinishingNotifications, type: Bool, default: TRUE

If checked, and the update mode is set to Auto Update, the module will perform its action on the given list of CSOs if a finishing notification is sent through the network.

Selection

name: listenToSelectionNotifications, type: Bool, default: TRUE

If checked, and the update mode is set to Auto Update, the module will perform its action on the given list of CSOs if a selection notification is sent through the network.

Splitting Mode

name: splittingMode, type: Enum, default: All

Defines which contours should be provided at outCSOList.

Values:

Title Name Description
Closed Inside Manifold Closed Inside Manifold

Like “closed inside” but additionally discards “outside” holes that are completely surrounded by the result.

(Such holes may lead to resulting CSOs that touch themselves in single points, which makes them non-manifold and still counts as self-intersection according to CSOInfo.)

Closed Inside Closed Inside Only output contours that are closed and which define regions that are considered “inside” the original contour.
Closed Outside Closed Outside Only output contours that are closed and which define regions that are considered “outside” the original contour. (Holes within closed input contours.)
Closed Unknown Closed Unknown Only output contours that are closed and which define regions that are unknown (i.e., closed regions of self-intersecting open contours).
Open Open Only output contours that are open (rests after removing self-intersecting loops).
All All Output all contours (union of output in other modes), even including contours that are not in plane.

Hidden Fields

isProcessing

name: isProcessing, type: Bool, persistent: no

done

name: done, type: Trigger, persistent: no

emptyGroupBeforeGeneration

name: emptyGroupBeforeGeneration, type: Bool, default: FALSE

addCSOToGroupMode

name: addCSOToGroupMode, type: Enum, default: AddToGroupByLabel

Values:

Title Name
None AddToGroupNone
By Label AddToGroupByLabel
By Id AddToGroupById

addCSOToGroupWithLabel

name: addCSOToGroupWithLabel, type: String

addCSOToGroupWithId

name: addCSOToGroupWithId, type: Integer, default: -1

id

name: id, type: Integer, default: 0