Быстрое назначение ссылок в таблице

Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 2552
Зарегистрирован: 18 янв 2020, 11:49
Откуда: Ростов-на-Дону

Быстрое назначение ссылок в таблице

Сообщение demonlibra »

Идея взята из макроса AliasManager.

Макрос назначает ссылки выделенным строкам или столбцам.
Имена ссылок берутся из строки выше или столбца слева.
Спойлер

Код: Выделить всё

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()
Не бойся поломать. Бойся не починить ))
Изображение

Вернуться в «FreeCAD»