From c3ccd0f72ce9d25bd7fd6d0f96e643dcdce50b33 Mon Sep 17 00:00:00 2001 From: Jose Luis Cercos Pita Date: Sat, 23 Jan 2016 14:35:56 +0100 Subject: [PATCH] Added a console interface to the tanks generation --- src/Mod/Ship/CMakeLists.txt | 1 + src/Mod/Ship/Ship.py | 3 +- src/Mod/Ship/shipCreateTank/TaskPanel.py | 15 +------ src/Mod/Ship/shipCreateTank/Tools.py | 56 ++++++++++++++++++++++++ 4 files changed, 61 insertions(+), 14 deletions(-) create mode 100644 src/Mod/Ship/shipCreateTank/Tools.py diff --git a/src/Mod/Ship/CMakeLists.txt b/src/Mod/Ship/CMakeLists.txt index 50e42a3c2..b39f276c3 100644 --- a/src/Mod/Ship/CMakeLists.txt +++ b/src/Mod/Ship/CMakeLists.txt @@ -71,6 +71,7 @@ SET(ShipCreateTank_SRCS shipCreateTank/__init__.py shipCreateTank/TaskPanel.py shipCreateTank/TaskPanel.ui + shipCreateTank/Tools.py ) SOURCE_GROUP("shipcreatetank" FILES ${ShipCreateTank_SRCS}) diff --git a/src/Mod/Ship/Ship.py b/src/Mod/Ship/Ship.py index 1509f38e2..15510e994 100644 --- a/src/Mod/Ship/Ship.py +++ b/src/Mod/Ship/Ship.py @@ -32,4 +32,5 @@ __doc__="The Ships module provide a set of tools to make some specific Naval" \ from shipCreateShip.Tools import createShip from shipHydrostatics.Tools import areas, displacement, wettedArea, moment, floatingArea, BMT, mainFrameCoeff -from shipCreateWeight.Tools import createWeight \ No newline at end of file +from shipCreateWeight.Tools import createWeight +from shipCreateTank.Tools import createTank \ No newline at end of file diff --git a/src/Mod/Ship/shipCreateTank/TaskPanel.py b/src/Mod/Ship/shipCreateTank/TaskPanel.py index 01a141709..08fb43fcb 100644 --- a/src/Mod/Ship/shipCreateTank/TaskPanel.py +++ b/src/Mod/Ship/shipCreateTank/TaskPanel.py @@ -25,6 +25,7 @@ import FreeCAD as App import FreeCADGui as Gui import Units from PySide import QtGui, QtCore +import Tools import TankInstance as Instance from shipUtils import Paths import shipUtils.Units as USys @@ -40,21 +41,9 @@ class TaskPanel: form = mw.findChild(QtGui.QWidget, "TaskPanel") form.ship = self.widget(QtGui.QComboBox, "Ship") - # Create the object ship = self.ships[form.ship.currentIndex()] - obj = App.ActiveDocument.addObject("Part::FeaturePython", "Tank") - tank = Instance.Tank(obj, self.solids, ship) - Instance.ViewProviderTank(obj.ViewObject) + Tools.createTank(self.solids, ship) - # Set it as a child of the ship - tanks = ship.Tanks[:] - tanks.append(obj.Name) - ship.Tanks = tanks - ship.Proxy.cleanWeights(ship) - ship.Proxy.cleanTanks(ship) - ship.Proxy.cleanLoadConditions(ship) - - App.ActiveDocument.recompute() return True def reject(self): diff --git a/src/Mod/Ship/shipCreateTank/Tools.py b/src/Mod/Ship/shipCreateTank/Tools.py new file mode 100644 index 000000000..bb52c9836 --- /dev/null +++ b/src/Mod/Ship/shipCreateTank/Tools.py @@ -0,0 +1,56 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2016 * +#* Jose Luis Cercos Pita * +#* * +#* 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 * +#* * +#*************************************************************************** + + +import FreeCAD as App +import Units +import TankInstance as Instance + + +def createTank(solids, ship): + """Create a new tank instance + + Position arguments: + solids -- List of solid shapes + ship -- Ship owner + + Returned value: + The new tank object + + The tool will claim the new tank as a child of the ship object. Please do + not remove the partner ship object before removing this new tank before. + """ + obj = App.ActiveDocument.addObject("Part::FeaturePython", "Tank") + tank = Instance.Tank(obj, solids, ship) + Instance.ViewProviderTank(obj.ViewObject) + + # Set it as a child of the ship + tanks = ship.Tanks[:] + tanks.append(obj.Name) + ship.Tanks = tanks + ship.Proxy.cleanWeights(ship) + ship.Proxy.cleanTanks(ship) + ship.Proxy.cleanLoadConditions(ship) + + App.ActiveDocument.recompute() + return obj \ No newline at end of file