1 import "Simantics/DB"
\r
2 import "Simantics/Variables"
\r
3 import "Simantics/Entity"
\r
4 import "Simantics/Model"
\r
5 import "http://www.simantics.org/Modeling-1.2" as MOD
\r
7 type Subscription = Resource
\r
8 type SubscriptionFolder = Resource
\r
10 importJava "org.simantics.modeling.subscription.SCLSubscription" where
\r
11 @JavaName addSubscriptionItems
\r
13 Creates new Subscription with the given Variable under the given SubscriptionFolder.
\r
15 **Input 1:** Subscription folder in which subscription is wanbted to be created as **Resource**
\r
17 **Input 2:** Wanted module attribute from which subscription is to be created as **Variable**
\r
19 **Output:** The newly created subscription as **Resource**
\r
21 Example: Model contains two subscription folders called **Default** and **Pressure subscriptions of the model**. Let's fetch them and add one new subscription
\r
22 of module PO01 attribute PO11_PRESSURE to the latter folder.
\r
24 import "Apros/Model"
\r
25 import "Apros/Module"
\r
26 import "Simantics/Diagram"
\r
27 import "Apros/Variables"
\r
28 import "Simantics/Subscription"
\r
29 my_model = model "Model"
\r
30 my_diagram = diagram my_model ["NewGenericDiagram"]
\r
31 my_component = getComponent my_model "PO01"
\r
32 my_variable_uri = stateVariableUri my_model my_diagram my_component "PO11_PRESSURE"
\r
33 my_variable = getStateVariable my_variable_uri
\r
34 my_subscription_folder_list = subscriptionFoldersOf my_model
\r
35 my_subscription_folder_list
\r
37 > [#430091, #386608]
\r
39 print(labelOf(my_subscription_folder_list!0))
\r
41 > Pressure subscriptions of the model
\r
43 print(labelOf(my_subscription_folder_list!1))
\r
47 addSubscriptionInFolder (my_subscription_folder_list!0) my_variable
\r
52 addSubscriptionInFolder :: SubscriptionFolder -> Variable -> <WriteGraph> Subscription
\r
54 @JavaName newSubscriptionItem
\r
56 Creates new Subscription with advanced options for user to define non-default parameters.
\r
58 **Input 1:** Wanted subscription folder as **Resource**
\r
60 **Input 2:** Wanted variable from which the subscription is done as **Variable**
\r
62 **Input 3:** Sampling interval as **Double**
\r
64 **Input 4:** Deadband as **Double**
\r
66 **Input 5:** Gain as **Double**
\r
68 **Input 6:** Bias as **Double**
\r
70 **Input 7:** Unit as **String**
\r
72 **Input 8:** Label as **String**
\r
74 **Output:** The newly created subscription as **Resource**
\r
76 Example: Let's add a subscription of module **PO01** attribute **PO11_PRESSURE** to the default subscription folder. This point is
\r
77 located on diagram **NewGenericDiagram** in a model called **Model**. We want to have unit to be shown as bars, so lets define gain as **10**.
\r
78 Also lets define sampling interval to be **5 seconds** and label as **Pressure at point PO01**
\r
80 import "Apros/Model"
\r
81 import "Apros/Module"
\r
82 import "Simantics/Diagram"
\r
83 import "Apros/Variables"
\r
84 import "Simantics/Subscription"
\r
85 my_model = model "Model"
\r
86 my_diagram = diagram my_model ["NewGenericDiagram"]
\r
87 my_component = getComponent my_model "PO01"
\r
88 my_variable_uri = stateVariableUri my_model my_diagram my_component "PO11_PRESSURE"
\r
89 my_variable = getStateVariable my_variable_uri
\r
90 my_subscription_folder = defaultSubscriptionFolder my_model
\r
91 newSubscription my_subscription_folder my_variable 5 0 10 0 "Bar" "Pressure at point PO01"
\r
96 newSubscription :: SubscriptionFolder -> Variable -> Double -> Double -> Double -> Double -> String -> String -> <WriteGraph> Subscription
\r
98 @JavaName addSubscriptionFolder
\r
100 Creates new SubscriptionFolder under the given Model. Parameter String defines the name of the folder.
\r
102 **Input 1:** Model in which new subscription folder is wanted to be created as **Model**
\r
104 **Input 2:** Wanted name for the new subscription folder as **String**
\r
106 **Output:** The newly created subscription folder as **Resource**
\r
110 import "Apros/Model"
\r
111 import "Simantics/Subscription"
\r
112 my_model = model "Model"
\r
113 addSubscriptionFolder my_model "Pressure subscriptions of the model"
\r
117 addSubscriptionFolder :: Model -> String -> <WriteGraph> SubscriptionFolder
\r
119 @JavaName defaultSubscriptionFolder
\r
121 Browses the given Model for its default SubscriptionFolder with name "Default" and then returns it. If folder is not found, returns a random SubscriptionFolder
\r
123 **Input 1:** Model which default subscription folder is wanted to be obtained as **Model**
\r
125 **Output:** The default subscription folder as **Resource**
\r
129 import "Apros/Model"
\r
130 import "Simantics/Subscription"
\r
131 my_model = model "Model"
\r
132 defaultSubscriptionFolder my_model
\r
137 defaultSubscriptionFolder :: Model -> <ReadGraph> SubscriptionFolder
\r
140 getSubscriptionLabel :: Subscription -> <ReadGraph> String
\r
143 Creates new Subscription with the given Variable to the Variables models default SubscriptionFolder.
\r
145 **Input 1:** Wanted module attribute from which subscription is to be created as **Variable**
\r
147 **Output:** The newly created subscription as **Resource**
\r
149 Example: create a subscription of module PO01 attribute PO11_PRESSURE to the default subscription folder with default options.
\r
151 import "Apros/Model"
\r
152 import "Apros/Module"
\r
153 import "Simantics/Diagram"
\r
154 import "Apros/Variables"
\r
155 import "Simantics/Subscription"
\r
156 my_model = model "Model"
\r
157 my_diagram = diagram my_model ["NewGenericDiagram"]
\r
158 my_component = getComponent my_model "PO01"
\r
159 my_variable_uri = stateVariableUri my_model my_diagram my_component "PO11_PRESSURE"
\r
160 my_variable = getStateVariable my_variable_uri
\r
161 addSubscription my_variable
\r
166 addSubscription :: Variable -> <WriteGraph,ReadGraph> Subscription
\r
167 addSubscription variable = do
\r
168 model = modelOfVariable variable
\r
169 default = defaultSubscriptionFolder model
\r
170 addSubscriptionInFolder default variable
\r
173 Browses the given Model for its SubscriptionFolders and then returns them in a list.
\r
175 **Input 1:** Model which subscription folders are wanted as **Model**
\r
177 **Output:** List which elements are subscription folder **Resources**
\r
179 Example: Model contains two subscription folders called **Default** and **Pressure subscriptions of the model**. Let's fetch them and print out their names.
\r
181 import "Apros/Model"
\r
182 import "Simantics/Subscription"
\r
183 my_model = model "Model"
\r
184 my_subscription_folder_list = subscriptionFoldersOf my_model
\r
185 my_subscription_folder_list
\r
189 print(labelOf(my_subscription_folder_list!0))
\r
193 print(labelOf(my_subscription_folder_list!1))
\r
195 Pressure subscriptions of the model
\r
198 subscriptionFoldersOf :: Model -> <ReadGraph> [SubscriptionFolder]
\r
199 subscriptionFoldersOf model = recurse (toResource model)
\r
202 cs = resourceChildrenOf r
\r
203 folders = map fromResource $ filter isSubscriptionFolder cs
\r
205 isSubscriptionFolder r = isInstanceOf r MOD.Subscription
\r