forked from hamish2014/FreeCAD_drawing_dimensioning
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathangularDimension.py
71 lines (62 loc) · 2.82 KB
/
angularDimension.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
67
68
69
70
71
from dimensioning import *
from dimensioning import __dir__ # not imported with * directive
import selectionOverlay, previewDimension
from dimensionSvgConstructor import angularDimensionSVG
dimensioning = DimensioningProcessTracker()
def selectFun( event, referer, elementXML, elementParms, elementViewObject ):
x1,y1,x2,y2 = [ elementParms[k] for k in [ 'x1', 'y1', 'x2', 'y2' ] ]
debugPrint(2, str(dimensioning) )
debugPrint(2, 'selecting line %i with x1=%3.1f y1=%3.1f, x2=%3.1f y2=%3.1f' % (dimensioning.stage, x1,y1,x2,y2) )
referer.lockSelection()
if dimensioning.stage == 0: #then select line1
dimensioning.line1 = x1,y1,x2,y2
dimensioning.stage = 1
else:
dimensioning.line2 = x1,y1,x2,y2
dimensioning.stage = 2
selectionOverlay.hideSelectionGraphicsItems()
previewDimension.initializePreview( dimensioning.drawingVars, clickFunPreview, hoverFunPreview )
def clickFunPreview( x, y ):
if dimensioning.stage == 2 :
dimensioning.point3 = x, y
debugPrint(2, 'base-line point set to x=%3.1f y=%3.1f' % (x,y))
dimensioning.stage = 3
return None, None
else:
XML = angularDimensionSVG( dimensioning.line1, dimensioning.line2,
dimensioning.point3[0], dimensioning.point3[1],
x, y)
return findUnusedObjectName('dim'), XML
def hoverFunPreview( x, y ):
if dimensioning.stage == 2 :
return angularDimensionSVG( dimensioning.line1, dimensioning.line2, x, y, **dimensioning.svg_preview_KWs)
else:
return angularDimensionSVG( dimensioning.line1, dimensioning.line2,
dimensioning.point3[0], dimensioning.point3[1],
x, y, **dimensioning.svg_preview_KWs )
#selection variables for angular dimensioning
maskPen = QtGui.QPen( QtGui.QColor(0,255,0,100) )
maskPen.setWidth(2.0)
maskHoverPen = QtGui.QPen( QtGui.QColor(0,255,0,255) )
maskHoverPen.setWidth(2.0)
class angularDimension:
def Activated(self):
V = getDrawingPageGUIVars()
dimensioning.activate(V)
selectionOverlay.generateSelectionGraphicsItems(
[obj for obj in V.page.Group if not obj.Name.startswith('dim')],
selectFun ,
transform = V.transform,
sceneToAddTo = V.graphicsScene,
doLines=True,
maskPen=maskPen,
maskHoverPen=maskHoverPen,
maskBrush = QtGui.QBrush() #clear
)
def GetResources(self):
return {
'Pixmap' : os.path.join( __dir__ , 'angularDimension.svg' ) ,
'MenuText': 'Angular Dimension',
'ToolTip': 'Creates a angular dimension'
}
FreeCADGui.addCommand('angularDimension', angularDimension())