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

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

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

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

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

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

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

Чтение элементов чертежа

Автор ya, 12.06.24, 14:38:04

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

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

ya

Приветствую Вас, пользователи форума!
Подскажите, как написать код при помощи Python, который выведет все значения диаметральных размеров из всех видов у документов с определенным расширением (в моём случае .cdw) из указанной директории, при этом документы не надо открывать.
Итог должен выглядеть следующим образом: Обозначение чертежа - название вида чертежа - значение размера (пример: АБВГ.00.01 - Разрез А-А - 6)
Код с выводом значения диаметральных размеров у активного документа знаю как написать. У меня проблема с написанием кода, который прочитает параметры у нескольких документов из указанной директории.

Toptotal

#1
Было бы  не плохо добавить в плагин  для ТС (тоталу командеру такое), Выводить выбранные и в папке и по поиску и филтьру, команда вывасти в Ексель все значения из файлов  есть. Осталось дописать по чертежам диаметры вывести.  А еще кучув сего хочется другого, жаль что Аскон закрыл формат и раньше что можно было вывести из файла регулярным выражение стало закрыто. Текст искать прям в файле по техтребованию можно было раньше .

lavgirb

Цитата: ya от 12.06.24, 14:38:04при этом документы не надо открывать.
...
Код с выводом значения диаметральных размеров у активного документа знаю как написать.
Супер.

ya

Цитата: lavgirb от 12.06.24, 19:29:34Супер.
Может быть я некорректно написал по поводу того, что документы не надо открывать. Я имел ввиду, чтобы Компас работал в фоновом режиме, если это возможно.

На всякий случай, код для активного документа прилагаю.

# -*- coding: utf-8 -*-
#|1

import pythoncom
from win32com.client import Dispatch, gencache


#  Подключим константы API Компас
const = gencache.EnsureModule("{75C9F5D0-B5B8-4526-8681-9903C567D2ED}", 0, 1, 0).constants
const_3d = gencache.EnsureModule("{2CAF168C-7961-4B90-9DA2-701419BEEFE3}", 0, 1, 0).constants

#  Подключим описание интерфейсов API5
KAPI = gencache.EnsureModule("{0422828C-F174-495E-AC5D-D31014DBBE87}", 0, 1, 0)
iKompasObject = KAPI.KompasObject(Dispatch("Kompas.Application.5")._oleobj_.QueryInterface(KAPI.KompasObject.CLSID, pythoncom.IID_IDispatch))

#  Подключим описание интерфейсов API7
KAPI7 = gencache.EnsureModule("{69AC2981-37C0-4379-84FD-5DD2F3C0A520}", 0, 1, 0)
iApplication = KAPI7.IApplication(Dispatch("Kompas.Application.7")._oleobj_.QueryInterface(KAPI7.IApplication.CLSID, pythoncom.IID_IDispatch))


#  Получим активный документ
iKompasDocument = iApplication.ActiveDocument
iKompasDocument2D = KAPI7.IKompasDocument2D(iKompasDocument)
iDocument2D = iKompasObject.ActiveDocument2D()


# Подсчёт диаметров на чертеже
iViewsAndLayersManager = iKompasDocument2D.ViewsAndLayersManager
iViews = iViewsAndLayersManager.Views
for i in range(iViews.Count):
    iView = iViews.ViewByNumber(i)
    Name = iView.Name
    iSymbols2DContainer = KAPI7.ISymbols2DContainer(iView)

    iDiametralDimensions = iSymbols2DContainer.DiametralDimensions
    for j in range(len(iDiametralDimensions)):
        iDiametralDimension = iDiametralDimensions.DiametralDimension(j)
        iDimensionText = KAPI7.IDimensionText(iDiametralDimension)
        iNominalText = iDimensionText.NominalText
        Str = iNominalText.Str
        print("Диаметральный размер - ", Str, " ", Name)
+ Благодарностей: 1

Slaviation

Добрый день.
ЦитироватьУ меня проблема с написанием кода, который прочитает параметры у нескольких документов из указанной директории.
Пример во вложении.
+ Благодарностей: 2

Шахтёр

Цитата: ya от 12.06.24, 20:18:27На всякий случай, код для активного документа прилагаю.


У меня задача немного другая - надо найти не размеры, поставленные через "Диаметральный размер", а реальные диаметральные размеры детали, то есть те, в которых есть значок ø. Пока не могу придумать...