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

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

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

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

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

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

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

Конвертация модели .m3d в другой формат (STEP, IGES, STL, ...)

Автор kisilmike, 16.06.17, 16:38:04

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

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

kisilmike

Люди добрые, помогите, пожалуйста.

Мне нужно модели .m3d сохранить в разные форматы. Возьмем за пример STEP

Как это сделать используя Компас Макро (Python)?
Исходя из этой темы http://forum.ascon.ru/index.php/topic,4742.msg25922.html#msg25922 + справки, написал такой код:

IAdditionFormatParam = iDocument3D.AdditionFormatParam()
IAdditionFormatParam.Init()
IAdditionFormatParam.format =???
IAdditionFormatParam.topolgyIncluded=False
#TRUE для IGES
iAdditionFormatParam.formatBinary=False
#true для STL
iDocument3D.SaveAsToAdditionFormat('C:\TO\MyFile.stp', IAdditionFormatParam)


Все ли правильно? Я не могу понять что за параметр передавать в свойство format  - какой-то номер формата или что? Где это можно посмотреть?

sat - AdditionFormatParam.format:=1
x_t - AdditionFormatParam.formatBinary:=False
       AdditionFormatParam.format:=2
x_b - AdditionFormatParam.formatBinary:=True
        AdditionFormatParam.format:=2
stp - AdditionFormatParam.format:=3 // STEP AP203
igs - AdditionFormatParam.format:=4
wrl - AdditionFormatParam.format:=5
stl - AdditionFormatParam.format:=6
c3d - AdditionFormatParam.format:=7
+ Благодарностей: 2

kisilmike

После iAdditionFormatParam = iDocument3D.AdditionFormatParam() любая попытка обратиться к свойствам или методам iAdditionFormatParam возвращает ошибку о том, что неизвестный объект не имеет такого свойства/метода. Значит я неправильно определил объект iAdditionFormatParam ?
AttributeError: 'NoneType' object has no attribute 'format'

Я, Вам передал значения, как ими воспользоваться, это Ваши проблемы, я работаю на другом языке программирования.

ТрындецЪ

Цитата: kisilmike от 16.06.17, 17:51:39
После iAdditionFormatParam = iDocument3D.AdditionFormatParam() любая попытка обратиться к свойствам или методам iAdditionFormatParam возвращает ошибку о том, что неизвестный объект не имеет такого свойства/метода. Значит я неправильно определил объект iAdditionFormatParam ?
AttributeError: 'NoneType' object has no attribute 'format'
Могу ошибаться, но мне кажется, что Вы не через тот модуль подключаетесь.
ksAdditionFormatParam в АPI5,

ТрындецЪ

# -*- coding: cp1251 -*-

import Kompas10API5 as KAPI
from win32com.client import Dispatch

iKompasObject = Dispatch('KOMPAS.Application.5')
iKompasObject = KAPI.KompasObject(iKompasObject)

iDocument3D = iKompasObject.ActiveDocument3D()
ksAdditionFormatParam = iDocument3D.AdditionFormatParam()
ksAdditionFormatParam.Init()
ksAdditionFormatParam.format = 4
ksAdditionFormatParam.topolgyIncluded=False
ksAdditionFormatParam.formatBinary=False
iDocument3D.SaveAsToAdditionFormat('D:\File.igs', ksAdditionFormatParam)
+ Благодарностей: 1

kisilmike

Вау! Огромное спасибо! А я тут мучаюсь целый день уже, думал если будет ответ - уведомление придет. А тут уже готовое решение давно лежит! Спасибо большое очень помогли!

kisilmike

Вот что получилось, вдруг кому пригодится
Python Макрос на конвертирование из m3d в форматы igs, sat, stl, stp
Для запуска просто запустить, открывать Компас необязательно.

Хотел в dxf и dwg сделать, а компас вроде бы не поддерживает 3D в этих форматах.
+ Благодарностей: 1


ТрындецЪ

Цитата: Sabahs от 20.06.17, 12:40:29
Поддерживает.
Борис Николаевич, какими параметрами задаёте версию компаса для пересохранения файла?


Denis78

Почему не сохраняются размеры модели?
Вот мой код:

bool res = _ksDoc->Open((LPCTSTR)file.c_str(), 0);
ksAdditionFormatParamPtr fp = _ksDoc->AdditionFormatParam();
fp->Init();
fp->SetObjectsOptions(ksD3COBodyes, VARIANT_TRUE);
fp->SetObjectsOptions(ksD3COSurfaces, VARIANT_TRUE);
fp->SetObjectsOptions(ksD3COCurves, VARIANT_TRUE);
fp->SetObjectsOptions(ksD3COPoints, VARIANT_TRUE);
fp->SetObjectsOptions(ksD3CODocumentProperties, VARIANT_TRUE);
fp->SetObjectsOptions(ksD3COTechnicalDemand, VARIANT_TRUE);
fp->SetObjectsOptions(ksD3CODimensions, VARIANT_TRUE);       // Размеры "включены"
fp->SetObjectsOptions(ksD3COAttributes, VARIANT_TRUE);
fp->SetObjectsOptions(ksD3CPolygonal, VARIANT_TRUE);
fp->SetObjectsOptions(ksD3CPolygonalLOD0, VARIANT_TRUE);
fp->SetObjectsOptions(ksD3CAssociated, VARIANT_TRUE);
fp->SetObjectsOptions(ksD3COStyle, VARIANT_TRUE);
fp->format = format_STEP_AP214;
res = _ksDoc->SaveAsToAdditionFormat(outName.c_str(), fp);

Однако в результирующем STEP-файле размеров нет. В этом легко убедиться открыв step-файл в текстовом редакторе (формат "степ" текстовый)

Если же сохранять вручную в компасе (у меня версия 18.1), то размеры в STEP-файле будут присутствовать!
("Сохранить как", тип файла установить "STEP AP214", "Сохранить с параметрами", поставить галочку рядом с пунктом "Размеры")
То есть, компас сохранять размеры умеет (в версиях СТЕП 214 и позднее)

Чего же, в таком случае, не хватает в коде?