Challenge

Project - 2 - Generating the report for hypermesh file

Aim:

Creat an output file which contains detail information about file.

Procedure:

set file [open master.csv w]
puts $file "USERNAME, $env(USERNAME)"
set sys_d_t [clock second]
set Date [clock format $sys_d_t -format %D]
puts $file "Date, [clock format $sys_d_t -format %D]"
set Time [clock format $sys_d_t -format %T]
puts $file "Time, [clock format $sys_d_t -format %H:%M:%S]"
set profile [hm_info templatetype]
puts $file "User Profile,$profile"

puts $file "Quality Criteria, Failed Elements"

*clearmarkall 1; *clearmarkall 2;
*createmark elements 1 "displayed"
*createmark elements 2
if {[hm_marklength elements 1] !=0} {*elementtestwarpage elements 1 5 2 2 0 " 2D Warpage "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*createmark elements 1 "displayed"
set fail_warp [hm_marklength elements 1]
*unmaskall2
}
puts $file "Warpage, $fail_warp"

*clearmarkall 1; *clearmarkall 2;
*createmark elements 1 "displayed"
*createmark elements 2
if {[hm_marklength elements 1] !=0} {*elementtestaspect elements 1 5 2 2 0 " 2D Aspect Ratio "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*createmark elements 1 "displayed"
set fail_aspect [hm_marklength elements 1]
*unmaskall2
}
puts $file "Aspect Ratio, $fail_aspect"

*clearmarkall 1; *clearmarkall 2;
*createmark elements 1 "displayed"
*createmark elements 2
if {[hm_marklength elements 1] !=0} {*elementtestskew elements 1 45 2 2 0 " 2D Skew "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*createmark elements 1 "displayed"
set fail_skew [hm_marklength elements 1]
*unmaskall2
}
puts $file "Skew, $fail_skew"

*clearmarkall 1; *clearmarkall 2;
*createmark elements 1 "displayed"
*createmark elements 2
if {[hm_marklength elements 1] !=0} {*elementtestjacobian elements 1 0.6 2 2 0 " 2D Jacobian "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*createmark elements 1 "displayed"
set fail_jacobian [hm_marklength elements 1]
*unmaskall2
}
puts $file "Jacobian, $fail_jacobian"


*clearmarkall 1; *clearmarkall 2;
*createmark elements 1 "displayed"
*createmark elements 2
if {[hm_marklength elements 1] !=0} {*elementtestlength elements 1 10 2 1 2 0 " 2D Length < "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*createmark elements 1 "displayed"
set fail_minl [hm_marklength elements 1]
*unmaskall2
}
puts $file "Min Element Length, $fail_minl"

*clearmarkall 1; *clearmarkall 2;
*createmark elements 1 "displayed"
*createmark elements 2
if {[hm_marklength elements 1] !=0} {*elementtestlength elements 1 100 2 0 2 0 " 2D Length > "
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*createmark elements 1 "displayed"
set fail_maxl [hm_marklength elements 1]
*unmaskall2
}
puts $file "Max Element Length, $fail_maxl"

proc number {complete} {
set entity $complete
*clearmarkall 1
*createmark $entity 1 "all"
set marked [hm_getmark $entity 1]
set Count [llength $marked]
return "$Count"
set total_comp [num comp]
puts $file "Total Number of Components, $num_Comp"
set total_prop [num prop]
puts $file "Total Number of Property,$num_prop"
set total_mats [num mat]
puts $file "Total Number of Material,$num_mats"
set total_elem [num elements]
puts $file "Total Number of Elements,$num_elem"
}


*EntityPreviewEmpty comps 1
set empty_comps [hm_getmark comps 1]
if {[hm_marklength comps 1]!=0} {foreach i $empty_comps {*setvalue comps id=$i color=#FF0000}}
set comp_empty [hm_marklength comps 1]
puts $file "Number of Empty Components,$comp_empty"

*EntityPreviewUnused mats 1
set empty_mats [hm_getmark mats 1]
if {[hm_marklength mats 1]!=0} {foreach j $empty_mats {*setvalue mats id=$j color=#FF0000}}
set mats_unused [hm_marklength mats 1]
puts $file "Number of Unused Materials,$empty_mats"

*EntityPreviewUnused props 1
set empty_props [hm_getmark props 1]
if {[hm_marklength props 1]!=0} {foreach k $empty_props {*setvalue props id=$k color=#FF0000}}
set props_unused [hm_marklength props 1]
puts $file "Number of Unused Properties,$empty_props"

*clearmarkall 1; *clearmarkall 2;
*createmark elements 1 "displayed"
if {[hm_marklength elements 1] !=0} {hm_getduplicateelements 1 2 0
*maskentitymark elements 2 0
*maskreverse elements
*createmark nodes 1 "displayed"
*nodemarkaddtempmark 1
*createmark elements 1 "displayed"
set duple_elems [hm_marklength elements 1]
*unmaskall2
}
puts $file "Duplicate Elements, $duple_elems"


*clearmarkall 1; *clearmarkall 2;
*createmark components 1 "all"
set compid [hm_getmark components 1]
puts $file "Component_Id,Component_name,Thickness,Property_Name,Material_Name,Element_Count"
foreach details $compid {
*createmark elements 1 "by collector id" $details
set comp_name [hm_entityinfo name components $details]
set thickness [hm_getthickness components $details]
set prop_name [hm_getvalue component id =$details dataname = property.name]
set mat_name [hm_getvalue component id =$details dataname = material.name]
set element_num [hm_marklength elements 1]
if { $mat_name == {} } {set mat_name empty}
if { $prop_name == {} } {set prop_name empty}
puts $file $details,$comp_name,$thickness,$prop_name,$mat_name,$element_num
}
close $file

Snippets:

FE Model

Output file generated after running the macro

* Tha macro has attached below.

Conclusion:

This macro helps the CAE engineer to see the complete model information as a document.

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.