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)| 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. |
(_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
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;[Parametric State Notifications](Parametric%20State Notifications.md) | vsoStateAddCurrent
vsoStateGetPos | vsoStateGetRot | vsoStateGetParamChng | vsoStateGetObjChng | vsoStateGetLayrChng | vsoStateGetExitGroup | vsoStateGetNameChng
Availability: from Vectorworks 2009
This is drop-in function.