Подключение спецификации

Автор Kirill men, 27.03.21, 14:20:58

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Kirill men

Доброго времени суток, други! Создаю автоматом чертеж по скрипту, вопрос такой: как можно подключить программно спецификацию к уже готовому чертежу? Может можно как то достучаться до кнопки "управление сборкой"? Или проще создать спецификацию без подключения, программно накидывать строки в специю...?

Михаил88

Я делаю так.
1. Создаю спецификацию по 3D модели сборки (kompas_object.ksExecuteKompasCommand(20183, False))
2. Создаю чертеж по 3D модели сборки.
3. Привязываю созданную спецификацию к нужному документу.(AttachedDocuments.Add(FileName, True)). FileName - полное имя файла присоединяемого до­кумента.
В итоге получаю ассоциативную спецификацию.

Kirill men

Благодарю за ответ. Спецификацию успешно создаю и сохраняю. А вот подключить через AttachedDocuments не получается. Почему то пишет AttachedDocuments не определено.
Я просто добавляю сорочку
AttachedDocuments.Add("путь к файлу",True).
Подскажите где косяк? Не могу понять синтаксис...

Михаил88

# -*- coding: utf-8 -*-

import pythoncom
from win32com.client import Dispatch, gencache

#  Получи API интерфейсов версии 5
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))

#  Получи API интерфейсов версии 7
kompas_api7_module = gencache.EnsureModule("{69AC2981-37C0-4379-84FD-5DD2F3C0A520}", 0, 1, 0)
kompas_api_object = kompas_api7_module.IKompasAPIObject(
    Dispatch("Kompas.Application.7")._oleobj_.QueryInterface(kompas_api7_module.IKompasAPIObject.CLSID,
                                                             pythoncom.IID_IDispatch))
application = kompas_api_object.Application

# Создаем спецификацию
kompas_object.ksExecuteKompasCommand(20183, False)

kompas_document = application.ActiveDocument
kompas_document.SaveAs(r'C:\1\Спецификация.spw')

iSpecificationDocument = kompas_document._oleobj_.QueryInterface(
    kompas_api7_module.NamesToIIDMap['ISpecificationDocument'], pythoncom.IID_IDispatch)
iSpecificationDocument = kompas_api7_module.ISpecificationDocument(iSpecificationDocument)
AttachedDocuments = iSpecificationDocument.AttachedDocuments
iAttachedDocument = AttachedDocuments.Add(r'C:\1\Чертеж.cdw', True)
Name = iAttachedDocument.Name
print(Name)
kompas_document.SaveAs(r'C:\1\Спецификация.spw')

Михаил88

Запускать на активной сборке, здесь 'C:\1\Спецификация.spw' и 'C:\1\Чертеж.cdw' прописать свои пути.

Kirill men

Вот спасибо!!! Работает как надо!!!