Skip to content

Latest commit

 

History

History
98 lines (79 loc) · 3.31 KB

File metadata and controls

98 lines (79 loc) · 3.31 KB

vsoStateGetParamChng

Description

Used to determine if the object parameter has changed. See [[VS:Parametric State Notifications#vsoStateGetParamChng]]

This function should be called during the parametric reset event: 3: {kParametricRecalculate}

FUNCTION vsoStateGetParamChng(
				hObj          : HANDLE;
				VAR outWidgID : LONGINT;
				VAR outPrmIdx : INTEGER;
				VAR outOldVal : STRING): BOOLEAN;
def vs.vsoStateGetParamChng(hObj):
    return (BOOLEAN, outWidgID, outPrmIdx, outOldVal)

Parameters

Name Type Description
hObj HANDLE Handle to the parametric object. Obtained by call to GetCustomObjectInfo
outWidgID LONGINT Output parameter. Widget ID of the changed parameter.
outPrmIdx INTEGER Output parameter. Parameter index.
outOldVal STRING Output parameter. String representation of the old value.

Remarks

(_c_, 2016.05.08): vsoStateGetParamChng returns false after following modifications:

  • on PIO rec set up
  • on move, rot, path reshape
  • layer scale, height, thickness

Thus there won't be a state parameter change on move, rot or on copy.

  • outWidgID, outPrmIdx return 0 on move, rot, new obj, alt-drag copy!

Other observations:

  • outWidgID: ** returns -1 on editing on drawing a control point ** returns outPrmIdx on any edit in the OIP (including ctrl pt fields) ** returns 0 on edit through a worksheet <--- DON'T USE outWidgID!!!
  • outPrmIdx: ** returns outPrmIdx after moving a ctrl pt ** returns outPrmIdx after edit in the OIP
  • outOldVal: ** editing dimension or control point parameters: returns a string with the value in mm ** edit after moving a ctrl pt on drawing: returns a string with the values pair in mm ** edit in the OIP: returns a singular value in mm

Examples

VectorScript

BEGIN
  result := GetCustomObjectInfo(objectName, objectHand, recordHand, wallHand);
  vsoGetEventInfo(theEvent, message );

  CASE theEvent OF
    5: {kObjOnInitXProperties}
    BEGIN
      {enable eventing for this plug-in}
      SetPrefInt( 590, 1 ); {varParametricEnableStateEventing, kParametricStateEvent_ResetStatesEvent}
      result := SetObjPropVS(18, TRUE); {kObjXPropAcceptStates}
    END;	

    44: {kObjOnAddState}
    BEGIN
      message := vsoStateAddCurrent( objectHand, message );
    END;

    3: {kParametricRecalculate}
    BEGIN
      MoveTo( 5mm, 8mm );
      CreateText( 'State events received after the last kParametricRecalculate:' );

      IF vsoStateGetParamChng( objectHand, widgID, prmIndex, oldValue ) THEN BEGIN
        MoveTo( 0,-30mm );
        CreateText( Concat( 'Object parameter just changed! widgetID=', widgID, ' paramIndex=', prmIndex,' OldValue=', oldValue ) );
      END;
    END;

Python

See Also

[Parametric State Notifications](Parametric%20State Notifications.md) | vsoStateAddCurrent

vsoStateGetPos | vsoStateGetRot | vsoStateGetParamChng | vsoStateGetObjChng | vsoStateGetLayrChng | vsoStateGetExitGroup | vsoStateGetNameChng

Version

Availability: from Vectorworks 2009

This is drop-in function.

Category