Added a console interface to the tanks generation

This commit is contained in:
Jose Luis Cercos Pita 2016-01-23 14:35:56 +01:00
parent a615380027
commit c3ccd0f72c
4 changed files with 61 additions and 14 deletions

View File

@ -71,6 +71,7 @@ SET(ShipCreateTank_SRCS
shipCreateTank/__init__.py shipCreateTank/__init__.py
shipCreateTank/TaskPanel.py shipCreateTank/TaskPanel.py
shipCreateTank/TaskPanel.ui shipCreateTank/TaskPanel.ui
shipCreateTank/Tools.py
) )
SOURCE_GROUP("shipcreatetank" FILES ${ShipCreateTank_SRCS}) SOURCE_GROUP("shipcreatetank" FILES ${ShipCreateTank_SRCS})

View File

@ -33,3 +33,4 @@ from shipCreateShip.Tools import createShip
from shipHydrostatics.Tools import areas, displacement, wettedArea, moment, from shipHydrostatics.Tools import areas, displacement, wettedArea, moment,
floatingArea, BMT, mainFrameCoeff floatingArea, BMT, mainFrameCoeff
from shipCreateWeight.Tools import createWeight from shipCreateWeight.Tools import createWeight
from shipCreateTank.Tools import createTank

View File

@ -25,6 +25,7 @@ import FreeCAD as App
import FreeCADGui as Gui import FreeCADGui as Gui
import Units import Units
from PySide import QtGui, QtCore from PySide import QtGui, QtCore
import Tools
import TankInstance as Instance import TankInstance as Instance
from shipUtils import Paths from shipUtils import Paths
import shipUtils.Units as USys import shipUtils.Units as USys
@ -40,21 +41,9 @@ class TaskPanel:
form = mw.findChild(QtGui.QWidget, "TaskPanel") form = mw.findChild(QtGui.QWidget, "TaskPanel")
form.ship = self.widget(QtGui.QComboBox, "Ship") form.ship = self.widget(QtGui.QComboBox, "Ship")
# Create the object
ship = self.ships[form.ship.currentIndex()] ship = self.ships[form.ship.currentIndex()]
obj = App.ActiveDocument.addObject("Part::FeaturePython", "Tank") Tools.createTank(self.solids, ship)
tank = Instance.Tank(obj, self.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 True return True
def reject(self): def reject(self):

View File

@ -0,0 +1,56 @@
#***************************************************************************
#* *
#* Copyright (c) 2016 *
#* Jose Luis Cercos Pita <jlcercos@gmail.com> *
#* *
#* 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