Чтение технических требований из чертежа

Автор SergNLMK, 05.10.22, 16:08:49

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

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

SergNLMK

Здравствуйте, коллеги!
Хочу создать базу данных ТТ из архива нашего конструкторского отдела. Это бывает полезно, когда нужно найти запись в технических требованиях, которая когда-то давно применялась и шаблон такой записи отсутствует. На просторах Интернета смог добыть только код, который считает количество пунктов ТТ:

# -*- coding: utf-8 -*
import pythoncom
from win32com.client import Dispatch, gencache

iApplication = Dispatch('KOMPAS.Application.7')
doc7 = iApplication.ActiveDocument

#  Подключим описание интерфейсов API7
module7 = gencache.EnsureModule("{69AC2981-37C0-4379-84FD-5DD2F3C0A520}", 0, 1, 0)

IDrawingDocument = doc7._oleobj_.QueryInterface(module7.NamesToIIDMap['IDrawingDocument'], pythoncom.IID_IDispatch)
drawing_doc = module7.IDrawingDocument(IDrawingDocument)
text_demand = drawing_doc.TechnicalDemand.Text

count = 0  # Количество пунктов технических требований
for i in range(text_demand.Count):  # Прохоим по каждой строчке технических требований
    if text_demand.TextLines[i].Numbering == 1:  # и проверяем, есть ли у строки нумерация
        count += 1

# Если нет нумерации, но есть текст
if not count and text_demand.TextLines[0]:
    count += 1

print(count)

Пытался на основании этого кода получить текст ТТ, но ничего не вышло.
Подскажите, пожалуйста, как можно решить эту задачу?

p3452

На Форуме есть "Поиск"...
Много раз говорилось о создании, редактировании, поиске и т.д.

p/s: Пользоваться Компас-овскими ТТ имеет смысл, только если Вы машиностроитель, в противном случае юзайте Другие способы.

dimak222

Как-то так:

from win32com.client import Dispatch, gencache  # библиотека API Windows

KompasAPI7 = gencache.EnsureModule('{69AC2981-37C0-4379-84FD-5DD2F3C0A520}', 0, 1, 0)
iApplication = Dispatch('Kompas.Application.7')

iKompasDocument = iApplication.ActiveDocument # делаем активный открытый документ

if iKompasDocument != None or iKompasDocument.DocumentType == 1: # если нет открытого документа выдать сообщение

    iDrawingDocument = KompasAPI7.IDrawingDocument(iKompasDocument) # интерфейс чертежа
    iTechnicalDemand = iDrawingDocument.TechnicalDemand # интерфейс технических требований
    iText = iTechnicalDemand.Text # интерфейс текста ТТ

    for n in range(iText.Count):  # Прохоим по каждой строчке технических требований

        print(iText.TextLines[n].Str) # печатаем построчно ТТ
+ Благодарностей: 1

SergNLMK

Цитата: dimak222 от 05.10.22, 16:25:31Как-то так:

from win32com.client import Dispatch, gencache  # библиотека API Windows

KompasAPI7 = gencache.EnsureModule('{69AC2981-37C0-4379-84FD-5DD2F3C0A520}', 0, 1, 0)
iApplication = Dispatch('Kompas.Application.7')

iKompasDocument = iApplication.ActiveDocument # делаем активный открытый документ

if iKompasDocument != None or iKompasDocument.DocumentType == 1: # если нет открытого документа выдать сообщение

    iDrawingDocument = KompasAPI7.IDrawingDocument(iKompasDocument) # интерфейс чертежа
    iTechnicalDemand = iDrawingDocument.TechnicalDemand # интерфейс технических требований
    iText = iTechnicalDemand.Text # интерфейс текста ТТ

    for n in range(iText.Count):  # Прохоим по каждой строчке технических требований

        print(iText.TextLines[n].Str) # печатаем построчно ТТ
Спасибо!!!