Разработка и
исследование средств извлечения из САПР КОМПАС-3D и представления в
веб-системах
конструкторского описания,
3D-моделей промышленных деталей и сборок[1]
А.Н. Афанасьев,
прор. по дистанц. и доп.
образ., д.т.н., доц., a.afanasev@ulstu.ru,
Н.Н. Войт,
доц. каф. «Выч. техн.», к.т.н., n.voit@ulstu.ru,
УлГТУ, г. Ульяновск
Авторами
выполнен анализ современных средств визуализации 3D-объектов в веб-среде (JNetCAD, JSC3D,
Babel3D Online Viewer, A360
Online Viewer), рассмотрены
форматы инженерной и компьютерной график, конверторы форматов (CADExchanger, Babel3D, Online CAD
File Converter), разработан
авторский универсальный инструмент извлечения текстового и твердотельного
модельного описаний любой детали и сборки из САПР КОМПАС-3D и представления его
в веб-среде
Authors analyze tools for visualization of 3D-objects in web (for
instance, JNetCAD, JSC3D, Bable3D Online Viewer, A360
Online Viewer),and describe as well CAD and meshing
formats, as convertors for formats: CADExchanger, Babel3D, Online CAD File Converter, also we
create a universal tools to extract a text and solid modes of a description for
parts or assemblies in CAD KOMPAS-3D that can be represented in web
Современными средствами
3D-визуализации твердотельных деталей и сборок в веб-среде
являются JNetCAD (Германия) [1], JSC3d (США)
[2],Babel3D Online Viewer
(Индия) [3], A360 Online Viewer
(США) [4].
JNetCAD является мощным средством обработки и представления
проектных сборок/деталей в веб-среде по лицензии свободного обеспечения для
обучения и некоммерческого использования, разработан на Java-языке как
jar-приложение и представляет собой конвертор из JT [5], OBJ+MTL [6], 3DS [7],
STL [8] форматов в веб-ориентированный JSON-формат [9]. Существуют версии с
графическим пользовательским интерфейсом (GUI) и командной строкой (без
визуализации, только конвертация форматов). Чтобы просмотреть JSON-формат
разработчиками [1] был создан просмоторщик JSONViewerExporterExample, реализованный на JavaScript как плагин и
поддерживающий технологию WebGL [10] для визуализации
моделей деталей и сборок в браузерах Safari, Google Chrome, Firefox, Opera. JT-формат
является инженерным форматом, содержащий дерево построения и 3D-модель.
3DS-формат содержит 3D-модель и список слоев, в нем отсутствует дерево
построения сборки/детали. OBJ+MTL-формат не содержит дерево построения модели,
хранит описание материалов 3D-модели сборки/детали с включением разных цветов,
но модель представлена как неделимая целая часть. STL-формат не содержит
описание материалов детали с включением разных цветов по стандарту, поэтому
сборка/деталь будут представлена в одном цвете (например, в сером).
Следовательно, JT-формат обеспечивает целостность и полноту описательной информации
о сборке/детали, однако САПР КОМПАС-3D не экспортирует сборку/деталь в таком
формате, он поддерживает экспорт в форматы: STEP [11], IGS [12], SAT [13], X_T
[14], STL и VRML [15].
Исследование
инструментов конвертации, обладающие лицензиями GNU GPL или Free
evaluation software license, выявило, что существуют Online-ориентированные
программные средства перевода: Babel3D, Online CAD File Converter, и пакетные
продукты: CADExchanger [16] и САПР (например, FreeCAD [17]). Названные средства не поддерживают
кириллический текст в наименованиях сборки/детали при переводе, искажая ее,
поэтому авторы решили транслитерировать STEP-файл на латинский алфавит, чтобы
программа могла корректно отобразить дерево построения и сохранить его в файлах
JT-формата. Создан сервис транслитерирования –
http://gc.ulstu.ru/translit.htm, исходный код скрипка приведен в листинге 1.
<HTML><BODY> <form action="translit2.php"
method="POST"> <p><b>Input
text:</b></p>
<p><textarea rows="10"
cols="45" name="text"></textarea></p>
<p><input name
="flag"
type="checkbox">Latin</input></p> <p><input type="submit"
value="Send"></p>
</form>
<form action="translit3.php" method="post" enctype="multipart/form-data"> <p>File:
<p><input name ="flag2"
type="checkbox">Latin</input></p>
<p><input type="file" name="stepfile"
/></p><p><input type="submit"
value="Send" /></p>
</p></form></BODY></HTML>
<?php $tmp_name =
$_FILES['stepfile']['tmp_name']; $name = $_FILES['stepfile']['name'];
switch ($_FILES['stepfile']['error']) { case UPLOAD_ERR_OK: break;
case UPLOAD_ERR_NO_FILE: throw
new RuntimeException('No file sent.');
case UPLOAD_ERR_INI_SIZE: case UPLOAD_ERR_FORM_SIZE: throw new RuntimeException('Exceeded filesize
limit.'); default: throw new RuntimeException('Unknown
errors.'); } if(move_uploaded_file($tmp_name, $_SERVER['DOCUMENT_ROOT'].'/labs/data/'.$name) )
$str=file_get_contents($_SERVER['DOCUMENT_ROOT'].'/labs/data/'.$name);
Else {echo 'Not loaded'; print_r($_FILES['stepfile']['error']);
exit;} $to=$_POST['flag2']; $rus = $lat = array('ё','ж','ц','ч','ш','щ','ю','я','Ё','Ж','Ц','Ч','Ш','Щ','Ю','Я','э','ы','Э','Ы','ь','ъ','Ь','Ъ');
$temp = array('yo','zh','tc','ch','sh','sh','yu','ya','YO','ZH','TC','CH','SH','SH','YU','YA','ye','ue','YE','UE','mz','tz','MZ','TZ'); $rus_str = $lat_str = "АБВГДЕЗИЙКЛМНОПРСТУФХабвгдезийклмнопрстуфх"; $temp_str = "ABVGDEZIJKLMNOPRSTUFHabvgdezijklmnoprstufh";
if ($to == 'on') {$lat = $temp; $lat_str = $temp_str;} else {$rus = $temp; $rus_str = $temp_str;} $str = str_replace($rus,$lat,$str); $str = strtr($str,$rus_str,$lat_str);
echo $str; ?>
листинг
1. Исходный скрипт для транслитерирования STEP-файлов
Чтобы решить задачу
визуализации сборки/детали в STEP-формате в JNetCAD
авторами статьи предложен следующий алгоритм.
1. Экспортировать сборку/деталь из КОМПАС-3D в STEP AP
214 (например, сборку в примерах КОМПАС-3D – «Редуктор»).
2. С помощью скрипта Листинга 1 транслитерировать
STEP-файл.
3. Скачать и установить инструмент CADExchange
(http://www.cadexchanger.com/).
4. В CADExchanger открыть
STEP-файл и экспортировать его в JT-формат.
5. Запустить JNetCAD и открыть
JT-файл (например, сборку «Редуктор»).
6. Сохранить в JSON-формате (для подготовки к
веб-представлению).
С целью отображения
кириллического текста необходимо файлы models.js и productstructure.json в созданной папке обратно перевести
на русский язык с помощь Листинг 1, после чего, получится текст дерева
построения на русском языке. Далее для визуализации сборки/модели нужно
скопировать JSON-папку сборки/детали в папку JSONViewrExproterExample
и редактировать в ней файл JSONExporterViewerExample.htm, заменив строку <script src="NX_Speedboat.json/models.js"></script> на <script src="reducer/models.js"></script>,
где reducer – ваша папка с JSON-файлами. Пример,
описанного алгоритма, представлен по ссылке http://gc.ulstu.ru/JSONExporterViewerExample/reducer.htm и представлен на рис. 1.
рис. 1 Визуализация твердотельной сборки «Редуктор» в JSONViewrExproterExample
JSC3D является
средством визуализации проектных изделий и твердотельных графических объектов,
используется многими коммерческими фирмами [18], реализован на JavaScript-языке
и поддерживает технологию WebGL, форматы OBJ+MTL, STL
и 3DS. Таким образом, из КОМПАС-3D сборку/деталь можно экспортировать в формат
VRML и открыть в пакете Blender [19], и в нем
конвертировать в формат OBJ+MTL, который воспроизводит JSC3D.
В курс обучения
студентов дисциплины «Инженерная и компьютерная графика» авторами внедрена
собственная разработка, на базе JSC3D
(http://gc.ulstu.ru/labs/jsc3d/demos/assembly.html), реализующая
3D-представление и структуру редуктора из САПР КОМПАС-3D. Исходный код скрипта
приведен в листинге 2 и представлен на рис. 2.
<!DOCTYPE
HTML> <HTML> <HEAD> <TITLE>JSC3D
Reducer</TITLE>
<script
type="text/javascript" src="../jsc3d.js"></script>
<script type="text/javascript" src="../jsc3d.webgl.js"></script>
<script
type="text/javascript" src="../jsc3d.touch.js"></script>
</HEAD> <BODY> <div style="width:490px; margin:auto;
position:relative;"><canvas id="cv" style="border: 1px solid;"
width="400" height="300"> It seems you are using an
outdated browser that does not support canvas :-( </canvas> </div>
<script type="text/javascript"> var canvas = document.getElementById('cv'); var viewer = new
JSC3D.Viewer(canvas); var parts =
['reducer_case_kompas_blender.obj', 'reducer_cover_kompas_blender.obj',
'reducer_engine_kompas_blender.obj', 'reducer_gear_kompas_blender.obj']; var theScene = new JSC3D.Scene; var numOfLoaded = 0; var parts_meshes = [];var onModelLoaded =
function(scene) { var
meshes = scene.getChildren(); parts_meshes[numOfLoaded] = meshes;
for (var i=0; i<meshes.length; i++) {theScene.addChild(meshes[i]); } viewer.replaceScene(theScene);}; var loader = new
JSC3D.ObjLoader;loader.onload = onModelLoaded; var load_part = function(ind) { var loader = new
JSC3D.ObjLoader; loader.onload = onModelLoaded; loader.loadFromUrl(parts[ind]);}; var remove_part
= function(ind) { for (var i=0; i<parts_meshes[ind].length; i++) { theScene.removeChild(parts_meshes[ind][i]); } viewer.replaceScene(theScene); };viewer.setParameter('ModelColor', '#FF0000'); viewer.setParameter('BackgroundColor1',
'#E5D7BA'); viewer.setParameter('BackgroundColor2',
'#383840'); viewer.setParameter('Renderer', 'webgl'); viewer.init(); viewer.update();
</script>
<p>Редуктор<br><input
type="checkbox" onclick="if(this.checked) {numOfLoaded=0; load_part(numOfLoaded); } else {numOfLoaded=0; remove_part(numOfLoaded); }">Крышка</input><br> <input
type="checkbox" onclick="if(this.checked) {numOfLoaded=1; load_part(numOfLoaded); } else {numOfLoaded=1; remove_part(numOfLoaded); }">Корпус</input><br><input
type="checkbox" onclick="if(this.checked) {numOfLoaded=2; load_part(numOfLoaded); } else {numOfLoaded=2; remove_part(numOfLoaded); }">Двигатель</input><br><input
type="checkbox" onclick="if(this.checked) {numOfLoaded=3; load_part(numOfLoaded); } else {numOfLoaded=3; remove_part(numOfLoaded); }">Передача</input><br> </BODY>
</HTML>
листинг 2
Исходный код 3D-сборки «Редуктор» и элементов дерева построения
рис. 2 Визуализация твердотельной сборки «Редуктор» в
авторском курсе «Инженерная и компьютерная графика»
Babel3D Online Viewer и A360 Online Viewer являются только
сервисами, предоставляющие услуги. На сайте Babel3D можно зарегистрироваться и
бесплатно конвертировать, и просматривать через интернет файлы (предоставляемый
объем пространства 100МБ) в просмоторщике, есть
функции установки плоскости сечения, постановки размеров, однако дерево
построения некорректно отображает текст кириллических названий сборки/детали
(рис. 2).
рис. 2 Визуализация твердотельной сборки «Редуктор» в
Babel3D Online Viewer
Компания Autodesk предоставляет возможность создать учетную запись
на сайте, чтобы проектные файлы можно было просматривать в online-режиме,
однако дерево построения также некорректно отображает текст кириллических
названий сборки/детали (рис. 3).
рис. 3 Визуализация твердотельной сборки «Редуктор» в A360
Online Viewer
Исследование форматов
представления твердотельных сборок/деталей показало, что выделены форматы для
САПР такие, как STEP, A3D/M3D [20], SAT, IGS, X_T, JT, STL и форматы для компьютерного
моделирования – 3DS, VRML, OBJ+MTL, STL. Отличие их заключается в том, что в
САПР требуется дерево сборки/детали с привязкой к графическим объектам, а в
системах Blender, 3DS Max
[21] и подобных требуется графический объект как единое целое (неделимое),
состоящее из кривых плоскостей (meshes). Таким
образом, имеется принципиальное различие в визуализации сборки/издели в САПР и графических пакетах. В таблице 1 приведена
характеристика форматов 3DS, VRML, STL, OBJ+MTL, STEP, A3D/M3D и JT.
Таблица 1: Характеристика
форматов инженерной и компьютерной графики
Название формата |
Хранит дерево построения сборки/детали с
наименованием элементов на русском языке |
Хранит дерево построения сборки/детали с
наименованием элементов латинскими буквами |
Хранит дерево построения сборки/детали без
наименования элементов |
Хранит список слоев (элементов) сборки/детали без
наименования |
Хранит неделимую модель сборки/детали одного цвета |
Хранит неделимую модель сборки/детали в цвете |
3DS |
нет |
нет |
нет |
да |
нет |
нет |
VRML |
нет |
нет |
да |
нет |
нет |
нет |
STL |
нет |
нет |
нет |
нет |
да |
нет |
OBJ+MTL |
нет |
нет |
нет |
нет |
нет |
да |
STEP |
да |
нет |
нет |
нет |
нет |
нет |
A3D/M3D |
да |
нет |
нет |
нет |
нет |
нет |
JT |
нет |
да |
нет |
нет |
нет |
нет |
Инструмент CADExchanger является одним из мощных средств конвертации
форматов САПР, поддерживающим импортирование файлов в форматах: IGS, STEP, SAT,
X_T, STL, BRP, JT и экспортирование файлов в форматы: IGS, STEP, SAT, X_T, STL,
BRP, JT, VRML, X3D, поддерживающий как графический пользовательский интерфейс
(GUI), так и командную строку.
Авторский
универсальный инструмент извлечения текстового описания твердотельной модели
детали и сборки из САПР КОМПАС-3D [22] обеспечивает автоматизированное создание
справочника к сборке/детали, содержащего дерево построения и проектного
описания – какие операции были выполнены, чтобы сделать сборку/деталь.
Инструмент разработан на языке C#, взаимодействует с программным интерфейсом
КОМПАС-3D – KOMPAS.Application.5. Справочная информация о сборке/детали
генерируется автоматически из готовых справочных систем помощи КОМПАС-3D с
помощью функции Add и структур ksPart,
Params SDK КОМПАС-3D и может быть сохранена в файле
XML-формата для веб-систем.
На рис. 4 представлен
пользовательский интерфейс инструмента на примере «Редуктор».
рис. 4 Текстовое описание сборки «Редуктор» в
авторском инструменте
В листинге 3
представлен фрагмент XML-описания сборки «Редуктор».
<Model
CType="17" CNodes="7523"
CAssoc="23" CAggr="29">
<NodeTypeList>
<NodeType
Id="0" Name="Отрезок">
<Description>Позволяет построить произвольно
расположенный отрезок.
Для вызова команды нажмите кнопку
Отрезок на инструментальной панели Геометрия.</Description>
<Params />
</NodeType>
<NodeType
Id="1" Name="Дуга">
<Description>Позволяет построить одну или несколько
произвольных дуг окружности.
Для вызова команды нажмите кнопку Дуга
на инструментальной панели Геометрия.</Description>
<Params />
</NodeType>
<NodeType
Id="2" Name="Эскиз">
<Description>Перед созданием эскиза основания выделите в
Дереве модели нужную плоскость.
Чтобы создать эскиз в выделенной
плоскости, вызовите команду Операции — Эскиз или нажмите кнопку Эскиз на панели
Текущее состояние. Команду Эскиз можно также вызвать из контекстного меню.
В Дереве модели появится пиктограмма
нового эскиза, отмеченная «замком», а кнопка Эскиз останется нажатой. Это
свидетельствует о том, что система находится в режиме редактирования эскиза.
Когда создание эскиза закончено,
необходимо вернуться в режим трехмерных построений.
Для этого вызовите из контекстного меню
команду Эскиз или отожмите кнопку Эскиз на Панели управления.
Система перейдет в режим трехмерных
построений.
В Дереве модели появится пиктограмма
нового эскиза. Она будет выделена цветом.
Эскиз будет подсвечен в окне
модели.</Description>
<Params />
листинг 3
Исходный код твердотельной сборки «Редуктор» и элементов дерева построения
Модель «Редуктор»
содержит 7523 элемента: параметры, эскизы, детали и сборка, 23 ассоциативной
связи, 29 иерархических связей [23].
Разработанная
авторами система внедрена в учебный процесс Ульяновского государственного
технического университета преподавания дисциплины «Инженерная и компьютерная
графика» кафедры «Вычислительная техника».
Исследование
выполнено при финансовой поддержке РФФИ в рамках научного проекта № 15-07-08268
а
Литература
1. JNetCAD.
http://www.johannes-raida.de/index.htm
2. JSC3D.
https://code.google.com/p/jsc3d/
3. Babel3D Online Viewer.
https://www.babel3d.com/
4. A360 Online Viewer.
http://www.autodesk.ru/
5. http://www.plm.automation.siemens.com/en_us/products/teamcenter/plm-platform-capabilities/visualization/jt2go/downloads/index.shtml
6. https://en.wikipedia.org/wiki/Wavefront_.obj_file
7. https://en.wikipedia.org/wiki/.3ds
8. https://en.wikipedia.org/wiki/STL_(file_format)
9. https://ru.wikipedia.org/wiki/JSON
10. https://ru.wikipedia.org/wiki/WebGL
11. STEP.
https://en.wikipedia.org/wiki/ISO_10303-21
12. IGS.
https://ru.wikipedia.org/wiki/IGES
13. SAT. https://en.wikipedia.org/wiki/ACIS
14. X_T.
https://ru.wikipedia.org/wiki/Parasolid
15. VRML.
https://en.wikipedia.org/wiki/VRML
16. CADExchanger.
http://www.cadexchanger.com/
17. FreeCAD.
https://ru.wikipedia.org/wiki/FreeCAD_(Juergen_Riegel%27s)
18. https://code.google.com/p/jsc3d/wiki/Applications
19. Blender.
https://ru.wikipedia.org/wiki/Blender
20. http://ascon.ru
21. http://www.autodesk.ru/
22. Свидетельство о государственной регистрации программы
для ЭВМ № 2015616393. Автоматическое построение модели предметной области САПР
на основе детали из КОМПАС-3D / Афанасьев
А.Н., Войт Н.Н., Канев Д.С.; заявитель и правообладатель Ульян. гос. тех. ун-т. - № 2015613505; заявл.
24.04.2015;
за-регистр. 09.06.2015 г. – Москва,
Роспатент, 2015.
23. Войт Н.Н., Афанасьев А.Н. Разработка алгоритмического,
методического и информационного обеспечения АОС для САПР КОМПАС-ЗD // Вестник УлГТУ. -2005. -№ 3. -С. 50-56.