115 lines
No EOL
4.9 KiB
Python
115 lines
No EOL
4.9 KiB
Python
#!/usr/bin/env python
|
||
# -*- coding: utf-8 -*-
|
||
|
||
#***************************************************************************
|
||
#* *
|
||
#* Copyright (c) 2024 Francisco Rosa *
|
||
#* *
|
||
#* 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 *
|
||
#* *
|
||
#***************************************************************************
|
||
|
||
# Macro get model +++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
import FreeCAD
|
||
import FreeCADGui as Gui
|
||
import Spreadsheet
|
||
|
||
# ----------------------------------------------------------------------
|
||
## GET MODEL FROM SPREADSHEET
|
||
# ----------------------------------------------------------------------
|
||
name = "None"
|
||
value = None
|
||
cellName = "None"
|
||
cellRows = []
|
||
cellValue = "None"
|
||
obj = "None"
|
||
propertyType = None
|
||
propName = "None"
|
||
objects = []
|
||
column = None
|
||
SpreadsheetModels = None
|
||
propertyRows = {}
|
||
|
||
# Get the property name with the initial information
|
||
|
||
propName = input("Confirme the name of the properties set or VarSet wich Label is 'Initial_information' (Ex.: Prop, Prop001, Prop002...or Varset, Varset001, Varset002...)")
|
||
|
||
if not FreeCAD.ActiveDocument.getObject(propName):
|
||
print(str(propName) + " is not correct!" + "\n")
|
||
|
||
# Get the spreadsheet name for saving model
|
||
|
||
SpreadsheetModels = FreeCAD.ActiveDocument.getObject(propName).A_Spreadsheet_models
|
||
|
||
objects = FreeCAD.ActiveDocument.getObject(propName).L_Property_objects_list
|
||
|
||
CellRows_Lists = []
|
||
CellRows_Lists = objects[0].L_Props_list
|
||
|
||
# propertyRows
|
||
for i in range(len(objects)):
|
||
propertyRows [objects[i].Name] = objects[0].getPropertyByName(CellRows_Lists[i])
|
||
|
||
# 2. Get properties
|
||
def getComponentModel(column = "None", objects = None, propertyRows = None, SpreadsheetModels = None):
|
||
for i in range(len(objects)):
|
||
# Prop, Prop001, ...or VarSet, Varset001...
|
||
obj = objects[i]
|
||
cellRows = propertyRows[obj.Name]
|
||
for n in range(len(cellRows)):
|
||
cellValue = column + cellRows[n]
|
||
value = str(SpreadsheetModels.get(cellValue))
|
||
if value == "Not used":
|
||
continue
|
||
cellName = "A" + cellRows[n]
|
||
name = SpreadsheetModels.get(cellName)
|
||
propertyType = obj.getTypeIdOfProperty(name)
|
||
if propertyType == "App::PropertyBool":
|
||
value = str(SpreadsheetModels.get(cellValue))
|
||
if value == "True":
|
||
value = 1
|
||
else:
|
||
value = 0
|
||
setattr(obj, name, value)
|
||
continue
|
||
if propertyType == "App::PropertyInteger":
|
||
value = SpreadsheetModels.get(cellValue)
|
||
setattr(obj, name, value)
|
||
continue
|
||
setattr(obj, name, value)
|
||
|
||
App.ActiveDocument.recompute()
|
||
|
||
# 1. Models spreadsheet - get model column
|
||
# Condition to get model
|
||
if objects[0].B_Confirm_model == True:
|
||
objects = FreeCAD.ActiveDocument.getObject(propName).L_Property_objects_list
|
||
column = objects[0].A_Model_name[0]
|
||
getComponentModel(column, objects, propertyRows, SpreadsheetModels)
|
||
objects[0].B_Confirm_model = False
|
||
App.ActiveDocument.recompute()
|
||
# Select the Prop or VarSet
|
||
Gui.Selection.clearSelection()
|
||
Gui.Selection.addSelection(SpreadsheetModels)
|
||
Gui.Selection.clearSelection()
|
||
Gui.Selection.addSelection(objects[0])
|
||
App.ActiveDocument.recompute()
|
||
else:
|
||
print("First you must choose or confirm the model name in 'Prop_General_configurations or Varset_General_configurations > I1-Get model configurations'> A_Model_name', then choose 'true' in 'B_Confirm_model!")
|
||
|
||
#----------------------------------------------------------------------- |