Files
create/src/Mod/Draft/draftguitools/gui_drawing.py
luz.paz d8b41f70d6 [skip-ci] Fix typos in Draft, Mesh, and src/Tools
Found via codespell v1.17.0.dev0  
```
codespell -q 3 -L aci,ake,aline,alle,alledges,alocation,als,ang,anid,ba,beginn,behaviour,bloaded,byteorder,calculater,cancelled,cancelling,cas,cascade,centimetre,childs,colour,colours,commen,connexion,currenty,dof,doubleclick,dum,eiter,elemente,ende,feld,finde,findf,freez,hist,iff,indicies,initialisation,initialise,initialised,initialises,initialisiert,ist,kilometre,lod,mantatory,methode,metres,millimetre,modell,nd,noe,normale,normaly,nto,numer,oder,orgin,orginx,orginy,ot,pard,pres,programm,que,recurrance,rougly,seperator,serie,sinc,strack,substraction,te,thist,thru,tread,uint,unter,vertexes,wallthickness,whitespaces -S ./.git,*.po,*.ts,./ChangeLog.txt,./src/3rdParty,./src/Mod/Assembly/App/opendcm,./src/CXX,./src/zipios++,./src/Base/swig*,./src/Mod/Robot/App/kdl_cp,./src/Mod/Import/App/SCL,./src/WindowsInstaller,./src/Doc/FreeCAD.uml
```
2020-04-30 11:40:38 +02:00

152 lines
6.7 KiB
Python

# ***************************************************************************
# * (c) 2009, 2010 Yorik van Havre <yorik@uncreated.net> *
# * (c) 2009, 2010 Ken Cline <cline@frii.com> *
# * (c) 2020 Eliud Cabrera Castillo <e.cabrera-castillo@tum.de> *
# * *
# * This file is part of the FreeCAD CAx development system. *
# * *
# * This program is free software; you can redistribute it and/or modify *
# * it under the terms of the GNU Lesser General Public License (LGPL) *
# * as published by the Free Software Foundation; either version 2 of *
# * the License, or (at your option) any later version. *
# * for detail see the LICENCE text file. *
# * *
# * FreeCAD is distributed in the hope that it will be useful, *
# * but WITHOUT ANY WARRANTY; without even the implied warranty of *
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
# * GNU Library General Public License for more details. *
# * *
# * You should have received a copy of the GNU Library General Public *
# * License along with FreeCAD; if not, write to the Free Software *
# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
# * USA *
# * *
# ***************************************************************************
"""Provides tools for sending projections to a Drawing Workbench page.
This commands takes a 2D geometrical element and creates a projection
that is displayed in a drawing page in the Drawing Workbench.
This command should be considered obsolete as the Drawing Workbench
is obsolete since 0.17.
A similar command is not planned for the TechDraw Workbench because
it is not really necessary. TechDraw has its own set of tools
to create 2D projections of 2D and 3D objects.
"""
## @package gui_drawing
# \ingroup DRAFT
# \brief Provides tools for sending projections to a Drawing Workbench page.
from PySide.QtCore import QT_TRANSLATE_NOOP
import FreeCAD as App
import FreeCADGui as Gui
import Draft_rc
import Draft
import draftutils.utils as utils
import draftguitools.gui_base_original as gui_base_original
import draftguitools.gui_tool_utils as gui_tool_utils
from draftutils.messages import _msg, _wrn
from draftutils.translate import translate, _tr
# The module is used to prevent complaints from code checkers (flake8)
True if Draft_rc.__name__ else False
class Drawing(gui_base_original.Modifier):
"""Gui Command for the Drawing tool.
This command should be considered obsolete as the Drawing Workbench
is obsolete since 0.17.
"""
def GetResources(self):
"""Set icon, menu and tooltip."""
_tip = ("Creates a 2D projection on a Drawing Workbench page "
"from the selected objects.\n"
"This command is OBSOLETE since the Drawing Workbench "
"became obsolete in 0.17.\n"
"Use TechDraw Workbench instead for generating "
"technical drawings.")
return {'Pixmap': 'Draft_Drawing',
# 'Accel': "D, D",
'MenuText': QT_TRANSLATE_NOOP("Draft_Drawing", "Drawing"),
'ToolTip': QT_TRANSLATE_NOOP("Draft_Drawing", _tip)}
def Activated(self):
"""Execute when the command is called."""
super(Drawing, self).Activated(name=_tr("Drawing"))
_wrn(_tr("The Drawing Workbench is obsolete since 0.17, "
"consider using the TechDraw Workbench instead."))
if not Gui.Selection.getSelection():
self.ghost = None
self.ui.selectUi()
_msg(translate("draft", "Select an object to project"))
self.call = \
self.view.addEventCallback("SoEvent",
gui_tool_utils.selectObject)
else:
self.proceed()
def proceed(self):
"""Proceed with execution of the command after proper selection."""
if self.call:
self.view.removeEventCallback("SoEvent", self.call)
sel = Gui.Selection.getSelection()
if not sel:
self.page = self.createDefaultPage()
else:
self.page = None
# if the user selected a page, put the objects on that page
for obj in sel:
if obj.isDerivedFrom("Drawing::FeaturePage"):
self.page = obj
break
if not self.page:
# no page selected, default to the first page in the document
for obj in self.doc.Objects:
if obj.isDerivedFrom("Drawing::FeaturePage"):
self.page = obj
break
if not self.page:
# no page in the document, create a default page.
self.page = self.createDefaultPage()
otherProjection = None
# if an existing projection is selected,
# reuse its projection properties
for obj in sel:
if obj.isDerivedFrom("Drawing::FeatureView"):
otherProjection = obj
break
sel.reverse()
for obj in sel:
if (obj.ViewObject.isVisible()
and not obj.isDerivedFrom("Drawing::FeatureView")
and not obj.isDerivedFrom("Drawing::FeaturePage")):
# name = 'View' + obj.Name
# no reason to remove the old one...
# oldobj = self.page.getObject(name)
# if oldobj:
# self.doc.removeObject(oldobj.Name)
Draft.makeDrawingView(obj, self.page,
otherProjection=otherProjection)
self.doc.recompute()
def createDefaultPage(self):
"""Create a default Drawing Workbench page."""
_t = App.getResourceDir() + 'Mod/Drawing/Templates/A3_Landscape.svg'
template = utils.getParam("template", _t)
page = self.doc.addObject('Drawing::FeaturePage', 'Page')
page.ViewObject.HintOffsetX = 200
page.ViewObject.HintOffsetY = 100
page.ViewObject.HintScale = 2
page.Template = template
self.doc.recompute()
return page
Gui.addCommand('Draft_Drawing', Drawing())