⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xgsetup250.tcl

📁 xgrafix 是PTSG模拟程序中的图形截面库 改版本是最新版本
💻 TCL
📖 第 1 页 / 共 3 页
字号:
	set WinData($Window,xlabel) $xlabel	set WinData($Window,ylabel) $ylabel	set SaveFile $DumpFile	AddToList $Window	if { $State == "open" } {		set WinData($Window,created) 1		CreateWindow $Window		set WinData($Window,open) 1		lput $Window	} else {		set WinData($Window,created) 0	}}proc Set3dCross { WinName xstart xend ystart yend } \{	global WinData		append Window . [string tolower $WinName]#C_printf $xend#C_printf $xstart	$Window.middle.x.scale configure -from $xstart	$Window.middle.x.scale configure -to [expr $xend - 1]	if { [lindex [$Window.middle.x.scale configure -from ] 4] < $xstart } {		$Window.middle.x.scale set $xstart	} elseif {[lindex [$Window.middle.x.scale configure -to] 4] >= $xend} {		$Window.middle.x.scale set [expr $xend - 1]	}	$Window.middle.y.scale configure -from $ystart	$Window.middle.y.scale configure -to [expr $yend - 1]	if { [lindex [$Window.middle.y.scale configure -from ] 4] < $ystart } {		$Window.middle.y.scale set $ystart	} elseif {[lindex [$Window.middle.y.scale configure -to] 4] >= $yend} {		$Window.middle.y.scale set [expr $yend - 1]	}}	################################### Procedure to popup diagnostics  proc PopupDiag { } \{	global WinData		#C_printf [selection own]         if { [selection own] == "" } {		return	}	#C_printf [selection get]	set WindowsList [ split [selection get] \n]	foreach WinName $WindowsList {		set WinName [string trimright [string trimleft \			$WinName \{] \}]		set Window ""		append Window . [string tolower $WinName]	    #C_printf $Window		Open $Window	}}##################################### Procedure to close diagnosticsproc CloseDiag { } \{	global WinData	if { [selection own] == "" } {		return	}	set Window [selection get]	set WinName [string trimright [string trimleft $Window \{] \}]	append WinPath . [string tolower $WinName]	Close $WinPath}	###################################### Adds a diagnostic to the listboxproc AddToList { Window } \{	global WinData	set index [Search $Window]	set Title $WinData($Window,title)	.list.lframe.listbox insert $index $Title	.list.lframe.openbox insert end " "	set WinData($Window,index) $index	set End [expr [.list.lframe.listbox size] - 1]		for {set i [expr $index + 1]} {$i<=$End} {incr i} {		set Window ""		append Window . [string tolower [.list.lframe.listbox get $i]]		incr WinData($Window,index)	}}proc Search { Window } \{	global WinData	set Begin 0	set End [expr [.list.lframe.listbox size] - 1]	set Title $WinData($Window,title)	while { $Begin <= $End } {		set Middle [expr ($End+$Begin)/2]		switch \"[string compare $Title [.list.lframe.listbox get $Middle]]\" {		\"-1\" { set End [expr $Middle - 1] }		\"0\" { return $Begin }		\"1\" { set Begin [expr $Middle + 1] }		}	}	return $Begin}######################### Create the Tk Window  proc CreateWindow { Window } \{	global WinData	global XGrafixIcon	global ThreeD	global windowsList		########################################	# Create and place the toplevel window	set Type $WinData($Window,type)	lappend windowsList $Window	toplevel $Window	wm minsize $Window 100 100	wm title $Window $WinData($Window,title)	wm geometry $Window $WinData($Window,geometry)	wm iconbitmap $Window $XGrafixIcon   #tkwait visibility $Window	######################	# Create the buttons        frame $Window.bframe -relief raised -bd 2                button $Window.bframe.close -padx 0 -pady 0 -highlightthickness 0 -text Close -command \		[ list Close $Window ]        button $Window.bframe.rescale -padx 0 -pady 0 -highlightthickness 0 -text Rescale -command \		[ list PopupRescale $Window ]        if { $Type != $ThreeD } {                button $Window.bframe.trace -padx 0 -pady 0 -highlightthickness 0 -text Trace -command \			[list Trace $Window]		if { $WinData($Window,xAuto) == 1 || $WinData($Window,yAuto) == 1 } {			$Window.bframe.trace configure -state disabled		}        }        button $Window.bframe.print -padx 0 -pady 0 -highlightthickness 0 -text Print -command \		[list PopupPrint $Window]	button $Window.bframe.crosshair -padx 0 -pady 0 -highlightthickness 0 -text "Crosshair" -command \		[list PopupCrosshair $Window]        if { $Type != $ThreeD } {		frame $Window.bottom -bd 2 -relief raised		frame $Window.bottom.xframe -relief ridge -bd 2		label $Window.bottom.xframe.x1 -text \			"$WinData($Window,xlabel):" -anchor w		label $Window.bottom.xframe.x2 -textvariable \			WinData($Window,xCoord) -anchor w		frame $Window.bottom.yframe -relief ridge -bd 2		label $Window.bottom.yframe.y1 -text "Y:" -anchor w		label $Window.bottom.yframe.y2 -textvariable \			WinData($Window,yCoord) -anchor w	        pack $Window.bframe.close $Window.bframe.rescale \        	        $Window.bframe.trace $Window.bframe.print \			$Window.bframe.crosshair \			-side left -ipadx 3 -ipady 3 \	                -padx 3 -pady 3		pack $Window.bottom.xframe.x1 $Window.bottom.xframe.x2 \			-side left -padx 3		pack $Window.bottom.yframe.y1 $Window.bottom.yframe.y2 \			-side left -padx 3		pack $Window.bottom.yframe $Window.bottom.xframe -side right \			-padx 3 -pady 3        }        if { $Type == $ThreeD } {                button $Window.bframe.3dview -padx 0 -pady 0 -highlightthickness 0 -text "3D View" -command \			[list Popup3d $Window]	        pack $Window.bframe.close $Window.bframe.rescale \        	        $Window.bframe.print $Window.bframe.3dview \			$Window.bframe.crosshair -side left -ipadx 3 \			-ipady 3 -padx 3 -pady 3        }        pack $Window.bframe -fill x                ############################################        # Create the label where the plot is to be	frame $Window.middle	if { $Type != $ThreeD } {		label $Window.middle.label -background gray30 -cursor crosshair		bind $Window.middle.label <1> [list UpdateCrosshair \			$Window %x %y]		bind $Window.middle.label <B1-Motion> [list UpdateCrosshair \			$Window %x %y]		bind $Window.middle.label <2> [list MiddleDown $Window %x %y ]		bind $Window.middle.label <B2-Motion> [list StretchBox \			 $Window %x %y ]		bind $Window.middle.label <ButtonRelease-2> [list MiddleUp \			$Window %x %y ]		bind $Window.middle.label <3> [list RestoreWinParams $Window ]	} else {		label $Window.middle.label -background gray30	}        pack $Window.middle.label -fill both -expand true -side left	pack $Window.middle -fill both -expand true	if { $Type == $ThreeD } {		frame $Window.middle.x -relief raised -bd 2		label $Window.middle.x.label -text "X Axis"		scale $Window.middle.x.scale -highlightthickness 0 -showvalue 0 -command \			[list Update3dCrosshair $Window ]		pack $Window.middle.x.label -fill x		pack $Window.middle.x.scale -fill y -expand true -pady 3		frame $Window.middle.y -relief raised -bd 2		label $Window.middle.y.label -text "Y Axis"		scale $Window.middle.y.scale -highlightthickness 0 -showvalue 0 -command \			[list Update3dCrosshair $Window ]		pack $Window.middle.y.label -fill x		pack $Window.middle.y.scale -fill y -expand true -pady 3		frame $Window.bottom -relief raised -bd 2				frame $Window.bottom.x -relief ridge -bd 2		label $Window.bottom.x.label1 -text \			"$WinData($Window,xlabel):" -anchor w		label $Window.bottom.x.label2 -textvariable \			WinData($Window,xCoord) -anchor w		pack $Window.bottom.x.label1 -side left		pack $Window.bottom.x.label2 -fill x -expand true -side left		pack $Window.bottom.x -fill x -expand true -side left \			-padx 3 -pady 3		frame $Window.bottom.y -relief ridge -bd 2		label $Window.bottom.y.label1 -text \			"$WinData($Window,ylabel):" -anchor w		label $Window.bottom.y.label2 -textvariable \			WinData($Window,yCoord) -anchor w		pack $Window.bottom.y.label1 -side left		pack $Window.bottom.y.label2 -fill x -expand true -side left		pack $Window.bottom.y -fill x -expand true -side left \			-padx 3 -pady 3		frame $Window.bottom.z -relief ridge -bd 2		label $Window.bottom.z.label1 -text "Z:" -anchor w		label $Window.bottom.z.label2 -textvariable \			WinData($Window,zCoord) -anchor w		pack $Window.bottom.z.label1 -side left		pack $Window.bottom.z.label2 -fill x -expand true -side left		pack $Window.bottom.z -fill x -expand true -side left \			-padx 3 -pady 3		bind $Window <Enter> { focus %W; break }		bind $Window <Left> { \			set pathname [string trimleft %W "."]		        set rootname [string range $pathname 0 [expr \				[string first "." $pathname] -1] ]		        set rootname .$rootname			$rootname.middle.x.scale set [expr \			[$rootname.middle.x.scale get ] - 1 ]; break }		bind $Window <Right> { \			set pathname [string trimleft %W "."]		        set rootname [string range $pathname 0 [expr \				[string first "." $pathname] -1] ]		        set rootname .$rootname			$rootname.middle.x.scale set [expr \			[$rootname.middle.x.scale get ] + 1 ]; break }		bind $Window <Up> { \			set pathname [string trimleft %W "."]		        set rootname [string range $pathname 0 [expr \				[string first "." $pathname] -1] ]		        set rootname .$rootname			$rootname.middle.y.scale set [expr \			[$rootname.middle.y.scale get ] - 1 ]; break }		bind $Window <Down> { \			set pathname [string trimleft %W "."]		        set rootname [string range $pathname 0 [expr \				[string first "." $pathname] -1] ]		        set rootname .$rootname			$rootname.middle.y.scale set [expr \			[$rootname.middle.y.scale get ] + 1 ]; break } 	} else {		bind $Window <Enter> { focus %W; break }	}}proc StretchBox { Window x y } \{	global WinData	#if { $WinData($Window,type) == $ThreeD } {	 #   set coords [ C_UpdateCrosshair $WinData($Window,index) $x $y ]	  #  set xTemp2 [lindex $coords 0]	   # set yTemp2 [lindex $coords 1]	    #	 #   C_StretchBox $WinData($Window,index) $xTemp2 $yTemp2	#}	#else {	 set coords [ C_UpdateCrosshair $WinData($Window,index) $x $y ]	    set xTemp2 [lindex $coords 0]	    set yTemp2 [lindex $coords 1]	    	    C_StretchBox $WinData($Window,index) $xTemp2 $yTemp2   	#}}proc MiddleDown { Window x y } \{	global WinData	global xTemp1	global yTemp1	C_SetCrosshairParameters $WinData($Window,index)	set coords [ C_UpdateCrosshair $WinData($Window,index) $x $y ]	if { $coords == "" } {		set xTemp1 0		set yTemp1 0	} else {		set xTemp1 [lindex $coords 0]		set yTemp1 [lindex $coords 1]	}	C_DefineUL $WinData($Window,index) $xTemp1 $yTemp1}proc MiddleUp { Window x y } \{	global WinData	global xTemp1	global yTemp1	global xTemp2	global yTemp2	set coords [ C_UpdateCrosshair $WinData($Window,index) $x $y ]	set xTemp2 [lindex $coords 0]	set yTemp2 [lindex $coords 1]	if { $xTemp1 < $xTemp2 } {		set WinData($Window,xMin) $xTemp1		set WinData($Window,xMax) $xTemp2	} elseif { $xTemp1 > $xTemp2 } {		set WinData($Window,xMin) $xTemp2		set WinData($Window,xMax) $xTemp1	} else {		return	}	if { $yTemp1 < $yTemp2 } {		set WinData($Window,yMin) $yTemp1		set WinData($Window,yMax) $yTemp2	} elseif { $yTemp1 > $yTemp2 } {		set WinData($Window,yMin) $yTemp2		set WinData($Window,yMax) $yTemp1	} else {		return	}	set WinData($Window,xAuto) 0	set WinData($Window,yAuto) 0	$Window.bframe.trace configure -state normal	C_Rescale $WinData($Window,index) $WinData($Window,xMin) \		$WinData($Window,xMax) $WinData($Window,xAuto) \		$WinData($Window,xLinLog) $WinData($Window,yMin) \		$WinData($Window,yMax) $WinData($Window,yAuto) \		$WinData($Window,yLinLog) $WinData($Window,zMin) \		$WinData($Window,zMax) $WinData($Window,zAuto) \		$WinData($Window,zLinLog)}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -