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