Разработка и исследование средств извлечения из САПР КОМПАС-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.

 

 



[1] Исследование выполнено при финансовой поддержке РФФИ в рамках научного проекта № 15-07-08268 а