add XDim and YDim modes (no graphics yet)
This commit is contained in:
parent
1585c8c9f2
commit
751b063237
@ -28,6 +28,8 @@ class SketchWidget(object):
|
|||||||
'connect': ConnectMode(),
|
'connect': ConnectMode(),
|
||||||
'horizontal': HorizontalMode(),
|
'horizontal': HorizontalMode(),
|
||||||
'vertical': VerticalMode(),
|
'vertical': VerticalMode(),
|
||||||
|
'xdim': XDimMode(),
|
||||||
|
'ydim': YDimMode(),
|
||||||
}
|
}
|
||||||
self.mode_name = 'select'
|
self.mode_name = 'select'
|
||||||
self.mode = self.modes[self.mode_name]
|
self.mode = self.modes[self.mode_name]
|
||||||
@ -496,6 +498,7 @@ class SketchWidget(object):
|
|||||||
':solve(): Unknown Sketch.solve() result\n')
|
':solve(): Unknown Sketch.solve() result\n')
|
||||||
self.window.update_sketch_status(valid, text)
|
self.window.update_sketch_status(valid, text)
|
||||||
self.update_snap_ptrefs()
|
self.update_snap_ptrefs()
|
||||||
|
self.queue_redraw()
|
||||||
|
|
||||||
class Mode(object):
|
class Mode(object):
|
||||||
def do_left_click(self, sw, x, y):
|
def do_left_click(self, sw, x, y):
|
||||||
@ -681,3 +684,51 @@ class VerticalMode(ConnectMode):
|
|||||||
sw.sketch.constraints.append(c)
|
sw.sketch.constraints.append(c)
|
||||||
self.first_ptref = None
|
self.first_ptref = None
|
||||||
sw.invalidate()
|
sw.invalidate()
|
||||||
|
|
||||||
|
class DimMode(Mode):
|
||||||
|
def start_mode(self, sw):
|
||||||
|
self.ptrefs = []
|
||||||
|
|
||||||
|
def get_cursor(self):
|
||||||
|
return 'crosshair'
|
||||||
|
|
||||||
|
def do_motion(self, sw, x, y):
|
||||||
|
if len(self.ptrefs) < 2:
|
||||||
|
sw.update_hover_snap_point(x, y)
|
||||||
|
|
||||||
|
def do_left_click(self, sw, x, y):
|
||||||
|
if len(self.ptrefs) < 2:
|
||||||
|
if sw.hover_snap_ptref is not None:
|
||||||
|
self.ptrefs.append(sw.hover_snap_ptref)
|
||||||
|
sw.set_hover_snap_point(None)
|
||||||
|
else:
|
||||||
|
c = self.get_constraint()
|
||||||
|
sw.sketch.constraints.append(c)
|
||||||
|
sw.invalidate()
|
||||||
|
self.ptrefs = []
|
||||||
|
|
||||||
|
def do_right_click(self, sw, x, y):
|
||||||
|
if len(self.ptrefs) > 0:
|
||||||
|
self.ptrefs = []
|
||||||
|
else:
|
||||||
|
sw.window.set_mode('')
|
||||||
|
|
||||||
|
class XDimMode(DimMode):
|
||||||
|
def get_constraint(self):
|
||||||
|
if (self.ptrefs[0].shape.getPt(self.ptrefs[0].ptNum)[0] <
|
||||||
|
self.ptrefs[1].shape.getPt(self.ptrefs[1].ptNum)[0]):
|
||||||
|
p1, p2 = self.ptrefs
|
||||||
|
else:
|
||||||
|
p2, p1 = self.ptrefs
|
||||||
|
dist = (p2.shape.getPt(p2.ptNum)[0] - p1.shape.getPt(p1.ptNum)[0])
|
||||||
|
return XDistance(p1.shape, p1.ptNum, p2.shape, p2.ptNum, dist)
|
||||||
|
|
||||||
|
class YDimMode(DimMode):
|
||||||
|
def get_constraint(self):
|
||||||
|
if (self.ptrefs[0].shape.getPt(self.ptrefs[0].ptNum)[1] <
|
||||||
|
self.ptrefs[1].shape.getPt(self.ptrefs[1].ptNum)[1]):
|
||||||
|
p1, p2 = self.ptrefs
|
||||||
|
else:
|
||||||
|
p2, p1 = self.ptrefs
|
||||||
|
dist = (p2.shape.getPt(p2.ptNum)[1] - p1.shape.getPt(p1.ptNum)[1])
|
||||||
|
return YDistance(p1.shape, p1.ptNum, p2.shape, p2.ptNum, dist)
|
||||||
|
@ -36,6 +36,8 @@ class Window(object):
|
|||||||
addButton('connect', 'Connect')
|
addButton('connect', 'Connect')
|
||||||
addButton('horizontal', 'Horiz')
|
addButton('horizontal', 'Horiz')
|
||||||
addButton('vertical', 'Vert')
|
addButton('vertical', 'Vert')
|
||||||
|
addButton('xdim', 'XDim')
|
||||||
|
addButton('ydim', 'YDim')
|
||||||
|
|
||||||
self.status_lbl = gtk.Label()
|
self.status_lbl = gtk.Label()
|
||||||
self.status_lbl.set_alignment(0.0, 0.5)
|
self.status_lbl.set_alignment(0.0, 0.5)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user