130 lines
6.2 KiB
Python
130 lines
6.2 KiB
Python
#***************************************************************************
|
|
#* *
|
|
#* Copyright (c) 2011 *
|
|
#* Yorik van Havre <yorik@uncreated.net> *
|
|
#* *
|
|
#* 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. *
|
|
#* *
|
|
#* This program 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 this program; if not, write to the Free Software *
|
|
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
|
|
#* USA *
|
|
#* *
|
|
#***************************************************************************
|
|
|
|
class ArchWorkbench(Workbench):
|
|
"Arch workbench object"
|
|
Icon = """
|
|
/* XPM */
|
|
static char * arch_xpm[] = {
|
|
"16 16 9 1",
|
|
" c None",
|
|
". c #543016",
|
|
"+ c #6D2F08",
|
|
"@ c #954109",
|
|
"# c #874C24",
|
|
"$ c #AE6331",
|
|
"% c #C86423",
|
|
"& c #FD7C26",
|
|
"* c #F5924F",
|
|
" ",
|
|
" ",
|
|
" # ",
|
|
" ***$# ",
|
|
" .*******. ",
|
|
" *##$****#+ ",
|
|
" #**%&&##$#@@ ",
|
|
".$**%&&&&+@@+ ",
|
|
"@&@#$$%&&@@+.. ",
|
|
"@&&&%#.#$#+..#$.",
|
|
" %&&&&+%#.$**$@+",
|
|
" @%&+&&&$##@@+",
|
|
" @.&&&&&@@@ ",
|
|
" @%&&@@ ",
|
|
" @+ ",
|
|
" "};
|
|
"""
|
|
MenuText = "Arch"
|
|
ToolTip = "Architecture workbench"
|
|
|
|
def Initialize(self):
|
|
import DraftTools,DraftGui,Arch_rc,Arch,Draft_rc
|
|
|
|
# arch tools
|
|
self.archtools = ["Arch_Wall","Arch_Structure",
|
|
"Arch_Floor","Arch_Building","Arch_Site",
|
|
"Arch_Window","Arch_Roof","Arch_Axis",
|
|
"Arch_SectionPlane","Arch_Add","Arch_Remove"]
|
|
self.meshtools = ["Arch_SplitMesh","Arch_MeshToShape",
|
|
"Arch_SelectNonSolidMeshes","Arch_RemoveShape",
|
|
"Arch_CloseHoles"]
|
|
|
|
# draft tools
|
|
self.drafttools = ["Draft_Line","Draft_Wire","Draft_Circle","Draft_Arc",
|
|
"Draft_Polygon","Draft_Rectangle", "Draft_Text",
|
|
"Draft_Dimension", "Draft_BSpline","Draft_Point"]
|
|
self.draftmodtools = ["Draft_Move","Draft_Rotate","Draft_Offset",
|
|
"Draft_Trimex", "Draft_Upgrade", "Draft_Downgrade", "Draft_Scale",
|
|
"Draft_Drawing","Draft_Edit","Draft_WireToBSpline","Draft_AddPoint",
|
|
"Draft_DelPoint","Draft_Shape2DView","Draft_Draft2Sketch","Draft_Array",
|
|
"Draft_Clone"]
|
|
self.draftcontexttools = ["Draft_ApplyStyle","Draft_ToggleDisplayMode","Draft_AddToGroup",
|
|
"Draft_SelectGroup","Draft_SelectPlane","Draft_ToggleSnap",
|
|
"Draft_ShowSnapBar","Draft_ToggleGrid","Draft_UndoLine",
|
|
"Draft_FinishLine","Draft_CloseLine"]
|
|
|
|
self.appendToolbar(str(DraftTools.translate("arch","Arch tools")),self.archtools)
|
|
self.appendToolbar(str(DraftTools.translate("arch","Draft tools")),self.drafttools)
|
|
self.appendToolbar(str(DraftTools.translate("arch","Draft mod tools")),self.draftmodtools)
|
|
self.appendMenu([str(DraftTools.translate("arch","&Architecture")),str(DraftTools.translate("arch","Conversion Tools"))],self.meshtools)
|
|
self.appendMenu(str(DraftTools.translate("arch","&Architecture")),self.archtools)
|
|
self.appendMenu(str(DraftTools.translate("arch","&Draft")),self.drafttools+self.draftmodtools)
|
|
self.appendMenu([str(DraftTools.translate("arch","&Draft")),str(DraftTools.translate("arch","Context Tools"))],self.draftcontexttools)
|
|
FreeCADGui.addIconPath(":/icons")
|
|
FreeCADGui.addLanguagePath(":/translations")
|
|
FreeCADGui.addPreferencePage(":/ui/archprefs-base.ui","Arch")
|
|
FreeCADGui.addPreferencePage(":/ui/userprefs-base.ui","Draft")
|
|
FreeCADGui.addPreferencePage(":/ui/userprefs-import.ui","Draft")
|
|
Log ('Loading Arch module... done\n')
|
|
|
|
def Activated(self):
|
|
if hasattr(FreeCADGui,"draftToolBar"):
|
|
FreeCADGui.draftToolBar.Activated()
|
|
if hasattr(FreeCADGui,"Snapper"):
|
|
FreeCADGui.Snapper.show()
|
|
Msg("Arch workbench activated\n")
|
|
|
|
def Deactivated(self):
|
|
if hasattr(FreeCADGui,"draftToolBar"):
|
|
FreeCADGui.draftToolBar.Deactivated()
|
|
Msg("Arch workbench deactivated\n")
|
|
|
|
def ContextMenu(self, recipient):
|
|
self.appendContextMenu("Draft context tools",self.draftcontexttools)
|
|
|
|
def GetClassName(self):
|
|
return "Gui::PythonWorkbench"
|
|
|
|
FreeCADGui.addWorkbench(ArchWorkbench)
|
|
FreeCAD.addImportType("Industry Foundation Classes (*.ifc)","importIFC")
|
|
FreeCAD.addExportType("Wavefront OBJ - Arch module (*.obj)","importOBJ")
|
|
# check for pycollada
|
|
try:
|
|
import collada
|
|
except:
|
|
from DraftTools import translate
|
|
FreeCAD.Console.PrintMessage(str(translate("arch","pycollada not found, collada support will be disabled.\n")))
|
|
else:
|
|
FreeCAD.addImportType("Collada (*.dae)","importDAE")
|
|
FreeCAD.addExportType("Collada (*.dae)","importDAE")
|
|
|