• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Python. Удалить ошибочные проекции в эскизе ( DeleteWrongProjection() )

Автор ТрындецЪ, 11.08.17, 14:40:38

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

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

ТрындецЪ

Не могу удалить ошибочные проекции в эскизе методом DeleteWrongProjection(). Не находит этот метод в импортируемом модуле. Как быть?

Slaviation

Могу предложить создавать модули из tlb-файлов КОМПАС-3D непосредственно в исполняемом модуле.
Добавьте в начало своего модуля строки:

import pythoncom
from win32com.client import Dispatch, gencache

#  Получи константы
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

#  Получи 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

Это гарантирует, что все новые интерфейсы и их методы, добавляемые к API КОМПАС-3D, будут доступны из исполняемого модуля.
+ Благодарностей: 3

ТрындецЪ

Цитата: Slaviation от 14.08.17, 08:01:07
Могу предложить создавать модули из tlb-файлов КОМПАС-3D непосредственно в исполняемом модуле.
Спасибо за дельный совет! Это помогло.
Вот код удаляющий ошибочные проекции в эскизах текущей детали. Может, кому-то будет полезен.
# -*- coding: cp1251 -*-
#http://forum.ascon.ru/index.php/topic,30627.0.html

import pythoncom
from win32com.client import Dispatch, gencache

#  Получи константы
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

#  Получи 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

iKompasDocument = application.ActiveDocument
iKompasDocument3D = kompas_api7_module.KompasDocument3D(iKompasDocument)

iDocument3D = kompas_object.ActiveDocument3D()
iPart = iDocument3D.GetPart(kompas6_constants_3d.pTop_Part)
iEntityCollection = iPart.EntityCollection(kompas6_constants_3d.o3d_sketch)

for i in range(iEntityCollection.GetCount()):
    iSketch = iEntityCollection.GetByIndex (i)
    iSketch = kompas_object.TransferInterface(iSketch, 2, 0)
    iSketch.DeleteWrongProjection()
+ Благодарностей: 2