User Commands
FloWorks
Description
Deprecated.
This command has been deprecated. Instead, you should use flowObject.product = newProduct;
Example
ChangeFlowProduct( current, 2 );
Description
Changes the speed of a task executer travelling an network edge.
Example
ChangeTeEdgeSpeed( taskExecuter, 0, 1 )
Description
Deprecated.
This command has been deprecated. Instead, you should use flowObject.input.ports.close();
Note that some objects, such as the Flow Mixer, may use commands like this to manage their flow, it is safer to use flowObject.output.close(); than flowObject.output.ports.close();.
Example
treenode tank = node( "FlowTank1", model() );
CloseAllFlowIp( tank );
Description
Deprecated.
This command has been deprecated. Instead, you should use flowObject.output.ports.close();
Note that some objects, such as the Flow Mixer, may use commands like this to manage their flow, it is safer to use flowObject.output.close(); than flowObject.output.ports.close();.
Example
treenode tank = node( "FlowTank1", model() );
CloseAllFlowOp( tank );
Description
Deprecated.
This command has been deprecated. Instead, you should use flowObject.input.close();
Note that some objects, such as the Flow Mixer, may use commands like this to manage their flow, it is safer to use flowObject.output.close(); than flowObject.output.ports.close();.
Example
treenode tank = node( "FlowTank1", model() );
CloseFlowInput( tank );
Description
Deprecated.
This command has been deprecated. Instead, you should use flowObject.input.ports[portNumber].open();
Note that some objects, such as the Flow Mixer, may use commands like this to manage their flow, it is safer to use flowObject.output.close(); than flowObject.output.ports.close();.
Example
treenode tank = node( "FlowTank1", model() );
// Close the last input port
CloseFlowIp( tank, nrip( tank ) );
Description
Deprecated.
This command has been deprecated. Instead, you should use flowObject.output.ports[portNumber].close();
Note that some objects, such as the Flow Mixer, may use commands like this to manage their flow, it is safer to use flowObject.output.close(); than flowObject.output.ports.close();.
Example
treenode tank = node( "FlowTank1", model() );
// Close the last output port
CloseFlowOp( tank, nrop( tank ) );
Description
Deprecated.
This command has been deprecated. Instead, you should use flowObject.output.close();
Note that some objects, such as the Flow Mixer, may use commands like this to manage their flow, it is safer to use flowObject.output.close(); than flowObject.output.ports.close();.
Example
treenode tank = node( "FlowTank1", model() );
CloseFlowOutput( tank );
ConnectFlowObjectToOtherObject
(treenode FromFlowObject, treenode ToFlowObject[, int isActiveConnection])
Description
Deprecated.
This command has been deprecated. Instead, you should use flowObject.connect( model.find( "OtherFlowObject" ) );
Example
treenode from = node( "FlowSource1", model() );
treenode to = node( "FlowTank2", model() );
// Create a connection from the source to the tank
// and automatically start the flow, if possible.
ConnectFlowObjectToOtherObject( from, to );
Description
Deprecated.
This command has been deprecated. Instead, you should use flowObject.flowControl = model.find("FlowControl1");
Example
ConnectToFlowControl( flowcontrol, current );
Description
Disconnects a flow object from its control and all incoming and outgoing objects.
Example
DisconnectFlowObject( current );
Description
Deprecated.
This command has been deprecated. Instead, you should use flowObject.flowControl = nullvar;
Example
DisconnectFromFlowControl( current );
Description
Ends an impact factor event, which temporarily decreased or increased the maximum flow of a FloWorks object.
The impact factor event applies a multiplicative factor to the maximum flow rate, which can completely stop or reduce the flow because of a failure mode; but by setting a factor larger than 1 this function can also be used to model increased productivity due to e.g. seasonal fluctuations.
This function is called automatically from the "up" trigger of a FloWorks Impact Event, you usually only need to call it manually if you explicitly used the StartImpactFactorEvent command.
Note that multiple events may be active on a flow object at any time, and multiple flow objects may be impacted by an event, so you may need to call this command more than once.
Example
EndImpactFactorEvent( FlowObject, MTBF_Object );
Description
For developer use only.
Example
FlowDrawGanttChart( view )
GetEarliestStartForSequence
(treenode/string workabilityObject, int/string sequence[, double offset])
Description
Calculates the earliest possible start time for a sequence on a workability object,
at or after the current time plus the given offset (defaults to 0).
The workability object can be specified by name, or by a direct reference.
The sequence can be specified by name or by index (starting at 1).
If the workability could not be determined, the function returns -1.
Example
GetEarliestStartForSequence("Weather", 1)
Description
Deprecated.
This command has been deprecated. Instead, you should use double content = flowTank.content;
Example
// Assume vessel is a FloWorks Vessel and get its tank's content.
int vesselTankContent = GetFlowContent( first( vessel ) );
Description
Deprecated.
This command has been deprecated. Instead, you should use Object flowControl = flowObject.flowControl;
Example
GetFlowControl( FluidObject );
Description
Deprecated.
This command has been deprecated. Instead, you should use double inputAmount = flowObject.input.amount;
Example
GetFlowInput( first( vessel ) )
Description
Deprecated.
This command has been deprecated. Instead, you should use double inputRate = flowObject.input.rate;
Example
// Assume vessel is a FloWorks Vessel and get its loading rate.
GetFlowInputRate( first( vessel ) )
Description
Deprecated.
This command has been deprecated. Instead, you should use double inputTriggerAmount = flowObject.input.triggerAmount;
Example
// Delay the input trigger by 100 m3
double newTriggerAmount = GetFlowInputTriggerAmount( involved ) + 100;
SetFlowInputTriggerAmount( involved, newTriggerAmount );
Description
Deprecated.
This command has been deprecated. Instead, you should use double maxContent = flowTank.maxContent;
Example
// Assume vessel is a FloWorks Vessel and get its capacity.
int vesselTankContent = GetFlowMaxContent( first( vessel ) );
Description
Returns the current FloWorks license.
Example
int hasLicense = GetFloworksLicense() == LICENSE_TYPE_STANDARD );
Description
Deprecated.
This command has been deprecated. Instead, you should use double outputAmount = flowObject.output.amount;
Example
GetFlowOutput( first( vessel ) )
Description
Deprecated.
This command has been deprecated. Instead, you should use double outputRate = flowObject.output.rate;
Example
// Assume vessel is a FloWorks Vessel and get its unloading rate.
GetFlowOutputRate( first( vessel ) )
Description
Deprecated.
This command has been deprecated. Instead, you should use double outputTriggerAmount = flowObject.output.triggerAmount;
Example
// Delay the output trigger by 100 m3
double newTriggerAmount = GetFlowOutputTriggerAmount( involved ) + 100;
SetFlowOutputTriggerAmount( involved, newTriggerAmount );
Description
Finds the numeric ID of a product by name.
Example
int productId = GetFlowProductId( "Raw Material XYZ" );
if(productId > 0) {
flowObject.product = productId;
}
Description
Deprecated.
This command has been deprecated. Instead, you should use flowObject.product;
Example
int storedProduct = GetFlowProductType( flowTank );
Description
Deprecated.
This command has been deprecated. Instead, you should use flowObject.stats.utilization;
Example
GetFlowUtilization( current );
Description
Calculates the level value of the level triggered event.
If atTime is passed, the level at the given time is returned, otherwise the current value is calculated.
The event object can be specified by name, or by a direct reference.
If the level cannot be determined, for example because you are reading past the end of a non-repeating table, the flag value -999999 is returned.
Example
GetLevel( "MyLevelTriggeredEvent" )
Description
Returns the precision for displaying floating point numbers, according to FlexSim settings.
It is mostly useful for converting numbers to text using the numtostring command.
Example
int precision = GetNumberPrecision();
pt( "Pi is approximately ");
pt( numtostring( pi(), precision, precision ) );
pr();
Description
Loads a recipe for a specific product from the Products Table into the Flow Mixer recipe table. The mixer's Product Source trigger is used to decide which ports will be pulled from.
Example
if( LoadFlowMixerRecipe( mixer, "Mixed Product" ) )
StartMixerRecipe( mixer );
Description
Deprecated.
This command has been deprecated. Instead, you should use flowObject.output.ports.open();
Note that some objects, such as the Flow Mixer, may use commands like this to manage their flow, it is safer to use flowObject.output.close(); than flowObject.output.ports.close();.
Example
treenode tank = node( "FlowTank1", model() );
OpenAllFlowIp( tank );
Description
Deprecated.
This command has been deprecated. Instead, you should use flowObject.output.ports.open();
Note that some objects, such as the Flow Mixer, may use commands like this to manage their flow, it is safer to use flowObject.output.close(); than flowObject.output.ports.close();.
Example
treenode tank = node( "FlowTank1", model() );
OpenAllFlowIp( tank );
Description
Deprecated.
This command has been deprecated. Instead, you should use flowObject.input.open();
Note that some objects, such as the Flow Mixer, may use commands like this to manage their flow, it is safer to use flowObject.output.close(); than flowObject.output.ports.close();.
Example
treenode tank = node( "FlowTank1", model() );
OpenFlowInput( tank );
Description
Deprecated.
This command has been deprecated. Instead, you should use flowObject.input.ports[portNumber].open();
Note that some objects, such as the Flow Mixer, may use commands like this to manage their flow, it is safer to use flowObject.output.close(); than flowObject.output.ports.close();.
Example
treenode tank = node( "FlowTank1", model() );
// Open the last input port
OpenFlowIp( tank, nrip( tank ) );
Description
Deprecated.
This command has been deprecated. Instead, you should use flowObject.output.ports[portNumber].open();
Note that some objects, such as the Flow Mixer, may use commands like this to manage their flow, it is safer to use flowObject.output.close(); than flowObject.output.ports.close();.
Example
treenode tank = node( "FlowTank1", model() );
// Open the last output port
OpenFlowOp( tank, nrip( tank ) );
Description
Deprecated.
This command has been deprecated. Instead, you should use flowObject.output.open();
Note that some objects, such as the Flow Mixer, may use commands like this to manage their flow, it is safer to use flowObject.output.close(); than flowObject.output.ports.close();.
Example
treenode tank = node( "FlowTank1", model() );
OpenFlowOutput( tank );
Description
Deprecated.
This command has been deprecated. Instead, you should use flowObject.input.ports[portNumber].select();
Note that some objects, such as the Flow Mixer, may use commands like this to manage their flow, it is safer to use flowObject.output.close(); than flowObject.output.ports.close();.
Example
treenode tank = node( "FlowTank1", model() );
// Open the first input port, close all other ports
SelectFlowIp( tank, 1 );
// Open only the first and last input port, close all other input ports
// (Only when the object has more than one input port)
SelectFlowIp( tank, 1, nrip( tank ) );
Description
Deprecated.
This command has been deprecated. Instead, you should use flowObject.output.ports[portNumber].select();
Note that some objects, such as the Flow Mixer, may use commands like this to manage their flow, it is safer to use flowObject.output.close(); than flowObject.output.ports.close();.
Example
treenode tank = node( "FlowTank1", model() );
// Open the first output port, close all other ports
SelectFlowOp( tank, 1 );
// Open only the first and last output port, close all other output ports
// (Only when the object has more than one output port)
SelectFlowOp( tank, 1, nrop( tank ) );
Description
Sets the arrow style variable for the given FloWorks object, and removes or adds the arrows, depending on the given style.
The following arrow styles are supported:
1: IN connections, using preferably a single arrow from OUT to IN.
2: IN connections, using preferably a short arrow only connected to IN.
3: OUT connections, using preferably a single arrow from OUT to IN.
4: Both (1) and (3)
5: Both (2) and (3)
6: OUT connections, using preferably a short arrow only connected to OUT.
7: Both (1) and (6)
8: Both (2) and (6)
Example
SetArrowStyle( current, 4 );
Description
Deprecated.
This command has been deprecated. Instead, you should use flowTank.content = newContent;
Example
// Set the content of the vessel tank to 1000 m3.
SetFlowContent( first( vessel ), 1000 )
Description
Sets the speed of the flow conveyor.
Setting the speed to 0 will stop the conveyor and close inputs and outputs.
Setting the speed to a negative value will reverse the direction of the conveyor.
Example
SetFlowConveyorSpeed( conveyor, 1 );
Description
Deprecated.
This command has been deprecated. Instead, you should use flowObject.input.triggerAmount = newTriggerAmount;
Example
SetFlowInputTriggerAmount( current, 50 );
Description
Deprecated.
This command has been deprecated. Instead, you should use flowTank.maxContent = newMaximumContent;
Example
// Set the maximum content of the vessel tank to 1000 m3.
SetFlowMaxContent( first( vessel ), 1000 );
Description
Set the number of trigger levels of a content-holding flow object such as a tank.
After setting the number of trigger levels, you can use the SetFlowTriggerLevel command to set the level at which these triggers fire.
Only use this to initialise the object.
Do not use during runtime.
Example
SetFlowNrOfTriggerLevels( current, 1 );
Description
Deprecated.
This command has been deprecated. Instead, you should use flowObject.output.triggerAmount = newTriggerAmount;
Example
SetFlowOutputTriggerAmount( current, 50 );
Description
Deprecated.
This command has been deprecated. Instead, you should use flowObject.input.maxRate = value; or flowObject.output.maxRate = value;
Example
SetNewFlowRates( flowSource, newOutRate );
SetNewFlowRates( flowSink, newOutRate );
SetNewFlowRates( flowPump, newInOutRate );
SetNewFlowRates( tank, newInRate, newOutRate );
SetNewFlowRates( tank, -1, newOutRate );
Description
Set the trigger level of a content-holding flow object such as a tank.
Only use this to initialise the object.
Do not use during runtime.
Example
// Change the first trigger level to fire at 60% of maximum content.
SetFlowTriggerLevel( current, 1, 60 );
SetInflowRatioValue
( treenode flowObject, int portnumber, double newValue, bool recalculateSystem )
Description
Deprecated.
This command has been deprecated. Instead, you should use flowObject.input.ports[portNumber].ratio = newValue;
Example
// Set the ratio of input port 2 to 33%, and recalculate.
SetInflowRatioValue( current, 2, 33, true );
Description
Deprecated.
This command has been deprecated. Instead, you should use flowObject.input.maxRate = value; or flowObject.output.maxRate = value;
Example
SetNewFlowRates( flowObject, newInrate, newOutrate );
SetOutflowRatioValue
( treenode flowObject, int portnumber, double newValue, bool recalculateSystem )
Description
Deprecated.
This command has been deprecated. Instead, you should use flowObject.output.ports[portNumber].ratio = newValue;
Example
// Set the ratio of output port 2 to 33%, and recalculate.
SetOutflowRatioValue( current, 2, 33, 1 );
Description
Deprecated.
This command has been deprecated, do not use it.
Example
ShowFluidCTD( c )
Description
Start the next recipe on a flow mixer in non-repeating mode.
Returns 0 if the recipe has started successfully.
Example
StartFlowMixerRecipe( mixer );
StartImpactFactorEvent
( treenode flowObject, treenode eventObject, double impactFactor, int isInputInfluenced, int isOutputInfluenced )
Description
Start an impact factor event, which temporarily decreases or increases the maximum flow of a FloWorks object.
The impact factor event applies a multiplicative factor to the maximum flow rate, which can completely stop or reduce the flow because of a failure mode; but by setting a factor larger than 1 this function can also be used to model increased productivity due to e.g. seasonal fluctuations.
This function is called automatically from the "down" trigger of a FloWorks Impact Event, you do not usually need to call it manually.
Example
StartImpactFactorEvent( FlowObject, MTBF_Object, ImpactFactor, InputInfluenced, OutputInfluenced );
Description
Stops loading of the specified transporter at the given loading point.
This function can only be called if loading duration is set manually (loading time function returned 0).
Otherwise loading will stop automatically after the given time.
Example
StopLoading( loadingPoint, first( loadingPoint ) )