Add R00
This commit is contained in:
parent
06406b958d
commit
8179c6426b
2 changed files with 296 additions and 0 deletions
115
Architectural Parts/Doors_Windows/Get_parametric_model.FCMacro
Normal file
115
Architectural Parts/Doors_Windows/Get_parametric_model.FCMacro
Normal file
|
@ -0,0 +1,115 @@
|
|||
#!/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!")
|
||||
|
||||
#-----------------------------------------------------------------------
|
181
Architectural Parts/Doors_Windows/Save_parametric_models.FCMacro
Normal file
181
Architectural Parts/Doors_Windows/Save_parametric_models.FCMacro
Normal file
|
@ -0,0 +1,181 @@
|
|||
#!/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 Save models +++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
import FreeCAD
|
||||
import FreeCADGui as Gui
|
||||
import Spreadsheet
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
## SAVE MODEL FROM PROPERTIES TO SPREADSHEET
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
# 2. Get and save properties
|
||||
# 2.1. Organize the properties
|
||||
|
||||
name = "None"
|
||||
value = "None"
|
||||
obj = None
|
||||
group = "None"
|
||||
group1 = "None"
|
||||
group2 = "None"
|
||||
propName = 'None'
|
||||
objects = []
|
||||
SpreadsheetModels = None
|
||||
|
||||
# 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 = [Prop, Prop001, ...]
|
||||
|
||||
objects = FreeCAD.ActiveDocument.getObject(propName).L_Property_objects_list
|
||||
|
||||
def saveComponentModel(column = "None", objects = None, SpreadsheetModels = None):
|
||||
groupAnt = "None"
|
||||
cellName = "None"
|
||||
cellValue = "None"
|
||||
N = 0
|
||||
T = 0
|
||||
cellNumber = 0
|
||||
cellValue = column + str(1)
|
||||
SpreadsheetModels.setBackground(cellValue, (0.666667,0.666667,0.000000))
|
||||
for i in range(len(objects)):
|
||||
# Prop, Prop001, ...
|
||||
obj = objects[i]
|
||||
name = "Label"
|
||||
value = obj.getPropertyByName(name)
|
||||
# Prop to SpreadsheetModels:
|
||||
cellValue = column + str(3 + T)
|
||||
SpreadsheetModels.set(cellValue, value)
|
||||
SpreadsheetModels.setStyle(cellValue, 'bold', 'add')
|
||||
SpreadsheetModels.setBackground(cellValue, (0.666667,0.666667,0.000000))
|
||||
App.ActiveDocument.recompute()
|
||||
N += 1
|
||||
T += 1
|
||||
App.ActiveDocument.recompute()
|
||||
# End save Prop to SpreadsheetModels
|
||||
propertyNames = []
|
||||
propertyNames = obj.PropertiesList
|
||||
groups = []
|
||||
# groups = sorted(groups)
|
||||
for n in range(len(propertyNames)):
|
||||
name = propertyNames[n]
|
||||
group = obj.getGroupOfProperty(name)
|
||||
if group not in ("", "Base"):
|
||||
if group != groupAnt and group not in groups:
|
||||
groups.append(group)
|
||||
|
||||
groups = sorted(groups)
|
||||
# Save properties
|
||||
for i in range(len(groups)):
|
||||
group2 = groups[i]
|
||||
cellValue = column + str(3 + T)
|
||||
# group background
|
||||
SpreadsheetModels.setBackground(cellValue, (0.666667,0.666667,0.000000))
|
||||
App.ActiveDocument.recompute()
|
||||
N += 1
|
||||
T += 1
|
||||
counter = 0
|
||||
# Save value properties by group
|
||||
for n in range(len(propertyNames)):
|
||||
name = propertyNames[n]
|
||||
group1 = obj.getGroupOfProperty(name)
|
||||
value = obj.getPropertyByName(name)
|
||||
propertyType = None
|
||||
propertyType = obj.getTypeIdOfProperty(name)
|
||||
if group1 == group2 and name[0] != "D" and propertyType not in ('App::PropertyLink', 'App::PropertyLinkList', 'App::PropertyStringList'):
|
||||
# Property to SpreadsheetModels
|
||||
cellValue = column + str(3 + T)
|
||||
if obj.Visibility == False:
|
||||
value = "Not used"
|
||||
SpreadsheetModels.set(cellValue, value)
|
||||
SpreadsheetModels.setForeground(cellValue, (0.501961,0.501961,0.501961))
|
||||
else:
|
||||
value = str(obj.getPropertyByName(name))
|
||||
SpreadsheetModels.set(cellValue, value)
|
||||
N += 1
|
||||
T += 1
|
||||
counter += 1
|
||||
App.ActiveDocument.recompute()
|
||||
# Delete group is no usefull data
|
||||
if counter == 0:
|
||||
N -= 1
|
||||
T -= 1
|
||||
cells = "None"
|
||||
cells = column + str(2) + ":" + column + str(2000)
|
||||
SpreadsheetModels.setAlignment(cells, 'center', 'keep')
|
||||
SpreadsheetModels.setAlignment(cells, 'vcenter', 'keep')
|
||||
App.ActiveDocument.recompute()
|
||||
T = N
|
||||
T += 1
|
||||
|
||||
# 3. Include the model name in the list of options.
|
||||
|
||||
obj = None
|
||||
listModels = []
|
||||
modelName = "None"
|
||||
obj = objects[0]
|
||||
modelName = column + " - " + nameTitle + " " + obj.A_General_label
|
||||
listModels = obj.A_Model_list
|
||||
listModels.append(modelName)
|
||||
obj.A_Model_list = listModels
|
||||
obj.A_Model_name = [f for f in obj.A_Model_list]
|
||||
App.ActiveDocument.recompute()
|
||||
|
||||
# 1. Models spreadsheet - create model title
|
||||
|
||||
nameTitle = "None"
|
||||
cellTitle = "None"
|
||||
column = None
|
||||
|
||||
# Condition to save the model
|
||||
if objects[0].B_Confirm_values == True:
|
||||
column = objects[0].A_New_model_column_spreadsheet
|
||||
cellTitle = column + str(2)
|
||||
nameTitle = objects[0].A_New_model_name
|
||||
SpreadsheetModels.set(cellTitle, nameTitle)
|
||||
App.ActiveDocument.recompute()
|
||||
SpreadsheetModels.setStyle(cellTitle, 'bold', 'add')
|
||||
App.ActiveDocument.recompute()
|
||||
objects[0].B_Confirm_values = False
|
||||
saveComponentModel(column, objects, SpreadsheetModels)
|
||||
# Select the SpreadsheetModels
|
||||
Gui.Selection.clearSelection()
|
||||
Gui.Selection.addSelection(SpreadsheetModels)
|
||||
App.ActiveDocument.recompute()
|
||||
|
||||
else:
|
||||
print("First you must write or confirm the spreadsheet column in 'Prop_General_configurations or VarSet_General_configurations> I2_Save_new_model'> A_New_model_column_spreadsheet', the model name in 'A_New_model_name', then choose 'true' in 'B_Confirm_values!")
|
||||
|
||||
# ------------------------------------------------------------------------------------------------
|
Loading…
Add table
Reference in a new issue