VS:vsoStateGetParamChng

From Vectorworks Developer
Revision as of 07:28, 8 May 2016 by CBM-c- (talk | contribs) (fix)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

.VectorScript|VectorScript ..VS:Function Reference|Function Reference ..VS:Function_Reference_Appendix|Appendix

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

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

(Orso, 2016.05.08): vsoStateGetParamChng returns false under 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

Example

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


Version

Availability: from Vectorworks 2009

This is drop-in function.

See Also

VS:Parametric State Notifications | VS:vsoStateAddCurrent

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

[[VS:Parametric State Notifications]] | [[VS:vsoStateAddCurrent]] [[VS:vsoStateGetPos]] | [[VS:vsoStateGetRot]] | [[VS:vsoStateGetParamChng]] | [[VS:vsoStateGetObjChng]] | [[VS:vsoStateGetLayrChng]] | [[VS:vsoStateGetExitGroup]] | [[VS:vsoStateGetNameChng]]