forked from hamish2014/FreeCAD_drawing_dimensioning
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtextMove.py
68 lines (58 loc) · 2.49 KB
/
textMove.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
from dimensioning import *
import selectionOverlay, previewDimension
import XMLlib
d = DimensioningProcessTracker()
def moveTextSvg( x, y):
e = d.elementXML
xml = e.XML[e.pStart:e.pEnd]
xml = XMLlib.replaceParm(xml, 'x', '%f' % x )
xml = XMLlib.replaceParm(xml, 'y', '%f' % y )
if e.parms.has_key('transform'):
xml = XMLlib.replaceParm(xml, 'transform', "rotate(%s %f,%f)" % (d.textRotation,x,y) )
return e.XML[:e.pStart] + xml + e.XML[e.pEnd:]
def placeText( x, y):
FreeCAD.ActiveDocument.openTransaction("move text")
d.dimToEdit.ViewResult = moveTextSvg(x, y )
FreeCAD.ActiveDocument.commitTransaction()
return 'stopPreview'
def MoveDimensionText( event, referer, elementXML, elementParms, elementViewObject ):
d.dimToEdit = elementViewObject
d.elementXML = elementXML
debugPrint(2, 'moving %s' % elementViewObject.Name)
if elementXML.parms.has_key('transform'):
transform = elementXML.parms['transform']
t = transform[ XMLlib.findOffset(transform,'rotate(',0): ]
d.textRotation = XMLlib.splitMultiSep(t, ', ')[0]
debugPrint(3, 'd.textRotation %s' % d.textRotation)
else:
d.textRotation = None
selectionOverlay.hideSelectionGraphicsItems()
previewDimension.initializePreview( d, moveTextSvg, placeText )
maskBrush = QtGui.QBrush( QtGui.QColor(0,160,0,100) )
maskPen = QtGui.QPen( QtGui.QColor(0,160,0,100) )
maskPen.setWidth(0.0)
maskHoverPen = QtGui.QPen( QtGui.QColor(0,255,0,255) )
maskHoverPen.setWidth(0.0)
class MoveText:
def Activated(self):
V = getDrawingPageGUIVars() #needs to be done before dialog show, else Qt active is dialog and not freecads
d.activate( V, dialogTitle='Move Text', dialogIconPath=':/dd/icons/textMove.svg', endFunction=self.Activated )
selectGraphicsItems = selectionOverlay.generateSelectionGraphicsItems(
[obj for obj in V.page.Group if obj.Name.startswith('dim')],
MoveDimensionText ,
sceneToAddTo = V.graphicsScene,
transform = V.transform,
doTextItems = True,
pointWid=2.0,
maskPen=maskPen,
maskHoverPen=maskHoverPen,
maskBrush = maskBrush
)
def GetResources(self):
msg = "Move a dimension's text"
return {
'Pixmap' : ':/dd/icons/textMove.svg' ,
'MenuText': msg,
'ToolTip': msg
}
FreeCADGui.addCommand('dd_moveText', MoveText())