1+
2+
3+ proc DEM::xml::ShowMaterialRelationWindow { } {
4+
5+
6+ set materials [list ]
7+ foreach mat_node [DEM::write::GetMaterialsNodeList] {
8+ set mat_name [write::getValueByNode $mat_node ]
9+ if {$mat_name ni $materials } {
10+ lappend materials $mat_name
11+ }
12+ }
13+
14+ set relations [dict create]
15+
16+ foreach relation [DEM::write::GetMaterialRelationsNodeList] {
17+
18+ set mat_a [write::getValueByNode [$relation selectNodes " ./value\[ @n = 'MATERIAL_A'\] " ]]
19+ set mat_b [write::getValueByNode [$relation selectNodes " ./value\[ @n = 'MATERIAL_B'\] " ]]
20+ dict lappend relations $mat_a $mat_b
21+ if {$mat_a ne $mat_b } { dict lappend relations $mat_b $mat_a }
22+ }
23+
24+ if {[llength $materials ]>0} {
25+ # window name
26+ set w .gid.windowmatrel
27+
28+ if {[winfo exist $w ]} {destroy $w }
29+ toplevel $w
30+ wm withdraw $w
31+ set x [expr [winfo rootx .gid]+[winfo width .gid]/2-[winfo width $w ]/2]
32+ set y [expr [winfo rooty .gid]+[winfo height .gid]/2-[winfo height $w ]/2]
33+ wm geom $w +$x +$y
34+ wm transient $w .gid
35+ InitWindow $w [_ " Kratos Multiphysics - DEM - Material Relations" ] Kratos " " " " 1
36+
37+
38+ set table $w .tree
39+ ttk::treeview $table -columns $materials -displaycolumns $materials
40+ foreach header $materials {
41+ $table heading $header -text $header -anchor center
42+ }
43+ pack $table
44+
45+ set length [llength $materials ]
46+ for {set i 0} { $i < $length } { incr i } {
47+ set row [list ]
48+ set ref_mat_name [lindex $materials $i ]
49+ for {set j 0} { $j < $length } { incr j } {
50+ set check_mat_name [lindex $materials $j ]
51+ set exists 0
52+ if {[dict exists $relations $ref_mat_name ]} {
53+ if {$check_mat_name in [dict get $relations $ref_mat_name ]} {set exists 1}
54+ }
55+ if {$exists } {lappend row OK} {lappend row MISSING}
56+ }
57+ $table insert " " end -id $ref_mat_name -text $ref_mat_name -values $row
58+ }
59+ }
60+ }
0 commit comments