Макрос назначает ссылки выделенным строкам или столбцам.
Имена ссылок берутся из строки выше или столбца слева.
Спойлер
Код: Выделить всё
from PySide import QtGui
import string
mw=FreeCADGui.getMainWindow()
mdiarea=mw.findChild(QtGui.QMdiArea)
subw=mdiarea.subWindowList()
for i in subw:
if i.widget().metaObject().className() == "SpreadsheetGui::SheetView":
sheet = i.widget()
table=sheet.findChild(QtGui.QTableView)
table=sheet.findChild(QtGui.QTableView)
alphabet_list = list(string.ascii_uppercase)
column_list = []
for i in range(0,26):
column_list.append(alphabet_list[i])
for i in range(0,26):
for j in range(0,26):
column_list.append(alphabet_list[i] + alphabet_list[j])
# The rest is for finding the selected fields
ind = table.selectedIndexes()
l_elements = len(ind)
first_element = ind.__getitem__(0)
fe_col = first_element.column()
fe_row = first_element.row()
fe_alphanum = column_list[fe_col] + str(fe_row+1)
last_element = ind.__getitem__(l_elements-1)
le_col = last_element.column()
le_row = last_element.row()
le_alphanum = column_list[le_col] + str(le_row+1)
FreeCAD.Console.PrintMessage("\nВыбраны ячейки с " + fe_alphanum + " по " + le_alphanum)
print('\ncol ' + column_list[fe_col] + ' ' + column_list[le_col])
print('\nrow ' + str(le_row) + ' ' + str(le_col))
if fe_row == le_row: # Выделена строка
print('Выделена строка')
for i in range(fe_col, le_col+1):
alias_ceil = column_list[i] + str(fe_row+1)
print(alias_ceil)
alias_name = FreeCAD.ActiveDocument.ActiveObject.getContents(column_list[i] + str(fe_row))
print(alias_name)
FreeCAD.ActiveDocument.ActiveObject.setAlias(alias_ceil, alias_name)
elif fe_col == le_col: # Выделен столбец
print('Выделен столбец')
for i in range(fe_row, le_row+1):
print(i)
alias_ceil = column_list[fe_col] + str(i+1)
print(alias_ceil)
alias_name = FreeCAD.ActiveDocument.ActiveObject.getContents(column_list[fe_col-1] + str(i+1))
print(alias_name)
FreeCAD.ActiveDocument.ActiveObject.setAlias(alias_ceil, alias_name)
App.ActiveDocument.recompute()