[brlcad-commits] SF.net SVN: brlcad:[53053] brlcad/trunk/src/tclscripts
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: <bo...@us...> - 2012-10-15 22:21:38
|
Revision: 53053 http://brlcad.svn.sourceforge.net/brlcad/?rev=53053&view=rev Author: bob1961 Date: 2012-10-15 22:21:32 +0000 (Mon, 15 Oct 2012) Log Message: ----------- Added a "Select Edge" edit mode and a "Bot Edges" table to the Bot edit panel. Modified Paths: -------------- brlcad/trunk/src/tclscripts/archer/BotEditFrame.tcl brlcad/trunk/src/tclscripts/lib/Ged.tcl Modified: brlcad/trunk/src/tclscripts/archer/BotEditFrame.tcl =================================================================== --- brlcad/trunk/src/tclscripts/archer/BotEditFrame.tcl 2012-10-15 22:17:55 UTC (rev 53052) +++ brlcad/trunk/src/tclscripts/archer/BotEditFrame.tcl 2012-10-15 22:21:32 UTC (rev 53053) @@ -45,17 +45,20 @@ common moveEdge 2 common moveFace 3 common selectPoint 4 - common selectFace 5 - common splitEdge 6 - common splitFace 7 + common selectEdge 5 + common selectFace 6 + common splitEdge 7 + common splitFace 8 common mVertDetailHeadings {{} X Y Z} + common mEdgeDetailHeadings {{} A B} common mFaceDetailHeadings {{} A B C} common mEditLabels { {Move Point} {Move Edge} {Move Face} {Select Point} + {Select Edge} {Select Face} {Split Edge} {Split Face} @@ -75,8 +78,10 @@ protected { variable mVertDetail + variable mEdgeDetail variable mFaceDetail - variable mCurrentBotEdge "" + variable mEdgeList + variable mCurrentBotEdge 1 variable mCurrentBotPoint 1 variable mCurrentBotFace 1 @@ -90,6 +95,7 @@ method initEditState {} method applyData {} + method botEdgeSelectCallback {_edge} method botEdgeSplitCallback {_elist} method botFaceMoveCallback {_face} method botFaceSelectCallback {_face} @@ -98,6 +104,7 @@ method detailBrowseCommand {_row _col} method handleDetailPopup {_index _X _Y} method handleEnter {_row _col} + method singleEdgeSelectCallback {_pindex} method singleFaceSelectCallback {_pindex} method singlePointSelectCallback {_pindex} method validateDetailEntry {_row _col _newval _clientdata} @@ -124,11 +131,18 @@ # PUBLIC METHODS # ------------------------------------------------------------ + + ## - initGeometry # # Initialize the variables containing the object's specification. # ::itcl::body BotEditFrame::initGeometry {gdata} { + if {$itk_option(-mged) == "" || + $itk_option(-geometryObject) == ""} { + return + } + unset mVertDetail unset mFaceDetail @@ -142,6 +156,12 @@ } set col 0 + foreach heading $mEdgeDetailHeadings { + set mEdgeDetail(0,$col) $heading + incr col + } + + set col 0 foreach heading $mFaceDetailHeadings { set mFaceDetail(0,$col) $heading incr col @@ -182,6 +202,26 @@ } } + set tmpEdgeList [$itk_option(-mged) get_bot_edges $itk_option(-geometryObject)] + set mEdgeList {} + set index 1 + foreach item $tmpEdgeList { + set mEdgeDetail($index,$SELECT_COL) "" + set e0 [lindex $item 0] + set e1 [lindex $item 1] + + if {$e0 > $e1} { + set mEdgeDetail($index,$A_COL) $e1 + set mEdgeDetail($index,$B_COL) $e0 + lappend mEdgeList [list $e1 $e0] + } else { + set mEdgeDetail($index,$A_COL) $e0 + set mEdgeDetail($index,$B_COL) $e1 + lappend mEdgeList [list $e0 $e1] + } + incr index + } + GeometryEditFrame::initGeometry $gdata if {$itk_option(-geometryObject) != $mPrevGeometryObject} { @@ -189,7 +229,7 @@ set mPrevGeometryObject $itk_option(-geometryObject) } - botPointSelectCallback [expr {$mCurrentBotPoint - 1}] +# botPointSelectCallback [expr {$mCurrentBotPoint - 1}] botFaceSelectCallback [expr {$mCurrentBotFace - 1}] } @@ -383,6 +423,28 @@ # -dataCallback [::itcl::code $this applyData] + itk_component add edgeTabLF { + ::ttk::labelframe $parent.edgeTabLF \ + -text "Bot Edges" \ + -labelanchor n + } {} + + itk_component add edgeTab { + ::cadwidgets::TkTable $itk_component(edgeTabLF).edgeTab \ + [::itcl::scope mEdgeDetail] \ + $mEdgeDetailHeadings \ + -cursor arrow \ + -height 0 \ + -maxheight 2000 \ + -width 0 \ + -rows 100000 \ + -colstretchmode unset \ + -validate 1 \ + -validatecommand [::itcl::code $this validateDetailEntry] \ + -tablePopupHandler [::itcl::code $this handleDetailPopup] \ + -singleSelectCallback [::itcl::code $this singleEdgeSelectCallback] + } {} + itk_component add faceTabLF { ::ttk::labelframe $parent.faceTabLF \ -text "Bot Faces" \ @@ -407,15 +469,20 @@ # Set width of column 0 $itk_component(vertTab) width 0 3 + $itk_component(edgeTab) width 0 3 $itk_component(faceTab) width 0 3 pack $itk_component(vertTab) -expand yes -fill both + pack $itk_component(edgeTab) -expand yes -fill both pack $itk_component(faceTab) -expand yes -fill both set row 0 grid $itk_component(vertTabLF) -row $row -sticky nsew grid rowconfigure $parent $row -weight 1 incr row + grid $itk_component(edgeTabLF) -row $row -sticky nsew + grid rowconfigure $parent $row -weight 1 + incr row grid $itk_component(faceTabLF) -row $row -sticky nsew grid rowconfigure $parent $row -weight 1 @@ -522,6 +589,11 @@ set mEditClass "" $::ArcherCore::application initFindBotPoint $itk_option(-geometryObjectPath) 1 [::itcl::code $this botPointSelectCallback] } \ + $selectEdge { + set mEditCommand "" + set mEditClass "" + $::ArcherCore::application initFindBotEdge $itk_option(-geometryObjectPath) 1 [::itcl::code $this botEdgeSelectCallback] + } \ $selectFace { set mEditCommand "" set mEditClass "" @@ -541,10 +613,34 @@ GeometryEditFrame::initEditState } + ::itcl::body BotEditFrame::applyData {} { } +::itcl::body BotEditFrame::botEdgeSelectCallback {_edge} { + set e0 [lindex $_edge 0] + set e1 [lindex $_edge 1] + + if {$e0 > $e1} { + set _edge [list $e1 $e0] + } + + set edge_index [lsearch $mEdgeList $_edge] + if {$edge_index < 0} { + return + } + + incr edge_index + set mCurrentBotEdge $edge_index + $itk_component(edgeTab) selectSingleRow $edge_index + $itk_component(edgeTab) see "$edge_index,0" + + set pointIndex $mEdgeDetail($edge_index,$A_COL) + botPointSelectCallback $pointIndex +} + + ::itcl::body BotEditFrame::botEdgeSplitCallback {_elist} { set mCurrentBotEdge $_elist $itk_option(-mged) bot_edge_split $itk_option(-geometryObjectPath) $mCurrentBotEdge @@ -565,6 +661,8 @@ set mCurrentBotFace $_face $itk_component(faceTab) selectSingleRow $_face $itk_component(faceTab) see "$_face,0" + + botEdgeSelectCallback [list $mFaceDetail($_face,$A_COL) $mFaceDetail($_face,$B_COL)] } @@ -611,6 +709,11 @@ updateGeometryIfMod } +::itcl::body BotEditFrame::singleEdgeSelectCallback {_pindex} { + set mCurrentBotEdge $_pindex + initEditState +} + ::itcl::body BotEditFrame::singleFaceSelectCallback {_pindex} { set mCurrentBotFace $_pindex initEditState Modified: brlcad/trunk/src/tclscripts/lib/Ged.tcl =================================================================== --- brlcad/trunk/src/tclscripts/lib/Ged.tcl 2012-10-15 22:17:55 UTC (rev 53052) +++ brlcad/trunk/src/tclscripts/lib/Ged.tcl 2012-10-15 22:21:32 UTC (rev 53053) @@ -198,6 +198,7 @@ method g {args} method get {args} method get_autoview {args} + method get_bot_edges {args} method get_comb {args} method get_eyemodel {args} method get_prev_mouse {args} @@ -1472,6 +1473,10 @@ eval $mGed get_autoview $args } +::itcl::body cadwidgets::Ged::get_bot_edges {args} { + eval $mGed get_bot_edges $args +} + ::itcl::body cadwidgets::Ged::get_comb {args} { eval $mGed get_comb $args } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |