netgen/ng/ng.tcl

306 lines
6.5 KiB
Tcl
Raw Normal View History

catch {lappend auto_path $env(NETGENDIR) }
GUI support from Python and some cleanup Squashed commit of the following: commit 5058ceb9351548937487aa94073e7f59236ae9fe Merge: d37f0af 2da1465 Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at> Date: Wed May 10 19:33:55 2017 +0200 Merge remote-tracking branch 'origin/master' into native_tcl_macos commit d37f0afcc1389c0c3ec0899da9c1af158c926ca5 Author: Matthias <matthias.hochsteger@tuwien.ac.at> Date: Wed May 10 19:27:12 2017 +0200 link gui to netgen, some fixes commit 297141455cd4fab81709c13d6253ad8114beee4a Author: Matthias <matthias.hochsteger@tuwien.ac.at> Date: Wed May 10 19:02:47 2017 +0200 windows fixes commit 9bf290a60835f29762b15ee3b722da132678f90c Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at> Date: Wed May 10 18:59:53 2017 +0200 More cleanup, proper code separation ... between netgen exectuable and gui library commit f46d438d3c9dd32f9f94642b4ec00b85611ef1dd Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at> Date: Wed May 10 14:03:53 2017 +0200 fix typos commit b3d301ff4e321189aef469bff77f7cffa7b69e98 Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at> Date: Wed May 10 13:32:57 2017 +0200 also link tk to togl on windows... commit c3519abee7b041e45c913a45999ed2d29d4ff325 Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at> Date: Wed May 10 13:30:16 2017 +0200 link TCL to togl on windows commit 80b607436b45f38f4bac2708a78ef03561ad44e5 Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at> Date: Wed May 10 13:26:45 2017 +0200 linkt TCL only to netgen executable commit 080139a431e949e14cb9f05194e19c5129aca3d3 Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at> Date: Wed May 10 13:20:36 2017 +0200 fix dll ex/import commit dd68efacb01fbbbe3f136168f12fed41fa3c3c8a Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at> Date: Wed May 10 13:15:39 2017 +0200 fix dll export commit 9023b9ca49b4c2b99f228f64564990e2d0246b8c Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at> Date: Wed May 10 12:06:14 2017 +0200 use system tcl/tk on MacOS, but download tcl/tk for windows commit 16eb4c1b01eb5229f93274791187b2c666bb8b8e Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at> Date: Wed May 10 12:01:36 2017 +0200 more cleanup commit 6df5b82a7d9a1177a755446d563d6c4b98ff6329 Merge: af23786 2b0d3f0 Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at> Date: Wed May 10 11:45:42 2017 +0200 Merge remote-tracking branch 'origin/master' into native_tcl_macos commit af2378637a6513de3b50841ed6314cd7e12f7205 Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at> Date: Wed May 10 11:45:40 2017 +0200 some cleanup commit 81bbe117efe25df53c71f9ae603c50ee4557703a Author: Joachim Schöberl <joachim.schoeberl@tuwien.ac.at> Date: Tue May 9 20:14:46 2017 +0200 tk-gui commit 387e6da678661dd3b9d75d696733f46fe43d789a Merge: e658b5b e653d8e Author: Joachim Schöberl <joachim.schoeberl@tuwien.ac.at> Date: Tue May 9 18:49:20 2017 +0200 Merge remote-tracking branch 'origin/gui_from_python' into native_tcl_macos commit e658b5b2c1ac3264f4165b5f6d2b821b3b1b0926 Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at> Date: Tue May 9 18:30:35 2017 +0200 use native tcl on macos commit e653d8e6789d20e24b16a68bf760415940e881f8 Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at> Date: Mon May 8 16:37:23 2017 +0200 next fix commit f663c80b00754d141a02fa6abde2077c841bbafb Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at> Date: Mon May 8 16:23:21 2017 +0200 Fix symbol export on windows commit 70d99782423d33d3fa6f80e758a7377d0cb52840 Author: Matthias Hochsteger <matthias.hochsteger@tuwien.ac.at> Date: Mon May 8 15:14:56 2017 +0200 GUI support from Python Enables experimental support for starting the Netgen GUI from Python directly. To use it, just import the gui module: > import netgen.gui
2017-05-10 22:34:42 +05:00
catch {lappend auto_path $env(NETGENDIR)/../lib }
load libgui[info sharedlibextension] gui
2016-02-08 19:53:16 +05:00
2014-01-31 15:36:34 +06:00
set batchmode [Ng_GetCommandLineParameter batchmode]
if {$batchmode=="undefined"} {
2016-11-18 03:46:44 +05:00
# if {[catch {package require Tix } result ]} {
# puts "cannot load package Tix"
# puts "error : $result"
# }
2016-02-08 19:53:16 +05:00
if {[catch {package require tkdnd } result ]} {
# puts "cannot load package tkdnd"
# puts "error : $result"
}
2009-01-18 01:52:26 +05:00
}
2014-01-31 15:36:34 +06:00
# if {[catch {package require Togl 2.0 } result ]} {
# puts "cannot load package Togl 2.0"
# puts "error : $result"
# }
2016-02-08 19:53:16 +05:00
# load [file dirname [info script]]/gears[info sharedlibextension]
# puts "load togl lib"
# load /Users/joachim/tcl_native3/Togl2.1/libTogl2.1.dylib
# puts "have togl lib"
2009-09-09 02:37:33 +06:00
# if {[catch {package require Togl 2.0 } result ]} {
2011-07-15 14:04:25 +06:00
# puts "cannot load package Togl 2.0"
# puts "error : $result"
2009-09-09 02:37:33 +06:00
# }
2009-01-18 01:52:26 +05:00
# userlevel 1..standard user 2..power-user 3..developer
set userlevel 3
if { [Ng_GetCommandLineParameter expert]=="defined" } {
set userlevel 3
}
set progname "NETGEN"
set ngdir ""
if { [lsearch [array names env] NETGENDIR] != -1 } {
set ngdir $env(NETGENDIR)
}
if { [string length $ngdir] == 0 } {
set ngdir "."
}
set nguserdir ""
if { [lsearch [array names env] NETGEN_USER_DIR] != -1 } {
set nguserdir $env(NETGEN_USER_DIR)
}
if { [string length $nguserdir] == 0 } {
set nguserdir "."
}
2009-01-18 01:52:26 +05:00
set batchmode [Ng_GetCommandLineParameter batchmode]
set solvemode 0
2011-07-15 14:04:25 +06:00
if { [Ng_GetCommandLineParameter solve] != "undefined" || \
[Ng_GetCommandLineParameter recent] == "defined" } {
2009-01-18 01:52:26 +05:00
set solvemode defined
}
set shellmode [Ng_GetCommandLineParameter shellmode]
if { $shellmode == "defined" } {
set batchmode "defined"
}
if { $batchmode != "defined" } {
2011-07-15 03:36:19 +06:00
catch {
wm withdraw .
2009-01-18 01:52:26 +05:00
2011-07-15 03:36:19 +06:00
wm title . $progname
2016-02-08 19:53:16 +05:00
wm geometry . =850x600
2011-07-15 03:36:19 +06:00
wm minsize . 400 300
}
2009-01-18 01:52:26 +05:00
}
source ${ngdir}/variables.tcl
source ${ngdir}/parameters.tcl
if { $batchmode != "defined" } {
2016-02-10 02:25:59 +05:00
catch {
2011-07-15 03:36:19 +06:00
source ${ngdir}/menustat.tcl
2016-02-10 02:25:59 +05:00
}
2009-01-18 01:52:26 +05:00
}
2016-02-10 02:25:59 +05:00
catch {
2009-01-18 01:52:26 +05:00
source ${ngdir}/dialog.tcl
2016-02-10 02:25:59 +05:00
}
2009-05-09 16:22:16 +06:00
2009-01-18 01:52:26 +05:00
catch {
source ${ngdir}/drawing.tcl
}
2011-02-28 17:59:27 +05:00
2015-10-19 16:49:09 +05:00
# if { [catch { load libgeom2dvis[info sharedlibextension] Ng_Geom2d } result ] } {
2011-08-31 23:40:16 +06:00
# puts "cannot load 2d meshing module"
# puts "error: $result"
2015-10-19 16:49:09 +05:00
# }
2011-02-28 17:59:27 +05:00
2011-06-16 22:48:54 +06:00
catch { source ${ngdir}/csgeom.tcl }
catch { source ${ngdir}/stlgeom.tcl }
2011-01-14 22:03:35 +05:00
set hasocc no
catch { source ${ngdir}/occgeom.tcl }
2011-01-11 01:18:01 +05:00
source ${ngdir}/acisgeom.tcl
2011-07-15 14:04:25 +06:00
catch { source ${ngdir}/nghelp.tcl }
catch { source ${ngdir}/ngvisual.tcl }
catch { source ${ngdir}/sockets.tcl }
catch { source ${ngdir}/acis.tcl }
2009-01-18 01:52:26 +05:00
set zugstange 0
2011-01-14 22:03:35 +05:00
catch { source ${ngdir}/trafo/menu.tcl }
2009-01-18 01:52:26 +05:00
setgranularity ${meshoptions.fineness}
Ng_SetMeshingParameters
Ng_SetVisParameters
Ng_SetDebugParameters
Ng_STLDoctor
Ng_GeometryOptions set
2011-01-14 22:03:35 +05:00
if { $hasocc == "yes" } {
2011-01-11 01:31:43 +05:00
Ng_SetOCCVisParameters
}
2009-01-18 01:52:26 +05:00
2011-01-14 22:03:35 +05:00
2009-01-18 01:52:26 +05:00
if { $batchmode != "defined" } {
catch {
wm protocol . WM_DELETE_WINDOW { .ngmenu.file invoke "Quit" }
wm deiconify .
}
}
set trafoapp 0
catch { source ${ngdir}/trafoapp/trafoapp.tcl }
set geofilename [Ng_GetCommandLineParameter geofile]
if { $geofilename != "undefined" &&
[info exists trafo] == 0 && $zugstange == 0} {
if { [ catch { Ng_LoadGeometry $geofilename } errstring] == 0 } {
if { $batchmode != "defined" } {
AddRecentFile $geofilename
}
Ng_ParseGeometry
if { $batchmode != "defined" } {
set selectvisual geometry
Ng_SetVisParameters
redraw
wm title . [concat "$progname - " $geofilename]
}
set dirname [file dirname $geofilename]
set basefilename [file tail [file rootname $geofilename]]
} {
puts "Problem with input file:"
puts "$errstring"
}
}
set cnt 0
foreach { gran } { verycoarse coarse moderate fine veryfine } {
set cnt [expr $cnt + 1]
if { [Ng_GetCommandLineParameter $gran] == "defined" } {
set meshoptions.fineness $cnt
setgranularity ${meshoptions.fineness}
}
}
set meshfilename [Ng_GetCommandLineParameter meshfile]
if { $meshfilename == "undefined" } {
set meshfilename out.mesh
}
set meshfiletype [Ng_GetCommandLineParameter meshfiletype]
if { $meshfiletype == "undefined" } {
set meshfiletype netgen
}
set inputmeshfilename [Ng_GetCommandLineParameter inputmeshfile]
set mergemeshfilename [Ng_GetCommandLineParameter mergefile]
set meshsizefilename [Ng_GetCommandLineParameter meshsizefile]
if { $meshsizefilename != "undefined" } {
set options.meshsizefilename $meshsizefilename
}
set refinementfilename [Ng_GetCommandLineParameter refinementfile]
if { $batchmode == "defined" && $solvemode != "defined"} {
set options.parthread 0
if { $shellmode == "undefined" } {
# old batchmode: only processes commandline arguments
set selectvisual mesh
Ng_SetVisParameters
set meshsize [Ng_GetCommandLineParameter meshsize]
if {$meshsize != "undefined"} { set options.meshsize $meshsize }
if { $inputmeshfilename == "undefined" } {
Ng_GenerateMesh ${meshoptions.firststep} ${meshoptions.laststep}
} else {
Ng_LoadMesh $inputmeshfilename
if { $mergemeshfilename != "undefined" } {
Ng_MergeMesh $mergemeshfilename
}
}
if { $refinementfilename != "undefined" } {
Ng_Bisect $refinementfilename
}
if { $meshfiletype == "netgen" } {
Ng_SaveMesh $meshfilename
} else {
if { [catch { Ng_ExportMesh $meshfilename $meshfiletype } ] == 1 } {
puts "Unknown file format $meshfiletype"
}
}
Ng_Exit;
exit
} else {
set code [catch { source ${ngdir}/ngshell.tcl } errcode]
if {$code} {
puts "error: $errcode"
}
set code [ catch {Ng_RunShell} errcode]
if {$code} {
puts "error: $errcode"
}
Ng_Exit;
exit
}
}
set stereo [Ng_GetCommandLineParameter stereo]
if { $stereo == "defined" } {
set viewoptions.stereo 1
puts "use stereo mode"
Ng_SetVisParameters;
redraw
}
2009-07-26 19:42:48 +06:00
catch { source ${ngdir}/ngsolve.tcl }
2009-05-09 19:03:37 +06:00
2009-01-18 01:52:26 +05:00
set scriptfilename [Ng_GetCommandLineParameter script]
if { $scriptfilename != "undefined" } {
if { [catch { source $scriptfilename } errstring] == 1 } {
puts "Error in input: $errstring"
}
}
if { [Ng_GetCommandLineParameter help]=="defined" } {
if { $zugstange == 1 } {
print_zug_commandline_help
exit;
} {
if { $trafoapp == 1 } {
print_trafo_commandline_help;
} {
print_commandline_help;
Ng_Exit;
exit
}
}
}
2011-07-15 14:04:25 +06:00
2009-01-18 01:52:26 +05:00
if { [file exists startup.tcl] } {
source startup.tcl }
2009-08-27 03:00:55 +06:00
catch { source ${ngdir}/demoapp.tcl }
catch { source ${ngdir}/dropsexp.tcl }
2009-01-18 01:52:26 +05:00