Как создать свою панель в КОМПАС-3D

Новинки КОМПАС-3D v17 и v18 это новый интерфейс сильно отличающийся от v16.

Новый интерфейс версий КОМПАС-3D v17,v18
Новый интерфейс версий КОМПАС-3D v17,v18
Интерфейс версий v16 и ниже.
Интерфейс версий 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