Revision: 54159
http://brlcad.svn.sourceforge.net/brlcad/?rev=54159&view=rev
Author: bob1961
Date: 2013-01-11 17:22:40 +0000 (Fri, 11 Jan 2013)
Log Message:
-----------
Added a ruler to Archer's sketcher.
Modified Paths:
--------------
brlcad/trunk/src/tclscripts/archer/SketchEditFrame.tcl
Modified: brlcad/trunk/src/tclscripts/archer/SketchEditFrame.tcl
===================================================================
--- brlcad/trunk/src/tclscripts/archer/SketchEditFrame.tcl 2013-01-11
17:10:08 UTC (rev 54158)
+++ brlcad/trunk/src/tclscripts/archer/SketchEditFrame.tcl 2013-01-11
17:22:40 UTC (rev 54159)
@@ -98,8 +98,8 @@
variable mAnchorX 0
variable mAnchorY 0
- variable mDrawGrid 0
- variable mSnapGrid 0
+ variable mDrawGrid 1
+ variable mSnapGrid 1
variable mMajorGridSpacing 5
variable mMinorGridSpacing 0.5
variable mPrevMouseX 0
@@ -174,7 +174,7 @@
method loadTables {_gdata}
method redrawSegments {}
- method build_grid {_x1 _y1 _x2 _y2 _final_sizing}
+ method build_grid {_x1 _y1 _x2 _y2 _final_sizing {_adjust_spacing 1}}
method circle_3pt {_x1 _y1 _x2 _y2 _x3 _y3 _cx_out _cy_out}
method clear_canvas_bindings {}
method continue_circle {_segment _state _coord_type _mx _my}
@@ -186,7 +186,7 @@
method create_bezier {}
method create_circle {}
method create_line {}
- method do_scale {_sf _gflag _final {_epsilon 0.000001}}
+ method do_scale {_sf _gflag _final {_adjust_spacing 1} {_epsilon
0.000001}}
method do_snap_sketch {_cx _cy}
method do_translate {_dx _dy _gflag _final}
method delete_selected {}
@@ -1099,7 +1099,7 @@
}
-::itcl::body SketchEditFrame::build_grid {_x1 _y1 _x2 _y2 _final} {
+::itcl::body SketchEditFrame::build_grid {_x1 _y1 _x2 _y2 _final
{_adjust_spacing 1}} {
# delete previous grid
$itk_component(canvas) delete grid
@@ -1108,22 +1108,25 @@
}
set spacing [expr {$mMinorGridSpacing * $myscale}]
- if {$spacing < 4} {
- return
+
+ if {$_adjust_spacing} {
+ if {$spacing < 10} {
+ set mMinorGridSpacing [expr {$mMinorGridSpacing * 10}]
+ set spacing [expr {$mMinorGridSpacing * $myscale}]
+ } elseif {$spacing > 100} {
+ set mMinorGridSpacing [expr {$mMinorGridSpacing * 0.1}]
+ set spacing [expr {$mMinorGridSpacing * $myscale}]
+ }
}
set major_spacing [expr {$spacing * $mMajorGridSpacing}]
- set anchor_snap [do_snap_sketch $mAnchorX $mAnchorY]
- set anchor_snap_x [lindex $anchor_snap 0]
- set anchor_snap_y [lindex $anchor_snap 1]
-
set snap_1 [do_snap_sketch [expr {$_x1 / $myscale}] [expr {$_y1 /
$myscale}]]
set snap_1_x [lindex $snap_1 0]
set snap_1_y [lindex $snap_1 1]
- set xsteps [expr {abs(round(($snap_1_x - $anchor_snap_x) /
double($mMinorGridSpacing)))}]
- set ysteps [expr {abs(round(($snap_1_y - $anchor_snap_y) /
double($mMinorGridSpacing)))}]
+ set xsteps [expr {abs(round(($snap_1_x - $mAnchorX) /
double($mMinorGridSpacing)))}]
+ set ysteps [expr {abs(round(($snap_1_y - $mAnchorY) /
double($mMinorGridSpacing)))}]
set xsteps [expr {$xsteps%$mMajorGridSpacing}]
if {$xsteps} {
@@ -1144,6 +1147,11 @@
set snap_2 [do_snap_sketch [expr {$_x2 / $myscale}] [expr {$_y2 /
$myscale}]]
set end_x [expr {[lindex $snap_2 0] * $myscale}]
set end_y [expr {[lindex $snap_2 1] * $myscale}]
+
+ set ruler_x [$itk_component(canvas) canvasx 10]
+ set ruler_y [$itk_component(canvas) canvasy 20]
+ set ruler_start_x [$itk_component(canvas) canvasx 30]
+ set ruler_start_y [$itk_component(canvas) canvasy 30]
if {$_final} {
# Draw the rows
@@ -1155,6 +1163,11 @@
set y2 [expr {$y + 1}]
$itk_component(canvas) create oval $x $y $x $y -fill black
-tags grid
}
+
+ if {$y > $ruler_start_y} {
+ set t [format "%g" [expr {$y / $myscale}]]
+ $itk_component(canvas) create text $ruler_x $y -text $t -anchor
sw -fill black -tags "grid ruler"
+ }
}
# Draw the columns
@@ -1166,6 +1179,11 @@
}
incr row
}
+
+ if {$x > $ruler_start_x} {
+ set t [format "%g" [expr {$x / $myscale}]]
+ $itk_component(canvas) create text $x $ruler_y -text $t -anchor
center -fill black -tags "grid ruler"
+ }
}
} else {
# Draw the rows
@@ -1629,7 +1647,7 @@
}
-::itcl::body SketchEditFrame::do_scale {_sf _gflag _final {_epsilon 0.000001}}
{
+::itcl::body SketchEditFrame::do_scale {_sf _gflag _final {_adjust_spacing 1}
{_epsilon 0.000001}} {
if {$_sf < $_epsilon} {
return
}
@@ -1657,7 +1675,7 @@
$itk_component(canvas) configure -scrollregion [list $x1 $y1 $x2 $y2]
if {$_gflag} {
- build_grid $x1 $y1 $x2 $y2 $_final
+ build_grid $x1 $y1 $x2 $y2 $_final $_adjust_spacing
}
}
@@ -2557,7 +2575,7 @@
$mMajorGridSpacing != "0" &&
$mMinorGridSpacing != "" &&
$mMinorGridSpacing != "0"} {
- do_scale 1.0 1 1
+ do_scale 1.0 1 1 0
}
}
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Master HTML5, CSS3, ASP.NET, MVC, AJAX, Knockout.js, Web API and
much more. Get web development skills now with LearnDevNow -
350+ hours of step-by-step video tutorials by Microsoft MVPs and experts.
SALE $99.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122812
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits