Using the smart expression in the spreadsheet to manage the entities labels

This commit is contained in:
Jose Luis Cercos Pita 2015-10-20 13:05:27 +02:00
parent c16c27cd0e
commit 9b6b171b04

View File

@ -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[:]