Skip to main content

optiSLang 3D Postprocessing Script API 2025 R1

Data and Filters

Last update: 16.07.2025

Deactivate designs, remove individual data objects from analysis and data object filters.

-- load example data:
sdbfile = sos.currentScriptPath() .. "/../lsdyna/metal_forming__eroded_elements/sos_demo.sdb"
local settings = sos.LoadDataBaseSettings(sdbfile);
sos.loadDataBase(sos.database(), settings);
-- "deactivate" an individual field object sample :
-- The object is still in the database, but is excluded from future statistical analysis.
key = sos.DataObjectKey("8", "pstrain");
object = sos.database():data():find(key);
if (object:isValid()) then
object:setInactive();
end
-- remove an individual field object sample from database
key = sos.DataObjectKey("2", "thickness");
if (sos.database():data():exists(key)) then
sos.database():data():erase(key);
end
-- when changing any data we often are interested to deactivate all incomplete designs to get a consistent database
sos.database():deactivateIncompleteDesigns();
-- How to use filters ???
-- #######################
print("\nData contained in database:")
print(sos.database():data())
local all_element_objects = sos.database():data():filterType(sos.ELEMENT_DATA) -- all data of type ELEMENT
pstrain_filter = all_element_objects:filterQuantity("pstrain") -- all element data with quantity ident "pstrain"
print("Active pstrain objects:");
print(pstrain_filter:samples():active())
print("Inactive pstrain objects:");
print(pstrain_filter:samples():inactive())
print("Pstrain results:");
print(pstrain_filter:nonSamples())
-- There exist multiple filters, like: nonSamples, samples, active, inactive, inputs, responses, fromFile, notFromFile, filterDesign etc.
-- You ca combine filters using operators + (union), * (intersection), / (difference)
pstrain_similar_filter = all_element_objects:filterQuantity(".*(pstrain).*", true) -- use a regular expression
-- print the quantity names (pstrain and random[pstrain])
quantities = pstrain_similar_filter:quantities()
print("Quantities in regex filter: ", quantities:size())
for i=0,quantities:size()-1 do
print("\t#"..i, quantities[i]);
end
-- get all samples of quantity random[pstrain] using filter operations:
rand_samples_filter = (pstrain_similar_filter / pstrain_filter) : samples();
print("Samples of random[pstrain]");
print(rand_samples_filter)
-- now deactivate ALL designs in that filter:
id_q = rand_samples_filter:quantityIdents()
id_d = rand_samples_filter:designIdents()
for i=0,id_q:size()-1 do
sos.database():data():find( sos.DataObjectKey(id_d[i], id_q[i]) ):setInactive(sos.database())
end
print("Samples of random[pstrain] after deactivation:");
print(rand_samples_filter)

Connect with Ansys