Adding Normal Line Dimension Process

The process is an interactive one which allows adding a new 3D normal line dimension to a model by specifying two points. The normal line dimension is the same thing as the line dimension, however there’s a difference in the way it’s created. During the whole construction process, this dimension stays perpendicular to the surface on which the first point is specified.

Common type of the process (TypeScript):

export type AddNormalLineDimensionProcess = {
    name: "AddNormalLineDimension"
    options: C3DViewDimensionOptions
    events: {
        onNew?: () => string
        onCreate?: (uuid: string) => C3DUserData
        onValue?: (value: number) => string
    }
}

Options

The process uses the same options as the corresponding PMI object does. They are described here.

Callbacks

Available events.

  1. onNew() is emitted before creating a new dimension. Returns a string which is used as a dimension label text instead of the default value.

  2. onCreate(uuid) is emitted after creating a new dimension. It receives a UUID of a new object and allows to set custom dimension properties by returning them as an object.

  3. onValue(value) is emitted when calculating an overall length, receives a calculated value and returns a string of a dimension label text.

Note

The default label text in the absence of options.text, events.New and events.onValue is just a digit of a calculated circle radius between the first point and a circle center.

Running

To run the process, you should call the command RunProcessCommand with the AddNormalLineDimension name of a process.

Example of running the process (TypeScript):

view.runCommand({
    name: "RunProcessCommand",
    process: {
        name: "AddNormalLineDimension",
        options: {},
        events: {
            onValue: (value: number) => `${value.toFixed(2)} m`
        }
    }
})

Updating

Updating allows to change any options which are set when process is run.

Common type of the updating command (TypeScript):

type UpdateProcess = {
    name: "UpdateProcessCommand"
    options: {
        name: "AddNormalLineDimension"
        text?: string
        underlineText?: boolean
        font?: {
            family?: string,
            size?: number,
        }
        colors?: {
            text?: C3DViewRGB
            textBkg?: C3DViewRGB
            lines?: C3DViewRGB
        }
    }
}

Example of the command to update comment font size (TypeScript):

view.runCommand({
    name: "UpdateProcessCommand",
    options: {
        name: "AddNormalLineDimension",
        font: {
            size: 20
        }
    }
})