FreeCAD

Форк
0
/
DraftTools.py 
210 строк · 9.1 Кб
1
# -*- coding: utf8 -*-
2
# ***************************************************************************
3
# *   Copyright (c) 2009, 2010 Yorik van Havre <yorik@uncreated.net>        *
4
# *   Copyright (c) 2009, 2010 Ken Cline <cline@frii.com>                   *
5
# *                                                                         *
6
# *   This program is free software; you can redistribute it and/or modify  *
7
# *   it under the terms of the GNU Lesser General Public License (LGPL)    *
8
# *   as published by the Free Software Foundation; either version 2 of     *
9
# *   the License, or (at your option) any later version.                   *
10
# *   for detail see the LICENCE text file.                                 *
11
# *                                                                         *
12
# *   This program is distributed in the hope that it will be useful,       *
13
# *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
14
# *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
15
# *   GNU Library General Public License for more details.                  *
16
# *                                                                         *
17
# *   You should have received a copy of the GNU Library General Public     *
18
# *   License along with this program; if not, write to the Free Software   *
19
# *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  *
20
# *   USA                                                                   *
21
# *                                                                         *
22
# ***************************************************************************
23
"""Provide GUI commands of the Draft Workbench.
24

25
This module loads all graphical commands of the Draft Workbench,
26
that is, those actions that can be called from menus and buttons.
27
This module must be imported only when the graphical user interface
28
is available, for example, during the workbench definition in `IntiGui.py`.
29
"""
30
## @package DraftTools
31
#  \ingroup DRAFT
32
#  \brief Provide GUI commands of the Draft workbench.
33
#
34
#  This module contains all the graphical commands of the Draft workbench,
35
#  that is, those actions that can be called from menus and buttons.
36

37
# ---------------------------------------------------------------------------
38
# Generic stuff
39
# ---------------------------------------------------------------------------
40
import math
41
import sys
42
from PySide import QtCore, QtGui
43
from pivy import coin
44

45
import FreeCAD
46
import FreeCADGui
47
from FreeCAD import Vector
48

49
import Draft
50
import Draft_rc
51
import DraftGui  # Initializes the DraftToolBar class
52
import DraftVecUtils
53
import WorkingPlane
54
from draftutils.todo import ToDo
55
from draftutils.translate import translate
56
import draftguitools.gui_snapper as gui_snapper
57
import draftguitools.gui_trackers as trackers
58

59
# The module is used to prevent complaints from code checkers (flake8)
60
True if Draft_rc.__name__ else False
61
True if DraftGui.__name__ else False
62

63
__title__ = "FreeCAD Draft Workbench GUI Tools"
64
__author__ = ("Yorik van Havre, Werner Mayer, Martin Burbaum, Ken Cline, "
65
              "Dmitry Chigrin")
66
__url__ = "https://www.freecad.org"
67

68
if not hasattr(FreeCADGui, "Snapper"):
69
    FreeCADGui.Snapper = gui_snapper.Snapper()
70

71
WorkingPlane.get_working_plane()
72

73
# ---------------------------------------------------------------------------
74
# Commands that have been migrated to their own modules
75
# ---------------------------------------------------------------------------
76
import draftguitools.gui_edit
77
import draftguitools.gui_selectplane
78
import draftguitools.gui_setstyle
79
import draftguitools.gui_planeproxy
80
from draftguitools.gui_togglemodes import ToggleConstructionMode
81
from draftguitools.gui_togglemodes import ToggleDisplayMode
82
from draftguitools.gui_groups import AddToGroup
83
from draftguitools.gui_groups import SelectGroup
84
from draftguitools.gui_groups import SetAutoGroup
85
from draftguitools.gui_groups import Draft_AddConstruction
86
from draftguitools.gui_grid import ToggleGrid
87
from draftguitools.gui_heal import Heal
88
from draftguitools.gui_dimension_ops import Draft_FlipDimension
89
from draftguitools.gui_lineslope import Draft_Slope
90
import draftguitools.gui_arrays
91
import draftguitools.gui_annotationstyleeditor
92
from draftguitools.gui_layers import Layer
93

94
# ---------------------------------------------------------------------------
95
# Preflight stuff
96
# ---------------------------------------------------------------------------
97
# update the translation engine
98
FreeCADGui.updateLocale()
99

100
# ---------------------------------------------------------------------------
101
# General functions
102
# ---------------------------------------------------------------------------
103
from draftguitools.gui_tool_utils import formatUnit
104

105
from draftguitools.gui_tool_utils import selectObject
106

107
from draftguitools.gui_tool_utils import getPoint
108

109
from draftguitools.gui_tool_utils import getSupport
110

111
from draftguitools.gui_tool_utils import setWorkingPlaneToObjectUnderCursor
112

113
from draftguitools.gui_tool_utils import setWorkingPlaneToSelectedObject
114

115
from draftguitools.gui_tool_utils import hasMod
116

117
from draftguitools.gui_tool_utils import setMod
118

119
# ---------------------------------------------------------------------------
120
# Base Class
121
# ---------------------------------------------------------------------------
122
from draftguitools.gui_base_original import DraftTool
123

124
# ---------------------------------------------------------------------------
125
# Geometry constructors
126
# ---------------------------------------------------------------------------
127
from draftguitools.gui_tool_utils import redraw3DView
128

129
from draftguitools.gui_base_original import Creator
130

131
from draftguitools.gui_lines import Line
132
from draftguitools.gui_lines import Wire
133
from draftguitools.gui_fillets import Fillet
134
from draftguitools.gui_splines import BSpline
135
from draftguitools.gui_beziers import BezCurve
136
from draftguitools.gui_beziers import CubicBezCurve
137
from draftguitools.gui_beziers import BezierGroup
138
from draftguitools.gui_rectangles import Rectangle
139
from draftguitools.gui_arcs import Arc
140
from draftguitools.gui_arcs import Draft_Arc_3Points
141
from draftguitools.gui_circles import Circle
142
from draftguitools.gui_polygons import Polygon
143
from draftguitools.gui_ellipses import Ellipse
144
from draftguitools.gui_texts import Text
145
from draftguitools.gui_dimensions import Dimension
146
from draftguitools.gui_shapestrings import ShapeString
147
from draftguitools.gui_points import Point
148
from draftguitools.gui_facebinders import Draft_Facebinder
149
from draftguitools.gui_labels import Draft_Label
150
from draftguitools.gui_hatch import Draft_Hatch
151

152
# ---------------------------------------------------------------------------
153
# Modifier functions
154
# ---------------------------------------------------------------------------
155
from draftguitools.gui_base_original import Modifier
156

157
from draftguitools.gui_subelements import SubelementHighlight
158
from draftguitools.gui_move import Move
159
from draftguitools.gui_styles import ApplyStyle
160
from draftguitools.gui_rotate import Rotate
161
from draftguitools.gui_offset import Offset
162
from draftguitools.gui_stretch import Stretch
163
from draftguitools.gui_join import Join
164
from draftguitools.gui_split import Split
165
from draftguitools.gui_upgrade import Upgrade
166
from draftguitools.gui_downgrade import Downgrade
167
from draftguitools.gui_trimex import Trimex
168
from draftguitools.gui_scale import Scale
169
from draftguitools.gui_wire2spline import WireToBSpline
170
from draftguitools.gui_shape2dview import Shape2DView
171
from draftguitools.gui_draft2sketch import Draft2Sketch
172
from draftguitools.gui_patharray import PathArray
173
from draftguitools.gui_patharray import PathLinkArray
174
from draftguitools.gui_pointarray import PointArray
175
import draftguitools.gui_arrays
176
from draftguitools.gui_clone import Draft_Clone
177
from draftguitools.gui_mirror import Mirror
178

179
# ---------------------------------------------------------------------------
180
# Snap tools
181
# ---------------------------------------------------------------------------
182
from draftguitools.gui_snaps import Draft_Snap_Lock
183
from draftguitools.gui_snaps import Draft_Snap_Midpoint
184
from draftguitools.gui_snaps import Draft_Snap_Perpendicular
185
from draftguitools.gui_snaps import Draft_Snap_Grid
186
from draftguitools.gui_snaps import Draft_Snap_Intersection
187
from draftguitools.gui_snaps import Draft_Snap_Parallel
188
from draftguitools.gui_snaps import Draft_Snap_Endpoint
189
from draftguitools.gui_snaps import Draft_Snap_Angle
190
from draftguitools.gui_snaps import Draft_Snap_Center
191
from draftguitools.gui_snaps import Draft_Snap_Extension
192
from draftguitools.gui_snaps import Draft_Snap_Near
193
from draftguitools.gui_snaps import Draft_Snap_Ortho
194
from draftguitools.gui_snaps import Draft_Snap_Special
195
from draftguitools.gui_snaps import Draft_Snap_Dimensions
196
from draftguitools.gui_snaps import Draft_Snap_WorkingPlane
197
from draftguitools.gui_snaps import ShowSnapBar
198

199
# ---------------------------------------------------------------------------
200
# Adds the icons & commands to the FreeCAD command manager, and sets defaults
201
# ---------------------------------------------------------------------------
202

203
# drawing commands
204

205
# modification commands
206

207
# context commands
208

209
# a global place to look for active draft Command
210
FreeCAD.activeDraftCommand = None
211

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.