diff --git a/kratos.gid/apps/Common/xml/GenericSubModelPart.spd b/kratos.gid/apps/Common/xml/GenericSubModelPart.spd
index 2ecb44b66..03e7a0173 100644
--- a/kratos.gid/apps/Common/xml/GenericSubModelPart.spd
+++ b/kratos.gid/apps/Common/xml/GenericSubModelPart.spd
@@ -1,6 +1,7 @@
-
-
+
+
+
\ No newline at end of file
diff --git a/kratos.gid/apps/MdpaGenerator/app.json b/kratos.gid/apps/MdpaGenerator/app.json
index a233d1e7b..59e8d25bb 100644
--- a/kratos.gid/apps/MdpaGenerator/app.json
+++ b/kratos.gid/apps/MdpaGenerator/app.json
@@ -22,9 +22,6 @@
"unique_names": {
"parts": "GenericSubmodelPart"
},
- "write": {
- "write_mdpa_mode": "geometries"
- },
"main_launch_file": null,
"description": "MDPA generator \n-Useful tool to generate modelparts"
}
diff --git a/kratos.gid/apps/MdpaGenerator/start.tcl b/kratos.gid/apps/MdpaGenerator/start.tcl
index c2b7cf0f2..c90080f61 100644
--- a/kratos.gid/apps/MdpaGenerator/start.tcl
+++ b/kratos.gid/apps/MdpaGenerator/start.tcl
@@ -25,4 +25,8 @@ proc ::MdpaGenerator::Init { app } {
proc ::MdpaGenerator::BreakRunCalculation {} {
return true
-}
\ No newline at end of file
+}
+
+proc write::GetWriteMode {} {
+ return [::MdpaGenerator::xml::GetCurrentWriteMode]
+}
diff --git a/kratos.gid/apps/MdpaGenerator/write/write.tcl b/kratos.gid/apps/MdpaGenerator/write/write.tcl
index 2fec55d26..42b47001d 100644
--- a/kratos.gid/apps/MdpaGenerator/write/write.tcl
+++ b/kratos.gid/apps/MdpaGenerator/write/write.tcl
@@ -21,7 +21,6 @@ proc ::MdpaGenerator::write::Init { } {
set writeAttributes [dict create ]
SetAttribute parts_un [::MdpaGenerator::GetUniqueName parts]
- SetAttribute write_mdpa_mode [::MdpaGenerator::GetWriteProperty write_mdpa_mode]
}
# MDPA write event
@@ -43,6 +42,7 @@ proc ::MdpaGenerator::write::writeModelPartEvent { } {
write::writeNodalCoordinates
set write_mode [::MdpaGenerator::xml::GetCurrentWriteMode]
+ SetAttribute write_mdpa_mode $write_mode
if {$write_mode eq "geometries"} {
MdpaGenerator::write::writeGeometries
} else {
@@ -75,14 +75,23 @@ proc ::MdpaGenerator::write::writeGeometries { } {
# Get the list of groups in the spd
set lista [::MdpaGenerator::xml::GetListOfSubModelParts]
+ set list_with_geometries [list]
+ foreach group $lista {
+ if {[write::isBooleanTrue [write::getValueByNode [$group selectNodes ".//value\[@n='WriteGeometries']"] ]]} {
+ lappend list_with_geometries $group
+ }
+ }
+
# Write the geometries
- set ret [::write::writeGeometryConnectivities $lista]
+ set ret [::write::writeGeometryConnectivities $list_with_geometries]
# Write the submodelparts
- set what "nodal"
- append what "&Geometries"
-
+ # We do not use the filtered list so we can preserve the order. Inefficient but ordered. Mental peace
foreach group $lista {
+ set what "nodal"
+ if {[write::isBooleanTrue [write::getValueByNode [$group selectNodes ".//value\[@n='WriteGeometries']"] ]]} {
+ set what "nodal&Geometries"
+ }
::write::writeGroupSubModelPart "GENERIC" [$group @n] $what
}
diff --git a/kratos.gid/apps/MdpaGenerator/xml/Main.spd b/kratos.gid/apps/MdpaGenerator/xml/Main.spd
index 0727f192f..a22d246d7 100644
--- a/kratos.gid/apps/MdpaGenerator/xml/Main.spd
+++ b/kratos.gid/apps/MdpaGenerator/xml/Main.spd
@@ -2,8 +2,8 @@
-
-
+
+
0} {set write_geometries_enabled 1}
-
+
+ set write_mode [::write::GetWriteMode]
+ if {$write_mode eq "geometries"} {
+ set write_geometries_enabled 1
+ }
if {$write_geometries_enabled} {
- if {$kw eq "Geometries"} {return "normal"} {return "hidden"}
+ if {$kw eq "Geometries" || $kw eq "geometries"} {set response "normal"} {set response "hidden"}
} else {
- if {$kw eq "Entitites"} {return "normal"} {return "hidden"}
+ if {$kw eq "Entitites" || $kw eq "entitites"} {set response "normal"} {set response "hidden"}
}
+ # W "$kw -> $write_mode -> $response"
+ return $response
}
diff --git a/kratos.gid/scripts/Writing/Writing.tcl b/kratos.gid/scripts/Writing/Writing.tcl
index 938376ca4..9f7444330 100644
--- a/kratos.gid/scripts/Writing/Writing.tcl
+++ b/kratos.gid/scripts/Writing/Writing.tcl
@@ -396,6 +396,10 @@ proc write::isquadratic {} {
return [GiD_Set Model(QuadraticType)]
}
+proc write::GetWriteMode {} {
+ return [::write::GetAttribute write_mdpa_mode]
+}
+
proc write::GetNodesFromElementFace {elem_id face_id} {
set inf [GiD_Mesh get element $elem_id]
set elem_type [lindex $inf 1]
diff --git a/kratos.gid/scripts/spdAuxiliar.tcl b/kratos.gid/scripts/spdAuxiliar.tcl
index 98359a44b..68ef26975 100644
--- a/kratos.gid/scripts/spdAuxiliar.tcl
+++ b/kratos.gid/scripts/spdAuxiliar.tcl
@@ -413,8 +413,11 @@ proc spdAux::GetUsedElements {{alt_un ""}} {
set xp1 "[spdAux::getRoute $un]/group"
foreach gNode [[customlib::GetBaseRoot] selectNodes $xp1] {
- set name [write::getValueByNode [$gNode selectNodes ".//value\[@n='Element']"] ]
- if {$name ni $lista} {lappend lista $name}
+ set element_node [$gNode selectNodes ".//value\[@n='Element'\]"]
+ if {$element_node ne ""} {
+ set name [write::getValueByNode $element_node]
+ if {$name ni $lista} {lappend lista $name}
+ }
}
}
return $lista