Если ты помнишь лихие девяностые и золотые нулевые, то легко назовешь основные причины, по которым мы (окей, не мы, какие-то другие, плохие парни :)) не покупали никакого лицензионного софта. Текстовый процессор за десятки, а то и сотни долларов. Ребята, вы серьезно? Игра за тридцать пять долларов в стране, где сто долларов считаются очень существенной суммой, а медсестра в больнице может официально в месяц получать сто пятьдесят долларов? Среда разработки за пару сотен вечнозеленых? Спасибо, русские программисты найдут способ программировать актуальный софт, и вовсе не на Free Pascal.
Постепенно все начало меняться. Появились дешевые среды разработки, стали доступными их фриварные варианты. Кое-что стало вообще бесплатным — ты же помнишь, что mail-клиент, GPS- навигаторы и переводчики когда-то стоили весьма существенных денег? По системе SaaS мощные графические редакторы стали доступны для любительского использования.
Что же касается сферы САПР, то даже сейчас, в 2018-м, проблема доступности для подобных продуктов очень остра. Да и не только доступности. Различные форматы 3D-данных, дорогие лицензии САПР-систем, ограниченная возможность совместной работы всех пользователей со всеми данными, потеря данных при конвертировании, отсутствие одновременного доступа к данным — со всеми этими трудностями сталкиваются пользователи САПР-систем. Решить все эти проблемы призван CAD Exchanger, программный продукт российской компании КАДЭКС. Чтобы лучше познакомить читателей с историей этого сервиса, журнал «Хакер» провел интервью с основателем Романом Лыгиным и Рамилем Гасановым, старшим инженером по техническому маркетингу.
Досье
КАДЭКС — российская компания из Нижнего Новгорода, основанная в 2014 году. Главные продукты компании — набор средств разработки инженерных приложений CAD Exchanger SDK и приложение для конечных пользователей CAD Exchanger GUI.
CAD Exchanger SDK используется в десятках приложений из области CAD/CAM/CAE (англ. Computer Aided Design, Computer Aided Manufacturing, Computer Aided Engineering), в том числе в Altium Designer, Simlab Composer, Vectorcam, а также во внутренних приложениях Fujitsu. Более 30 тысяч инженеров из 55+ стран используют CAD Exchanger GUI для визуализации и конвертации трехмерных данных. В том числе такие клиенты, как Nokia, Philips, JVC, Mitsubishi Electric, General Electric Oil & Gas, Stanley Black & Decker, OMRON, Magna, FANUC.
В августе 2018 года КАДЭКС планирует анонсировать запуск облачного сервиса, который на данный момент находится в стадии бета-тестирования. В тестировании уже приняли участие больше двух тысяч человек. Кроме продуктового направления, компания предлагает услуги по разработке ПО «под ключ», профилированию и улучшению производительности существующего ПО клиента и консультационные услуги в области CAD/CAM/CAE.
История компании от основателя
Пожалуй, это будет первый публичный (в смысле на широкую публику) рассказ о том, как вообще начинался наш проект CAD Exchanger. Какими-то фрагментами этой истории мы делимся с нашими новыми сотрудниками в их первый день работы (когда устраиваем знакомство всей командой) или с клиентами на первых деловых встречах в рамках обзора компании. Наша история — это не история обособившегося подразделения крупной компании, не история исхода какой-то «группы несогласных с политикой руководства», не история вливания энной суммы каким-то матерым предпринимателем в какой-то айтишный проект, развиваемый волосатыми программистами-энтузиастами.
Началось все в далеком 1997 году, когда я, еще студент Нижегородского университета, пришел работать программистом в филиал французской IT-компании Matra Datavision. Ветераны САПР-индустрии, возможно, еще помнят их программные продукты Euclid 3 и Euclid Quantum. Мои первые задачи были связаны с проблемами обмена 3D-данными между геометрическим ядром (тогда оно называлось CAS.CADE, позднее его переименовали в Open CASCADE после публикации его исходников) и внешними форматами (IGES, STEP и другими). Это было сложно и интересно и стало моей «первой любовью» в профессии.
Спустя много лет, когда я уже работал в филиале американской компании Intel, моей второй страстью стали параллельные вычисления. Поскольку позиция в Intel была «манагерской» (управленческой, на всякий случай) и не подразумевала реальную разработку кода, то, для того чтобы не атрофировались технические «мышцы», я просто вел какие-то хобби-разработки по вечерам, используя как Intel Threading Building Blocks (библиотеку для параллельного программирования), так и Open CASCADE. Обе библиотеки уже были доступны в Open Source к тому моменту. Эти две страсти (обмен 3D-данными и параллельные вычисления) и привели к появлению CAD Exchanger.
Это было в конце нулевых (2009–2010), и я с некоторым удивлением обнаружил, что проблемы обмена 3D-данными даже спустя много лет после первого знакомства с этой областью оставались актуальными. Пользователи по-прежнему часто жаловались на посредственное качество конвертации между САПР-приложениями. В то же время добавились проблемы со скоростью обмена, так как сложность 3D-данных начала резко расти после появления 64-битной архитектуры. А поскольку добавление параллелизма в САПР (в частности, в его часть CAD, Computer Aided Design) очень нетривиально, то и существующее ПО не справлялось. CAD Exchanger же с самого начала внедрял параллельные вычисления и поэтому нередко обгонял конкурентов. Ну и качество сразу было на высоте.
Первые версии CAD Exchanger были очень благожелательно приняты пользователями. Пошли первые запросы и пожелания. Тогда еще не было коммерческих версий, и все это держалось на чистом энтузиазме с моей стороны. Но проект уже накладывал определенные обязательства и требовал времени, так что приходилось работать по всем вечерам и выходным. Но это была настоящая страсть, и я не чувствовал усталости. Когда появились серьезные пользователи, готовые приобретать коммерческие лицензии, пришлось превратить это в (микро)бизнес, зарегистрировавшись в качестве индивидуального предпринимателя.
Забавно было наблюдать, как росла нагрузка и на основной работе в Intel (я тогда возглавил команду, связанную с распределенными параллельными вычислениями), и в личном проекте, и приходилось прикладывать новые усилия, чтобы быть успешным и там и здесь. Однако в какой-то момент рост клиентской базы CAD Exchanger потребовал сделать выбор в пользу либо жирной синицы в руках, либо щуплого журавля в небе. Я расстался с высокооплачиваемой работой и, еще больше засучив рукава, взялся за свое дело. Тогда была основана компания (сентябрь 2014-го) и наняты первые сотрудники.
Наверное, занятно начинать стартап в двадцать лет, не боясь рискнуть парой лет своей жизни и чужими (венчурными) деньгами. Когда же тебе под сорок и требуется надежно обеспечивать семью, выплачивать ипотечный кредит, имея за спиной только собственные сбережения, то риск оценивается несколько иначе. Так что решение в пользу журавля было, мягко говоря, непростым. Начинали мы как вполне себе настоящий стартап, которые иногда показывают в кино. Только вместо традиционного в таких случаях гаража была моя старая трехкомнатная квартира, из которой семья уже переехала. Денег на аренду офиса (особенно гламурного, как принято у хипстеров) не было, так что расселись мы по разным комнатам в квартире. Зато обедали все вместе, теснясь на шестиметровой кухне, обсуждая и технические, и бытовые проблемы. В гардеробной организовали серверную, что было особым шармом, по воспоминаниям старожилов.
Компании скоро будет четыре года, мы уже выросли в несколько раз, переехали в бизнес-центр, и компания может больше вкладывать в оборудование, комфорт и соцпакет для сотрудников, но та атмосфера работы плечом к плечу и рационального расхода заработанных средств остается и по сей день.
Как говорил Стив Джобс, маленькая компания зависит от выдающихся людей гораздо сильнее, чем большая. Поэтому то, что мы не просто выжили первые несколько лет (когда умирают 90% стартапов), но и продолжаем развиваться, я объясняю той командой, которая сформировалась в первые несколько месяцев и сейчас составляет мой «штаб».
Многие ребята проявляют потрясающую настойчивость и изобретательность при решении проблем. В плане техники они давно обогнали меня, и я с удовольствием учусь у них, когда есть возможность. В результате мозговых штурмов часто находятся нетривиальные технические решения. На два из них были оформлены патенты (зарегистрированы в Роспатенте), и сейчас эти решения используются в ключевых алгоритмах продукта.
В общем, сохраняя задорный дух стартапа, но больше вкладывая в продукт и продвижение, а не презентации для венчурных инвесторов, нам удается завоевывать свое место под солнцем в схватке с устоявшимися конкурентами. К достижениям бизнеса часто принято относить звучные имена клиентов. Давайте и я попробую: General Electric, JVC, Philips, Magna, Nokia, OMRON, Altium, FANUC, Fujitsu, SENER. В России у нас пока один, но тоже яркий клиент — «Северсталь».
Как говорится, чужие шишки не болят, поэтому мы набивали свои. Были ошибки и при найме (и приходилось расставаться с кем-то через несколько месяцев или недель), и при попытках взяться за сложные R&D-проекты, когда, не рассчитав свои силы, мы останавливали проект через много месяцев, понеся финансовые потери и упустив возможность сделать что-то еще. Про шишки, заработанные с нашими госорганами (ФНС и ПФР), или нюансы валютного законодательства (которые при неаккуратном обращении могут нанести серьезный ущерб) тут, наверное, упоминать не стоит. Их уж точно каждый должен набить сам. 🙂
В общем, вот такой был наш путь появления. А теперь давайте поговорим о продукте.
Что умеет CAD Exchanger
Какие именно САПР-системы и 3D-форматы поддерживаются?
На данный момент у нас поддерживаются все ключевые форматы 3D-данных: IGES, STEP, JT, ACIS, Parasolid, Solidworks, STL, OBJ, Rhino, BRep, VRML, X3D и IFC. Особо гордимся поддержкой JT. Она реализована очень эффективно. Нам даже посчастливилось общаться с одним из авторов этого формата, который был очень впечатлен тем, насколько быстро и качественно мы работаем с JT.
Благодаря поддержке наиболее востребованных форматов данных мы можем работать с большинством САПР-систем. Среди них SolidWorks, Inventor, CATIA, Pro/E, Microstation и другие из области механического САПР. С поддержкой IFC мы стали ближе к Revit, SmartPlant 3D, Tekla и другим САПР, используемым в секторе архитектуры и строительства.
Можно конвертировать из любого формата в любой или есть определенные ограничения? Если есть, то какие?
Основное ограничение связано со спецификой форматов. Существует два основных типа форматов геометрических данных: сеточные и граничные (B-Rep, от англ. Boundary Representation).
Сеточные представляют собой не что иное, как набор треугольников (или полигонов в общем случае). Представьте привычные нам модели, используемые в компьютерных играх. В САПР они используются для 3D-печати (STL, OBJ), фотореалистичного рендеринга, в VR (VRML, X3D), так как они более легковесны и обработка происходит быстрее.
Форматы B-Rep содержат в себе куда больше данных. Они состоят из точек, кривых и поверхностей, вершин, ребер, граней и других элементов. Эти форматы данных используются при проектировании разнообразных изделий, начиная от шариковой ручки и заканчивая самыми сложными: зданиями, автомобилями, самолетами, судами. Конвертация B-Rep-форматов в сеточные возможна, а вот сеточных форматов в B-Rep значительно труднее. Мы написали подробный пост на эту тему.
Также следует помнить, что из-за различных ограничений самих форматов иногда теряются данные. Например, при конвертации из STEP в ACIS будет теряться иерархия сборок и деталей, а при конвертации из OBJ или JT в STL — имена объектов или их цвета.
Как именно устроена совместная работа с данными? Можно «расшарить» документ для других пользователей, как, например, это сделано в Google Drive? Можно ли установить права доступа или же определить, какие именно пользователи могут работать с документом?
Вообще, переезд в облако был спровоцирован потребностью в совместной работе, поэтому «шеринг» (совместный доступ) стал одной из основных фишек нашего облачного продукта. Мы разделили доступ к данным на две категории: защищенный и публичный.
С помощью механизма защищенного доступа автор модели может предоставить доступ ограниченной группе лиц по email, причем можно позволить или запретить загрузку, комментирование и решеринг (то есть предоставление доступа другим пользователям). Мы старались максимально облегчить совместную работу с 3D-данными и сделать это таким образом, чтобы и «хардкорные» инженеры и управленцы, ни разу не использовавшие САПР-системы, могли работать в одном окне «на равных». Поэтому управлять доступом к данным не сложнее, чем сделать репост «ВКонтакте». В качестве примера можно привести фрилансера, который хочет поделиться результатами своей работы с заказчиком. Он добавляет его с доступом view only, чтобы заказчик смог убедиться в качестве выполненной работы (но не смог скачать ее). Если все ОK, то фрилансер получает свое вознаграждение и разрешает загрузку данных. Заказчик не покупает кота в мешке, а фрилансер не рискует своей интеллектуальной собственностью. Так CAD Exchanger Cloud помогает защищать интересы обеих сторон.
К публичным данным доступ есть у всех желающих. Автор просто генерирует обычную ссылку, которую он может отправить кому угодно или опубликовать на странице в фейсбуке. Все, кто перейдет по ссылке, увидят 3D-модель, смогут повращать и приблизить ее, посмотреть продуктовую структуру (иерархию сборок и деталей), выполнить сечения и так далее. Если есть необходимость, можно защитить доступ паролем. Кроме этого, можно встроить 3D-просмотр на любую веб-страницу. Работает это точно так же, как и встроенные видео из YouTube. Вы получаете тег <iframe>
, который можно вставить в любой HTML-код. Делается это легко и быстро, любой, кто когда-либо сталкивался с вебом, способен выполнить это, никаких специфических знаний не требуется.
Хотелось бы больше узнать об анализе данных. Какие именно инструменты анализа 3D-моделей доступны в вашем продукте?
В настоящий момент с точки зрения инженерного анализа мы предоставляем в нашем облачном сервисе относительно простые инструменты, необходимые для проверки (валидации) дизайна. Можно «рассечь» 3D-модель, чтобы посмотреть на ее «внутренности» (например, невидимые детали), можно выполнить линейные измерения от точки до точки, получить информацию об объеме, площади поверхности или ограничивающем параллелепипеде. В будущем добавится возможность выполнять большее количество измерений (от грани к грани, от ребра к ребру), можно будет раздвинуть детали в сборке, как это доступно в нашем десктопном продукте. Планов добавлять что-то более сложное из области инженерной симуляции нет. Это не наш основной фокус.
Посредством чего достигается коррекция ошибок на лету? И вообще о каких ошибках идет речь и почему они возникают?
Как правило, есть два основных типа проблем, с которыми приходится иметь дело при конвертации 3D-данных. Первый тип относится именно к ошибкам, когда записывающая САПР-система из-за внутренних технических ошибок или своих алгоритмических особенностей формирует файл, не соответствующий требованиям формата. Например, (само)пересечение контуров граней, несогласованность представлений 2D- и 3D-кривых ребер, разрыв между ребрами больше указанного допуска. Второй тип проблем относится к расхождениям между B-Rep-представлениями, используемыми записывающей системой, и форматом. Часто формат допускает различные способы представления одной и той же фигуры. Например, описание ребра должно содержать описание своих 3D- и/или 2D-кривых, но не обязано содержать оба вида. Замкнутая грань (например, на цилиндрической поверхности) может содержать единственный контур и ребро-шов, а может содержать два несвязных контура. Контур грани на поверхности с особой точкой (такой как вершина конуса) может содержать вырожденное ребро (представленное единственной вершиной в 3D-пространстве), а может и не содержать.
Все подобные неоднозначности приходится учитывать и обрабатывать «на лету». В сложных моделях часто именно «лечение» занимает львиную долю времени. Поэтому в свое время мы разработали эффективный метод обработки B-Rep-тел, использующий параллельные вычисления и позволяющий значительно ускорять процесс такой обработки, что помогает CAD Exchanger обходить конкурентов. На эту тему мы даже получили патент.
Вы обещаете эффективное использование многоядерных систем. Можно подробнее, за счет чего оно достигается? Если, например, установить несколько разных САПР-систем (чтобы была поддержка необходимых форматов), неужели производительность при работе через браузер будет выше, чем производительность при работе напрямую с САПР?
А это предмет нашего второго патента. Мы запатентовали эффективный метод применения параллельных вычислений в процессе конвертации сложных форматов за счет применения параллельных вычислений на разных уровнях, что позволило значительно ускорить конвертацию данных на многоядерных системах. Смысл в том, что 3D-данные крайне тяжеловесны. Модель реального судна (со всеми необходимыми коммуникациями) может «весить» 2–4 Гбайт даже в компактном формате. Без использования параллельных вычислений ее загрузка в приложении может занять несколько часов, что для предприятий неприемлемо. С помощью наших алгоритмов CAD Exchanger способен эффективно масштабироваться на 4–8 и более потоков, что позволяет ускорить трудоемкие вычислительные операции в 15 раз.
Теперь о производительности. Это спорный вопрос, все упирается в доступные вычислительные мощности. Конечно, можно установить множество САПР-систем, отдавать от двух до девяти тысяч долларов в год за лицензию, вооружиться до зубов топовым железом, и все будет летать. Но вместо этого можно отдать 25 долларов в месяц и работать с обычного лэптопа. Для многих пользователей этот вариант значительно привлекательнее.
Поскольку интервью у нас в том числе и для технических специалистов, наверняка нашим читателям будет интересно, какие средства вы используете для отображения 3D-моделей в браузере. Что «под капотом» вашей системы?
Для отображения 3D-данных в браузере мы используем стандартный WebGL и библиотеку на его основе three.js. С ее помощью мы достаточно быстро смогли добиться желаемой визуализации, сопоставимой по качеству и скорости с нашим десктопным приложением. В случае если возможностей библиотеки нам не хватало, мы «допиливали» модули своими руками. Например, механизм сечения был реализован самостоятельно, так как сечения «из коробки» нас не удовлетворяли.
Представим, что я — потенциальный клиент. Сейчас у меня установлен AutoCAD. Есть необходимость работы, скажем, с форматами IGES, STEP и ACIS. Все эти форматы поддерживает AutoCAD, причем поддерживается как импорт, так и экспорт. Есть ли смысл воспользоваться вашим продуктом? Ведь, по сути, все, что мне нужно, поддерживает AutoCAD, плюс также есть бесплатные утилиты для просмотра данных форматов, которые при желании можно установить, если нужен только просмотр.
Совсем недавно один из пользователей раскрыл нам глаза на один из потенциальных сценариев использования, о котором мы раньше не задумывались.
Современный мир САПР семимильными шагами двигается в сторону распространения софта по подписке. Это повышает доступность софта здесь и сейчас, но негативно сказывается на ценнике в долгосрочной перспективе. Поэтому многие отказываются переходить на подписную модель и довольствуются уже купленными лицензиями старых версий того же AutoCAD’a. Но мир не стоит на месте, на сегодняшний день существует 27 версий формата ACIS, причем вендоры не балуют обратной совместимостью, то есть, скорее всего, в старом софте вы уже не сможете открыть более новые версии формата. CAD Exchanger поддерживает все версии ACIS и может с помощью конвертации «откатить» версию формата (то есть сохранить в более старой версии), чтобы открыть ее в устаревшем AutoCAD.
Но этот пример скорее синтетический. Как правило, над продуктами работают множество команд. У каждой из команд существует исторически сложившийся стек инструментов, которые очень тяжело изменить. Представьте, сколько сил и времени уйдет, чтобы переучить десять инженеров пользоваться софтом, отличающимся от привычного? А пятьдесят инженеров? Чтобы обеспечить совместную работу распределенных команд, куда проще, быстрее и дешевле будет проектировать в привычной среде и использовать CAD Exchanger для обмена данными.
Еще один аргумент в пользу CAD Exchanger — это качество конвертации. Мы периодически получаем от инженеров-ветеранов отзывы, что CAD Exchanger способен конвертировать данные лучше и быстрее, чем это делают некоторые САПР-системы с многолетней историей. Для нас, конечно, большая честь получать такие отзывы. Возможно, дело в том, что для САПР-вендоров работа с внешними данными — это несколько второстепенный вопрос (так как основные силы бросаются на разработку специфической функциональности). В то же время создать качественный импорт и экспорт — это крайне сложный и затратный процесс, требующий инвестиции в несколько десятков человеко-лет. Для нас же это направление — основной фокус, и мы делаем это хорошо. За что CAD Exchanger и получает такие отзывы. Некоторые из них можно посмотреть на нашем сайте.
Планируете ли вы реализовать API для своего сервиса? Наверняка он будет интересен разработчикам.
К нашему удивлению, с момента, когда мы начали разрабатывать наше облако и консультироваться с текущими клиентами, каким оно должно быть, мы начали испытывать достаточно большой поток запросов и на облачный API, а не только SaaS как таковой. На рынке существует устойчивый тренд движения в сторону облака. Многие разрабатывают собственные облачные приложения для решения инженерных задач: расчетов, анализа, симуляции физических процессов. Это логично, потому что такие задачи невероятно ресурсоемкие и требуют дорогого железа, а облачная инфраструктура позволяет значительно снизить требования к нему, позволяя конечным пользователям работать на обычных лэптопах.
Это делает облачные сервисы очень перспективными, отсюда и рост интереса со стороны разработчиков. При этом каждый из новых инженерных облачных продуктов будет испытывать те же трудности конвертации, о которых мы говорили выше. В ближайшие несколько недель мы сможем обеспечивать разработчиков облачным API. Основная функциональность будет заключаться в возможности импорта 3D-модели в наш «движок» и конвертации в необходимый формат данных. Кроме этого, мы предоставим более мощный 3D-вьювер, более гибкий по сравнению с тем, что можно использовать через iframe.
Чем отличается тариф Light от Pro? Какие ограничения есть у тарифа Free?
Различия будут касаться доступного объема хранилища, максимально допустимого размера файла и количества конвертаций в месяц. В будущем список будет изменяться в зависимости от пользовательского спроса.
Вместо заключения
Конечно, кроме CAD Exchanger, есть и другие решения. Можно, например, купить дополнительные лицензии на САПР-системы, чтобы обеспечить работу со всеми необходимыми форматами трехмерных данных. К недостаткам этого решения можно отнести следующие:
- максимальные финансовые затраты (нужно учитывать не только программное обеспечение, но и модернизацию железа);
- дополнительные IT-расходы на администрирование лицензий;
- риск несовместимости версий;
- отсутствие одновременного доступа к общим данным.
Очевидно, что данное решение многим не понравится, хотя бы из-за существенных финансовых затрат.
Есть альтернативное решение — приобрести лицензию на настольные конвертеры. То есть вы не покупаете САПР, вы платите за конвертер, предназначенный для работы не в облаке, а на настольном компьютере. Недостатки у этого способа, в принципе, такие же, разве что финансовые затраты будут ниже — вы же приобретаете не всю САПР, а только конвертеры.
Решение CAD Exchanger предлагает следующие преимущества:
- минимальные финансовые затраты;
- отсутствие IT-затрат на администрирование лицензий и программного обеспечения;
- одновременный доступ к общим данным;
- качественная и быстрая конвертация различных форматов трехмерных данных;
- удобство работы — через браузер. Нет необходимости устанавливать что-либо или заботиться о совместимости версий.