Hi,
How can I empty all sets except 1?
I only want to empty self declared sets.
I tried it with a for loop.
However I have some trouble comparing the name of the set with a string.
Kind regards, Wiet
Page 1 / 1
Hello Wiet,
The empty statement has the functionality you want when the identifier to be emptied is a subset of AllIdentifiers, see the example below:
Suppose you want to empty the sets s_A, s_B ;
To do this, you first create a subset of AllIdentifiers as follows:
Subsequently in your model execute:
The empty statement will now empty the sets s_A and s_B.
When you want to empty the sets in a section or model, you can construct the subset of AllIdentifiers as follows:
Here modelName is the name of your model and in code it is a set that contains all identifiers declared below that set. You can use the name of any section in the model tree as an alternative. Allsets is a predeclared subset of AllIdentifiers, and contains the names of all declared sets. The * operator acts as intersection.
With kind regards,
Chris.
The empty statement has the functionality you want when the identifier to be emptied is a subset of AllIdentifiers, see the example below:
Suppose you want to empty the sets s_A, s_B ;
To do this, you first create a subset of AllIdentifiers as follows:
code:
s_setsToBeEmptied {
subsetOf: AllIdentifiers ;
}
Subsequently in your model execute:
code:
s_SetsToBeEmptied := data { s_A, s_B } ;
Empty s_SetsToBeEmptied ;
The empty statement will now empty the sets s_A and s_B.
When you want to empty the sets in a section or model, you can construct the subset of AllIdentifiers as follows:
code:
s_SetsToBeEmptied := modelName * allSets ;
Here modelName is the name of your model and in code it is a set that contains all identifiers declared below that set. You can use the name of any section in the model tree as an alternative. Allsets is a predeclared subset of AllIdentifiers, and contains the names of all declared sets. The * operator acts as intersection.
With kind regards,
Chris.
Thanks, but this doesn't exactly answer my question.
I want to loop over and perform and action on all sets in the set self_declared_sets where...
And then I want to skip a set if the name of that set matches a string, e.g. "self_declared_sets" or "myBuildings".
In your answer the sets on which an action needs to be performed are specified. I need to specify the sets on which no action needs to be performed.
Maybe I need to create a subset first in which some elements of the original set are excluded.
I want to loop over and perform and action on all sets in the set self_declared_sets where...
code:
self_declared_sets:= modelName * allSets ;
And then I want to skip a set if the name of that set matches a string, e.g. "self_declared_sets" or "myBuildings".
In your answer the sets on which an action needs to be performed are specified. I need to specify the sets on which no action needs to be performed.
Maybe I need to create a subset first in which some elements of the original set are excluded.
Thanks for the clarification.
Indeed, you'll need to create an additional subset. Assuming that self_declared_sets is declared as:
You can create a subset thereof as follows
And then fill it along the following lines:
Indeed, you'll need to create an additional subset. Assuming that self_declared_sets is declared as:
code:
set self_declared_sets {
subsetOf: AllIdentifiers;
index: i_sds ;
}
You can create a subset thereof as follows
code:
set operated_upon_sets {
SubsetOf: self_Declared_sets ;
}
And then fill it along the following lines:
code:
operated_upon_sets := { i_sds | not ( formatString("%e", i_sds) = "setNameToBeExcluded" ) }
Reply
Sign up
Already have an account? Login
Please use your business or academic e-mail address to register
Login to the community
No account yet? Create an account
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.