Difference between revisions of "IronPython Script Snippets"
Jump to navigation
Jump to search
| Line 1: | Line 1: | ||
| − | = Script Manager Snippet 1: | + | = Script Manager Snippet 1: create and Connect Objects = |
Assuming that you're running a simulation with defined compound(s) and property package(s), this will create and connect a cooler and its connections: | Assuming that you're running a simulation with defined compound(s) and property package(s), this will create and connect a cooler and its connections: | ||
| Line 29: | Line 29: | ||
Flowsheet.ConnectObjects(cooler.GraphicObject, heat_out.GraphicObject, 0, 0) | Flowsheet.ConnectObjects(cooler.GraphicObject, heat_out.GraphicObject, 0, 0) | ||
| + | </source> | ||
| + | |||
| + | = Script Manager Snippet 2: getting a reference to a Compound in the simulation = | ||
| + | |||
| + | <source lang=python> | ||
| + | |||
| + | mycompound = Flowsheet.SelectedCompounds['Methane'] | ||
| + | |||
| + | mycompound2 = Flowsheet.GetSimulationObject['MSTR-001'].Phases[0].Compounds['Methane'] | ||
| + | |||
| + | </source> | ||
| + | |||
| + | '''mycompound''' and '''mycompound2''' are referencing the same object in memory. | ||
| + | |||
| + | = Script Manager Snippet 3: executing a script from another tab/section = | ||
| + | |||
| + | <source lang=python> | ||
| + | |||
| + | import clr | ||
| + | import System | ||
| + | from System import * | ||
| + | |||
| + | clr.AddReference('System.Core') | ||
| + | clr.ImportExtensions(System.Linq) | ||
| + | |||
| + | # get the script text from "Functions" using LINQ | ||
| + | source = Flowsheet.Scripts.Values.Where(lambda x: x.Title == 'Functions').FirstOrDefault().ScriptText.replace('\r', '') | ||
| + | |||
| + | # execute the script | ||
| + | exec(source) | ||
| + | |||
| + | </source> | ||
| + | |||
| + | = Script Manager Snippet 4: setting the properties of a Material Stream = | ||
| + | |||
| + | <source lang=python> | ||
| + | |||
| + | ms1 = Flowsheet.GetFlowsheetSimulationObject('MSTR-001') | ||
| + | |||
| + | overall = ms1.GetPhase('Overall') | ||
| + | overall.Properties.temperature = 200 # set temperature to 200 K | ||
| + | overall.Properties.pressure = 101325 # set pressure to 101325 Pa | ||
| + | overall.Properties.massflow = 14 # set mass flow to 14 kg/s | ||
</source> | </source> | ||
Revision as of 17:29, 2 July 2019
Contents
Script Manager Snippet 1: create and Connect Objects
Assuming that you're running a simulation with defined compound(s) and property package(s), this will create and connect a cooler and its connections:
import clr
clr.AddReference('DWSIM.Interfaces')
from DWSIM import Interfaces
# http://dwsim.inforside.com.br/api_help57/html/M_DWSIM_Interfaces_IFlowsheet_AddObject.htm
# http://dwsim.inforside.com.br/api_help57/html/T_DWSIM_Interfaces_Enums_GraphicObjects_ObjectType.htm
cooler = Flowsheet.AddObject(Interfaces.Enums.GraphicObjects.ObjectType.Cooler, 100, 100, 'COOLER-001')
heat_out = Flowsheet.AddObject(Interfaces.Enums.GraphicObjects.ObjectType.EnergyStream, 130, 150, 'HEAT_OUT')
inlet = Flowsheet.AddObject(Interfaces.Enums.GraphicObjects.ObjectType.MaterialStream, 50, 100, 'INLET')
outlet = Flowsheet.AddObject(Interfaces.Enums.GraphicObjects.ObjectType.MaterialStream, 150, 100, 'OUTLET')
cooler.GraphicObject.CreateConnectors(1, 1)
inlet.GraphicObject.CreateConnectors(1, 1)
outlet.GraphicObject.CreateConnectors(1, 1)
heat_out.GraphicObject.CreateConnectors(1, 1)
# http://dwsim.inforside.com.br/api_help57/html/M_DWSIM_Interfaces_IFlowsheet_ConnectObjects.htm
Flowsheet.ConnectObjects(inlet.GraphicObject, cooler.GraphicObject, 0, 0)
Flowsheet.ConnectObjects(cooler.GraphicObject, outlet.GraphicObject, 0, 0)
Flowsheet.ConnectObjects(cooler.GraphicObject, heat_out.GraphicObject, 0, 0)
Script Manager Snippet 2: getting a reference to a Compound in the simulation
mycompound = Flowsheet.SelectedCompounds['Methane'] mycompound2 = Flowsheet.GetSimulationObject['MSTR-001'].Phases[0].Compounds['Methane']
mycompound and mycompound2 are referencing the same object in memory.
Script Manager Snippet 3: executing a script from another tab/section
import clr
import System
from System import *
clr.AddReference('System.Core')
clr.ImportExtensions(System.Linq)
# get the script text from "Functions" using LINQ
source = Flowsheet.Scripts.Values.Where(lambda x: x.Title == 'Functions').FirstOrDefault().ScriptText.replace('\r', '')
# execute the script
exec(source)
Script Manager Snippet 4: setting the properties of a Material Stream
ms1 = Flowsheet.GetFlowsheetSimulationObject('MSTR-001')
overall = ms1.GetPhase('Overall')
overall.Properties.temperature = 200 # set temperature to 200 K
overall.Properties.pressure = 101325 # set pressure to 101325 Pa
overall.Properties.massflow = 14 # set mass flow to 14 kg/s