Skip to content

Latest commit

 

History

History
99 lines (79 loc) · 3.27 KB

File metadata and controls

99 lines (79 loc) · 3.27 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 [[VS: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

([[User:CBM-c-|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

  • Object Events