package require PWI_Glyph 1.6.9 gg::tkLoad set scriptDir [file dirname [info script]] catch {source [file join $scriptDir pwiLogo.glf]} set nblks [llength [gg::blkGetAll]] set domlist [gg::domGetAll] if {[llength $domlist] == 0} { tk_messageBox -icon error -title "No domains" -message \ "There are no domains defined." -type ok gg::abort } set blklist [gg::blkGetAll] set DomOrBlk 0 set selectedDom {} set selectedBlk {} set TotalArea 0.0 set TotalVol 0.0 proc infoMsg {msg {title "Warning"}} { tk_messageBox -message "$msg" -type ok -icon warning -title $title } proc errorMsg {msg {title "Error"}} { tk_messageBox -message "$msg" -type ok -icon error -title $title } proc select {} { global DomOrBlk selectedBlk selectedDom blkList domList nblks if { $DomOrBlk == 1 } { if { $nblks == 0 } { errorMsg "No enabled blocks are found!" exit } set add [gg::dispPick BLOCK -message "Select blocks for volume calculation" \ -select $selectedBlk] foreach i $add { if { [lsearch $selectedBlk $i]==-1 } { lappend selectedBlk $i } if {0 == [llength $selectedBlk]} { .buttons.ok configure -state disabled } else { .buttons.ok configure -state normal } } } elseif { $DomOrBlk == 0 } { set add [gg::dispPick DOMAIN -message "Select domains for area calculation" \ -select $selectedDom] foreach i $add { if { [lsearch $selectedDom $i]==-1 } { lappend selectedDom $i } } if { 0 == [llength $selectedDom] } { .buttons.ok configure -state disabled } else { .buttons.ok configure -state normal } } } proc report {} { global selectedDom selectedBlk DomOrBlk TotalArea TotalVol leftHandedBlk set leftHandedBlk {} set TotalArea 0.0 set TotalVol 0.0 if { $DomOrBlk == 0 } { foreach dom $selectedDom { gg::domReport $dom data REFERENCE gg::domReport $dom Report SIZE gg::domExamine $dom Diag AREA set Area [expr $Report(areaAvg) * $Diag(inRange)] puts "=================================" puts "AREA OF SELECTED DOMAIN [lindex [gg::domIdToNum $dom] 0]:" puts "[expr $Report(areaAvg) * $Diag(inRange)]" set TotalArea [expr $TotalArea + $Area] } puts "=================================" puts "TOTAL AREA OF SELECTED DOMAINS:" puts "$TotalArea" puts "=================================" } elseif { $DomOrBlk ==1 } { foreach blk $selectedBlk { gg::blkReport $blk data REFERENCE gg::blkReport $blk Report SIZE gg::blkExamine $blk Diag VOLUME set Volume [expr $Report(volumeAvg) * $Diag(inRange)] set TotalVol [expr $TotalVol + abs($Volume)] puts "=================================" if {$Volume < 0.0} { lappend leftHandedBlk [gg::blkIdToNum $blk] puts "SELECTED BLOCK [lindex [gg::blkIdToNum $blk] 0] is left-handed!" } else { puts "VOLUME OF SELECTED BLOCK [lindex [gg::blkIdToNum $blk] 0]:" puts "[expr $Report(volumeAvg) * $Diag(inRange)]" } } puts "=================================" puts "TOTAL VOLUME OF SELECTED BLOCKS:" puts "$TotalVol" puts "=================================" } else { puts "blahblah" } if {$DomOrBlk ==0} { set result [tk_messageBox -parent .\ -title "Selected Domain(s) Area Info" \ -type ok -icon info \ -message "See console window for area information."] } elseif { $DomOrBlk ==1} { set result [tk_messageBox -parent .\ -title "Selected Block(s) Volume Info"\ -type ok -icon info \ -message "See console window for volume information."] } } proc makeWindow {} { global domlist global blklist label .title -text "Calculate Domain Area/Block Volume" -width 35 set font [.title cget -font] .title configure -font [font create -family [font actual $font -family] -weight bold] pack .title -expand 1 -side top -pady 10 pack [frame .select -bd 1 -height 2 -relief sunken] -fill x -pady 1 -padx 10 pack [frame .runJob] -fill both -side top -pady 2 radiobutton .select.r0 -text Domains -variable DomOrBlk -value 0 radiobutton .select.r1 -text Blocks -variable DomOrBlk -value 1 pack .select.r0 -side left -padx 25 -pady 2 pack .select.r1 -side left -padx 10 -pady 2 pack [frame .buttons] -fill x -padx 8 -pady 8 pack [button .buttons.ok -text "Click to Select" -command {select; report; exit}] \ -side left -padx 18 pack [button .buttons.cancel -text "Cancel" -command { exit }] -side left -padx 1 if {![catch {pwiLogoCreate .buttons.logo 1} b]} { $b configure -bd 0 -relief flat pack $b -side left -padx 5 -fill y } bind . { exit } } makeWindow ::tk::PlaceWindow . widget gg::tkLoop # # DISCLAIMER: # TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, POINTWISE DISCLAIMS # ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED # TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE, WITH REGARD TO THIS SCRIPT. TO THE MAXIMUM EXTENT PERMITTED # BY APPLICABLE LAW, IN NO EVENT SHALL POINTWISE BE LIABLE TO ANY PARTY # FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES # WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF # BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE # USE OF OR INABILITY TO USE THIS SCRIPT EVEN IF POINTWISE HAS BEEN # ADVISED OF THE POSSIBILITY OF SUCH DAMAGES AND REGARDLESS OF THE # FAULT OR NEGLIGENCE OF POINTWISE. #