Как писать программы в nx

Программисты станков с ЧПУ часто создают новый проект для обработки детали используя стандартные шаблоны NX CAM. Каждый раз приходится переназначать настройки операции, предлагаемые по умолчанию. Это сокращает производительность инженеров программистов и способствует необоснованному применению различных стратегий обработки для одних и тех же типовых элементов.

Разберёмся, как этого избежать, и как научиться использовать весь потенциал NX.

Функциональные возможности NX CAM

Для достижения требуемого эффекта необходимо:

Шаг 1: Использовать Технические условия (PMI*), назначенные конструктором или технологом в 3D модели;

Шаг 2: Избавиться от промежуточных 3D моделей;

Шаг 3: Использовать автоматическое распознавание типовых конструкторско-технологических элементов (FBM**), и предпочтительную технологию их обработки;

Шаг 4: Настроить свой пользовательский интерфейс и библиотеки обработки;

Шаг 5: Использовать встроенный симулятор на основе G-кода;

Пример написания управляющей программы в NX

* Product and Manufacturing Information

** Feature Based Machining

Шаг 1: Технические условия (PMI)

Документирование изделия в трехмерном пространстве позволяет задавать более полную информацию, чем это возможно на двумерном чертеже. Идея нанесения технических условий и конструкторской информации (допуски, базы, технические требования, шероховатости и т. д.) на 3D модель называется «PMI — Product and Manufacturing Information». Для программиста эта информация не менее важна, так как использование PMI обеспечивает автоматическую генерацию управляющих программ с учетом всех требований. Такой подход сокращает потерю данных при передаче цифрового двойника изделия из одной системы в другую, если на предприятии используются различные САПР, сокращает количество ошибок и упрощает производственный процесс.

Шаг 2: Избавиться от промежуточных 3D моделей

Достаточно часто на предприятиях используется различное программное обеспечение. Интеграция программных продуктов различных поставщиков обеспечивается средствами трансляции данных из одного формата в другой, что приводит к потере информации. Приходится создавать промежуточные модели для различных технологических операций и описания геометрии заготовки.

Использование синхронного моделирования позволяет быстро подготовить модель к обработке: редактировать любое твердое тело независимо от того, как оно было создано, например, вы можете выделить ребро и перемещать его по мере необходимости. Система понимает все связанные элементы, такие как скругления и поверхности

Для достижения высокого уровня автоматизации CAM рекомендуется использовать уникальное преимущество Siemens PLM Software — технологию «мастер модели» и наличие интегрированного программного обеспечения NX, которое позволяет полностью ассоциативно работать с трехмерной моделью, учитывая все изменения и передавая информацию между приложениями NX без перевода данных.

Как быстро написать управляющую программу для ЧПУ в SIEMENS NX 8.5 CAM (Unigraphics)

Шаг 3: FBM — обработка на основе элементов

FBM — (Feature Based Machining) — технология на основе распознавания элементов, предназначенная для ускорения и упрощения написания управляющих программ. После определения элемента детали программа обработки на основе FBM выбирает и применяет шаблон наиболее подходящего процесса обработки для данного типа элемента. Технология FBM имеет более 70-ти типов предварительно настроенных элементов, и предусматривает процесс обучения, для распознавания нового элемента и назначения ему стратегии обработки. Распознанные элементы содержат информацию PMI. Данные PMI, присоединенные к распознанным элементам, могут использоваться для управления выбором метода обработки.

Клиенты компании Siemens PLM Software сообщают о сокращении времени программирования станков с ЧПУ до 80% при использовании технологии на основе распознавания элементов в программе NX. Пользователи также отмечают снижение количества ошибок, связанных с ручным программированием, например: выбор неправильного инструмента, неверный выбор отверстий для операций или выбор отсутствующих элементов. Такие ошибки, если их своевременно не идентифицировать, приводят к дополнительным расходам из-за повторной работы или отправки детали в брак.

Шаг 4: Настроить интерфейс и библиотеки обработки

Любой пользователь NX может настроить интерфейс и диалоговые окна операций по своему усмотрению, а затем сохранить компоновку. Компоновка, созданная пользователем, может в любой момент быть загружена. Таким образом, если NX используется несколько человек, то каждый из них может настроить и сохранить собственную компоновку («Роль») или использовать единый шаблон интерфейса на предприятии. Диалоговые окна операций NX CAM имею гибкую настройку отображения команд, позволяя пользователю убирать лишние или добавлять дополнительные параметры операции. Создавая уникальные диалоговые окна, можно добиться сокращения времени на настройку операции, а также использовать их в качестве шаблонов, в которых уже присутствуют требуемые настройки траектории и режимы резания.

Шаг 5: Использовать встроенный симулятор на основе G-кода

Симуляция на основе G-кода — это эффективный способ оптимизировать производство деталей. С помощью модуля симуляции NX CAM вы можете отследить перемещения компонентов станка и движение инструмента относительно детали. Этот важный функционал приводит к сокращению времени наладки станка, сокращению времени простоя станка и сокращению брака и поломки дорогостоящего оборудования.

Вывод

Сочетание возможностей Siemens NX позволяет снизить количество ошибок, ускорить процесс написания управляющих программ и ведет к повышению стандартизации.

Источник: connective-plm.com

Создание пользовательских прикладных подпрограмм для NX 8.5 с помощью Open API на примере библиотеки проектирования 3D-моделей колодок ГОСТ 12198-66

Иван Еремин
Аспирант кафедры компьютерных интеллектуальных технологий проектирования ВГТУ (Воронежский государственный технический университет). Ведущий инженер департамента продаж и технического сопровождения САПР, CSoft Воронеж

Введение

NX Siemens — одна из самых популярных CAD/CAM/CAE­систем. NX является мощным инструментом для проектирования трехмерных моделей и сборок, инженерного анализа механических систем, написания управляющих программ для станков с ЧПУ. Каждое предприятие сталкивается со специфическими задачами при проектировании изделий, поэтому почти во всех САПР присутствует механизм, с помощью которого пользователь может разрабатывать собственные встраиваемые в систему прикладные программные модули, решающие специализированные отраслевые задачи. К таким механизмам в NX относятся программирование с применением Open API NX [1].

Читайте также:
Установка программ на компьютер работа

NX Open API — это набор инструментов и технологий, посредством которых внешнее приложение может получить доступ к возможностям NX. NX Open API позволяет программным способом на основании рассчитанных параметров проектировать детали и сборки, а также выпускать документацию. Практически все возможности NX доступны с помощью NX Open API, однако имеется целый класс объектов, создание которых возможно только программным способом [1].

Использование функциональности Open API открывает перед пользователем расширенные возможности автоматизации моделирования и обработки 2D­ и 3D­объектов благодаря набору библиотек и подпрограмм, позволяющих внешнему (независимому) или внутреннему (интегрированному) приложению создавать модели в NX и получать доступ к их объектам для совершения различных операций [2].

Постановка технической задачи

На производстве перед конструктором часто возникает задача разработки ряда однотипных изделий, которые различаются только размерами (линейными или угловыми) или отдельными конструктивными элементами, при этом основа конструкции остается неизменной (например, колодки, подшипники, валы). Для автоматизации данного процесса создается математическая параметрическая модель класса конструктивно однородных изделий, на основании которой осуществляется формирование геометрической модели в соответствии с задаваемыми размерными параметрами.

При использовании прикладных библиотек конструктор запускает программу, рассчитанную на определенный класс изделий, и вводит требуемые размеры или выбирает необходимые параметры из базы данных. Программа создает 3D­модель детали, а конструктор оценивает ее и при необходимости вносит необходимые коррективы.

Разработка прикладной библиотеки для NX 8.5 на примере библиотеки проектирования колодок ГОСТ 12198­66

Для создания пользовательского приложения NX Open применяется среда разработки приложений Microsoft Visual Studio 2010. Для разработки приложений под NX 8.5 необходимо использовать .NET Framework 4. Обычно внутреннее приложение NX Open представляет собой построенную по определенным правилам динамическую библиотеку DLL, подгружаемую к процессу NX. Кроме того, имеется возможность создания внешнего приложения NX Open — обычного приложения Windows [1].

Создадим прикладную библиотеку, которая решает задачу построения 3D­модели колодок ГОСТ 12198­66. Сценарий работы модуля таков:

  1. Пользователь запускает NX 8.5, затем вызывает загрузки пользовательских подпрограмм с помощью сочетания клавиш Ctrl+U, в появившемся окне выбирает нужную библиотеку.
  2. Запускается главное интерфейсное окно программы (рис. 1).
  3. В окне пользователь должен указать в базе данных конкретную колодку с требуемыми размерами или самому ввести размеры колодки.
  4. Нажатием кнопки Построить получаем 3D­модель.

Рис. 1. Интерфейс программы

Рис. 1. Интерфейс программы

Рис. 2. Операция выдавливания

Рис. 2. Операция выдавливания

Далее следует описание основных моментов поэтапного создания пользовательской библиотеки под NX 8.5, разработанной с помощью API функций NX на языке C# в среде Visual Studio 2010.

Перед началом построения колодки необходимо создать новую 3D­модель. Для этого применяется функция theUFSession.Part.New( ). Она имеет три параметра: имя новой модели; модуль; тэг объекта.

Tag UFPart; // тэг объекта

string part_name = “Exterior ring”; // имя детали

int units = 2; // модуль

theUFSession.Part.New(part_name, units, out UFPart);

Основной функцией, которая используется при моделировании колодки, является операция выдавливания:

CreateExtruded (objarray1, angle, limit1, point1, direction1, FeatureSigns.Nullsign, out features1);

Рассматриваемая операция выдавливания имеет шесть параметров: объекты, участвующие в операции (objarray1); угол уклона (angle); расстояние (limit1); начальная точка (point1); направление выдавливания (direction1); булевы (FeatureSigns.Nullsign).

double[] direction1 = < 0.00, 0.00, 1.00 >; // направление

string angle = “0.0”; // угол

string[] limit1 = < “0”, “35”>; //расстояние

theUFSession.Modl.CreateExtruded(objarray1, angle, limit1, point1, direction1, FeatureSigns.Nullsign, out features1); // создание операции выдавливания

Результат операции выдавливания представлен на рис. 2.

В колодке имеются четыре отверстия под цилиндрическую цековку, для создания которых используется следующая функция:

theUFSession.Modl.CreateCBoreHole(point1, direction1, diametr1, depth1, diametr2, depth2, angle, face_li, face_t1, out feature_obj_id);

Рассматриваемая операция для создания отверстий имеет девять параметров: точка центра (point1); ориентация (direction1); диаметр (diametr1); глубина (depth1); диаметр цековки (diametr2); глубина цековки (depth2); угол при вершине (angle); грани для цековки (face_li, face_t1).

Кроме того, колодка содержит два простых отверстия. Их построение осуществляется с помощью такой функции:

theUFSession.Modl.CreateSimpleHole(point1, direction1, diametr1, depth1, angle, face_li1, face_t11, out feature_obj_id);

Рассматриваемая операция для создания отверстий имеет семь параметров: точка центра (point1); ориентация (direction1); диаметр (diametr1); глубина (depth1); угол при вершине (angle); грани для отверстия (face_li, face_t1). Результат операции построения отверстий приведен на рис. 3.

Рис. 3. Операция построения отверстий

Рис. 3. Операция построения отверстий

Рис. 4. Среда MS SQL Server Management Studio

Рис. 4. Среда MS SQL Server Management Studio

В связи с тем что ГОСТ 12198­66 содержит значительное количество колодок с различными параметрами, к приложению была подключена база данных. В качестве информационного обеспечения для разработанной подсистемы САПР служит база данных, реализованная под MS SQL Server (рис. 4). Пользователь имеет возможность не только вводить данные вручную, но и выбирать их из базы данных. Для повышения гибкости программного средства встроенная база данных имеет возможность редактирования.

Для связи приложения с базой данных используется компонент MS Visual Studio SqlConnection.

sqlConnection1.ConnectionString = “DataSource=HOME;Initial Catalog = podshipnik; Integrated Security=True”; // строка подключения

С помощью компонента DataGridView информация, которая содержится в таблицах базы данных, будет отображаться в приложении.

Заключение

Решена задача создания прикладных библиотек для NX 8.5 посредством NX Open API. Реализованы операции выдавливания, булевы операции, рассмотрено построение двух типов отверстий, организована работа с сетевой базой данных MS SQL Server. Создана прикладная библиотека, решающая актуальную техническую задачу: построение 3D­модели колодки ГОСТ 12198­66.

Данное приложение может использоваться на производстве, в научно­исследовательских институтах и в учебных заведениях. Применение данного программного продукта позволит снизить трудозатраты и время проектирования, а также повысить гибкость конструирования изделий, в которых используются колодки данного ГОСТа.

Читайте также:
Какой программой открыть диск

Список литературы

  1. Краснов М. Unigraphics для профессионалов. М.: ЛОРИ, 2004. 143 с.
  2. Куракин М. Повышение производительности работы с САПР // RM MAGAZINE. 2003. № 3.
  • NX
  • Visual Studio 2010
  • прикладная библиотека
  • операция выдавливания
  • конструктивные элементы
  • Open API
  • CSoft Воронеж

Источник: sapr.ru

Разработка приложений на Typescript с использованием Nx

В данной статье расскажу об использовании Nx для разработки веб приложений на Typescript.

Два года назад я написал статью на медиуме — Сборка Typescript приложения с помощью Webpack, где поделился своим решением сборки простого приложения на Typescript с помощью Webpack.

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

Проблемы собственных решений

Больше трех лет назад я устройся на работу в один небольшой фин. тех стартап Angular разработчиком. И по мере выполнения разных задач, появилась потребность в некоем решении, которое удовлетворяло бы следующим требованиям:

  • Язык разработки Typescript;
  • Livereload при внесении изменений;
  • Есть «prod» сборка, которая оптимизирует исходный код.

Одним словом все то, что есть в современных JS фреймворках.

Я просмотрел несколько проектов на github’е, но ни одно решение мне не подошло, так как либо они уже не поддерживались, либо были слишком усложнены. Мне же нужно было что-то простое.

Я был знаком с webpack и мне не составило труда набросать несколько модулей и собрать сборку, которая удовлетворяла выше описанным требованиям.

Решение отлично работало, за одним только исключением, что его трудно было обновлять. Из-за того, что это был просто шаблон приложения, который копировался и изменялся, то явного желания обновлять 5 — 10 созданных проектов не было.

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

Примерно в тоже время, я начал использовать Nx для своих Angular проектов.

Информация о Nx

Nx это набор утилит для создания и управления монорепозиторием. С Nx можно ознакомиться в официальной документации.

Так как статья посвящена разработке typescript приложений, интересен следующий раздел — Nx и TypeScript.

В свое время, часть Angular Team создает свою компанию Nrwl, в которой начинают делать свой инструментарий для упрощения разработки приложений на Angular. Консультации компаний из списка Fortune 500 позволили расширить инструментарий и включить в него не только Angular, а также React, Vue и чистый Typescript.

Если вы предпочитаете больше смотреть, чем читать, то команда Nx регулярно выпускает ролики с обзором и настройкой текущего инструментария. Например, ролик посвященный первой настройке приложения:

Вот несколько особенностей Nx:

  • вся мощь typescript вместе с eslint;
  • монорепозиторий, который позволяет разрабатывать несколько приложений с единой кодовой базой;
  • генераторы — семейство консольных команд для упрощения создания новых файлов и решений, с возможностью создания собственных шаблонов и команд;
  • конфигурируемые сборки — например, версии для релиза с оптимизацией исходного кода;
  • миграции — при изменении и обновлении системных зависимостей, Nx самостоятельно поправит конфигурационные файлы и приведет все данные к требуемому виду;
  • возможность использовать все современные фреймворки React, Angular, Vue и Svetle.

Полный список можно посмотреть в официальной документации по Nx.

Другими словами, NX — набор утилит, который все делает за вас, и делает это хорошо, но в разумных пределах, конечно.

Предварительная настройка

Для работы с nx вам потребуется установленная NodeJS и один из менеджеров пакетов, таких как npm или yarn .

Перед использованием nx, можно установить nx cli глобально:

yarn global add /cli

Это позволит запускать команды nx без менеджеров пакетов (yarn или npm):

nx g lib mylib

Иначе придется писать:

yarn nx g lib mylib

Создание workspace для typescript приложения

Для того чтобы создать новый Nx workspace необходимо запустить команду:

Если вы используете yarn , то тогда можете запустить следующую команду:

yarn create nx-workspace —package-manager=yarn

Запуск команды создания Nx workspace

Введем название workspace — boobs :

Создание boobs Nx workspace

При при создании workspace можно выбрать тип проекта ( angular , react , node или typescript ). Данная опция определяет какие зависимости будут включены в package.json.

В качестве проекта выберем ts :

Выбор типа проекта Nx

Откажемся от использования облака:

Опция выбора использования Nx Cloud

Если вы не боитесь стать пупыркой, можете попробовать использовать облако.

Далее Nx будет устанавливать необходимые зависимости:

Nx установил зависимости, где сразу предложил пройти туториал 🙂

Перейдем в папку с созданным проектом:

cd boobs

Посмотрим, что создал Nx, выполнив команду ls :

Но так как из консоли ничего непонятно, откроем проект в любимой IDE:

JetBrains, к моему большому сожалению, не хочет подогнать предоставить мне бесплатную версию. Видимо скоро придется перейти на VSCode.

Формально Nx создаст следующую структуру:

boobs/ ├── packages/ ├── tools/ ├── workspace.json ├── nx.json ├── package.json └── tsconfig.base.json

Рассмотрим файл nx.json :

В данном случае имеем 3 секции:

  • affected — ветка, с которой будут сравниваться изменения в монорепозитории. Это необходимо для того, чтобы понимать какие тесты запускать, и какие части проекта (приложения и библиотеки) были затронуты в результате последних правок.
  • cli — настройка CLI. Обычно, там указываются дефолтные коллекции. В данном случае используем коллекции nx. Если вы фанатик yarn, можно добавить свойство «packageManager»: «yarn» , чтобы всегда yarn использовался.
  • tasksRunnerOptions — набор правил запуска приложений и библиотек. Для базовой настройки это можно пока пропустить.
Читайте также:
Какая из указанных программ позволяет узнать количество вертексных и шейдерных процессоров

Файл workspace.json будет содержать пути конфигураций для библиотек и приложений:

Последний файл это tsconfig.base.json :

< «compileOnSave»: false, «compilerOptions»: < «rootDir»: «.», «sourceMap»: true, «declaration»: false, «moduleResolution»: «node», «emitDecoratorMetadata»: true, «experimentalDecorators»: true, «importHelpers»: true, «target»: «es2015», «module»: «esnext», «lib»: [«es2017», «dom»], «skipLibCheck»: true, «skipDefaultLibCheck»: true, «baseUrl»: «.», «paths»: <>>, «exclude»: [«node_modules», «tmp»] >

Здесь все стандартно. Можно бампнуть es до последней версии.

Единственное, что бросается в глаза — это отсутствие eslint .

Добавим eslint в workspace:

Данный шаг можно пропустить, так как при создании приложения, Nx сделает все за вас, и сам добавит eslint и jest.

Работа с NX workspace

В монорепе можно создавать как минимум два типа пакетов:

  • библиотеки — обычные пакеты, которые можно разместить в npmjs
  • приложения — тоже что и библиотеки, только приложение имеет способы запуска отслеживания изменений.

Для примера создадим новое приложение — store:

После создания приложения, глобально появилось несколько файлов:

  • .eslintrc.json — настройки линтера
  • jest.config.js , jest.preset.js — настройка для unit тестирования с помощью jest

Workspace.json добавился новый проект:

Также, из-за того, что в проекте не было jest, Nx любезно его установил, обновив package.json :

Конечно, не понятно почему нельзя было сразу добавить команду запуска приложения в package.json, ну да ладно.

nx serve store

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

Если открыть созданный проект, то там следующая структура:

packages/store ├── jest.config.js ├── package.json ├── project.json ├── README.md ├── src │ ├── app │ │ ├── store.spec.ts │ │ └── store.ts │ └── index.ts ├── tsconfig.app.json ├── tsconfig.json └── tsconfig.spec.json

Tsconfig файлы переопределяют правила глобальной конфигурации TS.

Например, tsconfig.spec.ts — создаст окружение для тестирования.

Project.json описывает конфигурацию приложения.

В данном случае видны правила для запуска и компиляции проекта, есть команды для проверки стилей ( lint ) и тестирования ( test ).

Само приложение включает в себя только один файл — store.ts :

export function store(): string

Теперь создадим библиотеку api:

├── jest.config.js ├── package.json ├── project.json ├── README.md ├── src │ ├── index.ts │ └── lib │ ├── api.spec.ts │ └── api.ts ├── tsconfig.json ├── tsconfig.lib.json └── tsconfig.spec.json

Одним из немногих отличий конфигурации библиотеки от приложения является project.json:

Единственное отличие — это наличие блока с serve :

Используем библиотеку api в приложении strore :

nx run store:build —with-deps
nx serve store

Как видим на скриншоте выше, был вызван метод из библиотеки api , перед запуском приложения store .

Node и Nx

Добавим пакет ноды в workspace:

Теперь создадим приложение с node:

Структура созданного приложения:

packages/node-store ├── jest.config.js ├── project.json ├── src │ ├── app │ ├── assets │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ └── main.ts ├── tsconfig.app.json ├── tsconfig.json └── tsconfig.spec.json

Почти все тоже самое, но только с немного улучшенной структурой.

Как и все другие библиотеки и приложения, главным файлом является project.json:

Как видно из примера, тут уже есть environment’ы, также есть различные виды сборок, такие как development и production .

Внимательный читатель заметит, что чем дальше идет усложнение структуры, то все больше и больше она начинает напоминать структуру проектов на Angular.
Этот enterprise из головы уже не выкинуть.

Express и Nx

Шагнем дальше и создадим проект с express. Добавим соответствующий пакет Nx:

Создадим express приложение:

При запуске команд, Nx проверяет конфигурации, и в случае с добавлением express он глобально добавил несколько зависимостей в package.json :

Отсюда и ответ на вопрос, зачем в каждом из пакетов, сгенерированных Nx, есть собственный package.json .

nx serve express-store

Если сравнивать проект на node и express, то они как не казалось бы удивительным, отличаются только наличием express в main.ts :

/** * This is not a production server yet! * This is only a minimal backend to get started. */ import * as express from ‘express’; const app = express(); app.get(‘/api’, (req, res) => < res.send(< message: ‘Welcome to express-store!’ >); >); const port = process.env.port || 3333; const server = app.listen(port, () => < console.log(`Listening at http://localhost:$/api`); >); server.on(‘error’, console.error);

Web и Nx

Добавим пакет в workspace:

Пакет подключает около 300 пакетов для веб разработки.

Создадим web приложение:

nx serve web-store

Откроем браузер — http://localhost:4200

Выше приведенное решение и является аналогом моего самописанного решения, которое можно теперь выкинуть на помойку.

Следующим шагом идет создание уже полноценных веб приложений на Angular и React.

Там все аналогично. Добавляете пакет, создаете приложение.

Однако, стоит отметить, что лучше при создании workspace использовать пресеты с приложениями. Это позволит не делать много не нужной работы.

Исходники

Все описанное выше можно посмотреть в репозитории — https://github.com/Fafnur/boobs:

GitHub — Fafnur/boobs: NX samples

Резюме

В данной статье рассказал о таком инструменте как Nx и его использовании при разработке веб приложений. Сделал краткий обзор структуры приложений на Nx, а также привел команды для генерации библиотек и запуска приложений.

В заключении хочется сказать, что инструментарии для веб разработки очень сильно развиваются. Грустно видеть проекты, которые до сих пор используют gulp как основную систему сборки. Нет никаких претензий к gulp, grunt и webpack, просто уже давно много задач, которые решали сборщики — были решены и оптимизированы. И разработчику не нужно создавать и поддерживать свой инструментарий. Хорошим примером является Nx, который возьмет на себя весь front-ops и даст вам возможность заниматься тем, чем должен заниматься разработчик — разработкой приложений, а не бесконечной настройкой конфигов, и их изменением при обновлении vendors.

Источник: habr.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru