Новинки КОМПАС-3D v17 и v18 это новый интерфейс сильно отличающийся от v16.
Каждый пользователь, который работал с версией КОМПАС-3D v16, мог настраивать интерфейс под себя. Создавая плавающие панели с определенным набором команд. Данная функция не вошла в возможности интерфейса КОМАС-3D v17 и v18. И появилась только в версии КОМПАС-3D v19.
Существует обходное решение создание своих пользовательских панелей для КОМПАС-3D через API КОМПАС-3D на языке программирования Python.
Посмотреть разработку можно в видеозаписи:
Пример исходного кода из записи:
# -*- coding: utf-8 -*-
#|моя панель
from tkinter import *
import pythoncom
from win32com.client import Dispatch, gencache
# Подключим константы API Компас
kompas6_constants = gencache.EnsureModule("{75C9F5D0-B5B8-4526-8681-9903C567D2ED}", 0, 1, 0).constants
kompas6_constants_3d = gencache.EnsureModule("{2CAF168C-7961-4B90-9DA2-701419BEEFE3}", 0, 1, 0).constants
# Подключим описание интерфейсов API5
kompas6_api5_module = gencache.EnsureModule("{0422828C-F174-495E-AC5D-D31014DBBE87}", 0, 1, 0)
kompas_object = kompas6_api5_module.KompasObject(Dispatch("Kompas.Application.5")._oleobj_.QueryInterface(kompas6_api5_module.KompasObject.CLSID, pythoncom.IID_IDispatch))
with open('setting.txt','r') as file:
ks_command=file.read().splitlines()
dict_kscommand={}
for i in ks_command:
n=i.split('=')
dict_kscommand[n[1]]=n[0]
w=Tk()
w.title('Моя панель')
w.wm_attributes('-topmost',1)
def start(i):
print('test')
kompas_object.ksExecuteKompasCommand(dict_kscommand[i], False)
i='Обечайка'
Button(text=i, command=lambda i =i:start(i)).grid(row=0,column=0)
i='Контур 3D'
Button(text=i, command=lambda i =i:start(i)).grid(row=1,column=0)
i='Измерить площадь'
Button(text=i, command=lambda i =i:start(i)).grid(row=1,column=1)
w.mainloop()
Скачать исходники по ссылке:
https://yadi.sk/d/ZOzLweqWDA3_-Q