From 9b6b171b045c9913fdc91ca20dd98e3301c0d8bb Mon Sep 17 00:00:00 2001 From: Jose Luis Cercos Pita Date: Tue, 20 Oct 2015 13:05:27 +0200 Subject: [PATCH] Using the smart expression in the spreadsheet to manage the entities labels --- .../Ship/shipCreateLoadCondition/__init__.py | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/src/Mod/Ship/shipCreateLoadCondition/__init__.py b/src/Mod/Ship/shipCreateLoadCondition/__init__.py index f059e8ffa..4a06fba41 100644 --- a/src/Mod/Ship/shipCreateLoadCondition/__init__.py +++ b/src/Mod/Ship/shipCreateLoadCondition/__init__.py @@ -26,6 +26,10 @@ import FreeCADGui as Gui import Spreadsheet +READ_ONLY_FOREGROUND = (0.5, 0.5, 0.5) +READ_ONLY_BACKGROUND = (0.9, 0.9, 0.9) + + def load(): """Directly create the load condition""" # Check that a ship has been selected @@ -73,6 +77,55 @@ def load(): s = App.activeDocument().addObject('Spreadsheet::Sheet', 'LoadCondition') + # Add a description + s.setForeground('A1:B2', READ_ONLY_FOREGROUND) + s.setBackground('A1:B2', READ_ONLY_BACKGROUND) + s.setAlignment('B1:B2', 'center', 'keep') + s.setStyle('B1:B2', 'italic', 'add') + s.set("A1", "Ship:") + s.set("A2", "Load condition:") + s.set("B1", "=" + ship.Name + ".Label") + s.set("B2", "=Label") + + # Add the weights data + s.setAlignment('A4:A5', 'center', 'keep') + s.setStyle('A4:A5', 'bold', 'add') + s.setStyle('A4:A5', 'underline', 'add') + s.set("A4", "WEIGHTS DATA") + s.set("A5", "name") + for i in range(len(ship.Weights)): + weight = App.activeDocument().getObject(ship.Weights[i]) + s.set("A{}".format(i + 6), "=" + weight.Name + ".Label") + s.setForeground('A4:A{}'.format(5 + len(ship.Weights)), READ_ONLY_FOREGROUND) + s.setBackground('A4:A{}'.format(5 + len(ship.Weights)), READ_ONLY_BACKGROUND) + + # Add the tanks data + s.mergeCells('C4:E4') + s.setForeground('C4:E5', READ_ONLY_FOREGROUND) + s.setBackground('C4:E5', READ_ONLY_BACKGROUND) + s.setAlignment('C4:E5', 'center', 'keep') + s.setStyle('C4:E5', 'bold', 'add') + s.setStyle('C4:E5', 'underline', 'add') + s.set("C4", "TANKS DATA") + s.set("C5", "name") + s.set("D5", "Fluid density [kg/m^3]") + s.set("E5", "Filling ratio (interval [0, 1])") + if len(ship.Tanks): + for i in range(len(ship.Tanks)): + tank = App.activeDocument().getObject(ship.Tanks[i]) + s.set("C{}".format(i + 6), "=" + tank.Name + ".Label") + s.set("D{}".format(i + 6), "998.0") + s.set("E{}".format(i + 6), "0.0") + s.setForeground('C6:C{}'.format(5 + len(ship.Tanks)), READ_ONLY_FOREGROUND) + s.setBackground('C6:C{}'.format(5 + len(ship.Tanks)), READ_ONLY_BACKGROUND) + + s.setColumnWidth('A', 128) + s.setColumnWidth('B', 128) + s.setColumnWidth('C', 128) + s.setColumnWidth('D', 150) + s.setColumnWidth('E', 200) + + """ # Add a reference to the owner ship s.mergeCells('A1:D1') s.setAlignment('A1:B2', 'center', 'keep') @@ -127,6 +180,7 @@ def load(): s.setForeground('A{}:B{}'.format(8 + len(ship.Weights), 8 + len(ship.Weights) + len(ship.Tanks)), (0.5,0.5,0.5)) + """ # Add the spreadsheet to the list of loading conditions of the ship lcs = ship.LoadConditions[:]