Перейти к публикации

Макросы в Power Mill


Рекомендованные сообщения

  • 1 месяц спустя...


Не подскажут ли уважаемые знактоки:

1. Как вытащить кнопку "Параметры" в панель быстрого доступа PowerMill 2019...2021

2. Как правильно обозвать в макросе закладку "Активный", что находится в "дереве" и показывает  активные компоненты (хотелось бы, чтобы при входе в милл, эта ветка была автоматически в развернутом виде)

Изменено пользователем oat
Ссылка на сообщение
Поделиться на других сайтах
  • 1 месяц спустя...

Уважаемые форумчане, подскажите, плз, где вы инфу по макроязыку берёте? На данный момент осилил инструкции по API, плагинам и нахожусь где-то на середине инструкции по макросам (предполагал что всё что мне нужно будет в API на C#,  но жестоко ошибался...). Я Не нашёл в инструкции по макросам таких вещей как обращения к базе данных инструментов (FORM TOOLDBSEARCH, TOOLDB RESULTS_LIST CREATE NOQUIBBLE ALL и т.д.) и ещё много чего. Все поиски полного справочника приводят к фразе "Включай Эхо и копируй оттуда", но тех же прямых обращений к базе данных там нет т.к. Эхо работает через GUI. Справочник функций и переменных нашёл, но там не описаны механизмы их применения, "help" в Эхо пробовал, выдаёт куцую инфу о том в какой последовательности можно применять команды. Пока что единственное место где что-то можно посмотреть это примеры форуме Autodesk.

Ссылка на сообщение
Поделиться на других сайтах
10.04.2021 в 09:53, Sir_Simpleton сказал:

Уважаемые форумчане, подскажите, плз, где вы инфу по макроязыку берёте? На данный момент осилил инструкции по API, плагинам и нахожусь где-то на середине инструкции по макросам (предполагал что всё что мне нужно будет в API на C#,  но жестоко ошибался...). Я Не нашёл в инструкции по макросам таких вещей как обращения к базе данных инструментов (FORM TOOLDBSEARCH, TOOLDB RESULTS_LIST CREATE NOQUIBBLE ALL и т.д.) и ещё много чего. Все поиски полного справочника приводят к фразе "Включай Эхо и копируй оттуда", но тех же прямых обращений к базе данных там нет т.к. Эхо работает через GUI. Справочник функций и переменных нашёл, но там не описаны механизмы их применения, "help" в Эхо пробовал, выдаёт куцую инфу о том в какой последовательности можно применять команды. Пока что единственное место где что-то можно посмотреть это примеры форуме Autodesk.

Есть ещё старый форум делкам. Там ещё инфа какая-то есть. Кстати сам не знал, что есть API под Повермилл. Интересно, насколько  функционален. Можете поделится примером? Есть ли смысл в него вникать)

Ссылка на сообщение
Поделиться на других сайтах
10.04.2021 в 09:53, Sir_Simpleton сказал:

где вы инфу по макроязыку берёте?

ну не мы а все, и вот именно тут -

7 часов назад, scorpion1007 сказал:

Справочник функций и переменных нашёл

все берется оттуда

 

 

10.04.2021 в 09:53, Sir_Simpleton сказал:

Я Не нашёл в инструкции по макросам таких вещей как обращения к базе данных инструментов (FORM TOOLDBSEARCH, TOOLDB RESULTS_LIST CREATE NOQUIBBLE ALL и т.д.)

команда FORM открывает диалоговое окно, и потом нужна еще команда закрытия диалоговоого окна со словом ACCEPT

я обычно удаляю эти строки, чтобы макрос выглядел лаконичнее

описания этого нет - простая практика - делаете, смотрите как выполняется, и потом изменяете под себя

 

10.04.2021 в 09:53, Sir_Simpleton сказал:

Все поиски полного справочника приводят к фразе "Включай Эхо и копируй оттуда", но тех же прямых обращений к базе данных там нет т.к. Эхо работает через GUI.

что вы называете прямым обращением ? функции API  которые в обход GUI? тогда вам не руководство макропрограммирования а инструкции по программированию плагинов надо изучать

а это уже другая тема

 

10.04.2021 в 09:53, Sir_Simpleton сказал:

Пока что единственное место где что-то можно посмотреть это примеры форуме Autodesk.

именно туда и надо писать, там сидят спецы от бывшего делкама и помогут вам с макросами

по плагинам думаю тоже помогут - там даже бывает делают плагины и выкладывают в свободный доступ,

а некоторые только хвастаются написанными плагинами но не делятся

 

 

7 часов назад, scorpion1007 сказал:

Кстати сам не знал, что есть API под Повермилл. Интересно, насколько  функционален. Можете поделится примером?

так к каждой версии милла, с 2012 R2 вроде бы, идет все необходимое для написания плагинов

до 2016 находится в установленной папке с миллом,  а с 2017  и далее - можно на сайте автодеска скачать

 

Изменено пользователем eksodus
Ссылка на сообщение
Поделиться на других сайтах
12.04.2021 в 14:11, scorpion1007 сказал:

Есть ещё старый форум делкам. Там ещё инфа какая-то есть. Кстати сам не знал, что есть API под Повермилл. Интересно, насколько  функционален. Можете поделится примером? Есть ли смысл в него вникать)


Чтобы не разводить много писанины я сразу выложу всё что знаю на эту тему (если где ошибаюсь, прошу поправить, на истину в последней инстанции не претендую).

Существует 3 способа автоматизации работы в
Powermill/PowerShape: API, Plugin, Macro

1) API

https://forums.autodesk.com/t5/powershape-and-powermill-api/getting-started-with-powershape-and-powermill-api/td-p/6868839

Последний был выпущен для Powermill/PowerShape 2016. Работает через установленный пакет Custom Software Core. Разрабатывался как более простая альтернатива Plugin, отличается тем что вместо Macro языка для общения с Powermill  используются функции и команды C#, VB. Не завершён, в конце инструкции предписывают применять макроязык если инструментов Custom Software Core не достаточно.

Custom Software Core теперь open sourced, документация и дистрибутивы есть по ссылке в начале.

Из недостатков - в отличие от Plugin невозможно подписаться на события в Powermill/PowerShape, запускается только параллельно работающему Powermill/PowerShape, а не как COM объект в окне Powermill/PowerShape, недостаточно функционала.

Подробные примеры есть в документации, я только повторил их у себя чтобы разобраться.

 

2) Plugin

Документация и всё необходимое в моей установке лежит тут:

C:\Program Files\Autodesk\PowerMill 2019\file\plugins

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

Отличается от
API тем что работает через  библиотеку которую надо сгенерировать самостоятельно из вашего дистрибутива Powermill/PowerShape и шаблонный проект на C# -"PluginFramework40".

Плагины запускаются в окне
Powermill/PowerShape, могут подписываться на события. Имеет набор инструментов для написания плагинов профессионального уровня (обработчик ошибок, транслятор на разные языки, парсер команд и т.д.). Работает на C# и VB. Но, главное, всё общение с Powermill/PowerShape, в конечном итоге, осуществляется через макроязык.

Я так понимаю, что это самый кошерный, живой и поддерживаемый разрабами вариант.

3) Macro

Документация и всё необходимое в моей установке лежит тут:

C:\Program Files\Autodesk\PowerMill 2019\lib\locale\C

Собственно, Сам великий и могучий без которого никуда.

Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, Sir_Simpleton сказал:

 

Из недостатков - в отличие от Plugin невозможно подписаться на события в Powermill/PowerShape, запускается только параллельно работающему Powermill/PowerShape, а не как COM объект в окне Powermill/PowerShape, недостаточно функционала.

Я конечно только начинающий в C#, но у меня получилось создать COM-объект Повермилл. Также смог открыть уже существующий проект

PMAutomation powerMill = new PMAutomation(Autodesk.ProductInterface.InstanceReuse.CreateNewInstance);

Ссылка на сообщение
Поделиться на других сайтах
22 минуты назад, scorpion1007 сказал:

Я конечно только начинающий в C#, но у меня получилось создать COM-объект Повермилл. Также смог открыть уже существующий проект

PMAutomation powerMill = new PMAutomation(Autodesk.ProductInterface.InstanceReuse.CreateNewInstance);

Я тоже начинающий. COM объект это технология Майкрософта для написания программ под винду, это не совсем то что вы написали. То что Plugin представляет из себя COM объект означает что ему можно присвоить родителя, в данном случает запущенный Powermill и он будет работать внутри Powermill, как панелька, в окне плагинов или как окно. Тут я боюсь поплыть в теме, но я для меня важным было то что такой плагин имеет доступ к событиям в Powermill (например активация инструмента, щелчок по рабочей области, выбор поверхности) и прямой доступ к переменным.

Глянул инструкцию по плагинам, уточню своё предыдущее сообщение:

 

Plugin Services Interface позволяет:

- Посылать PowerMILL команды
- Управлять ходом и отображать процент выполнения расчётов

- Вести лог плагина

- Подписываться на события

- Использовать Project interface (метод дающий доступ ко всем сущностям Powermill)

- Запрашивать именованную информацию у PowerMILL

- проверять допустимость PAF, не знаю что это.

- Иметь доступ к параметрам без необходимости применять соответствующую команду


The plugin services interface allows the plugin to:
Issue PowerMILL commands.
Manage the progress break.
Add messages to the plugin log.
Subscribe to specific events (see §4).
• Obtain the Project interface. (Returns the Project interface, allowingaccess to all of PowerMILL's entities)
Request named information from PowerMILL (see §5).
Check if a PAF is valid.
Access parameters without issuing commands.

 

В общем, я дошёл до последнего примера из инструкции, плагин для генерации траекторий гравировки текста с применением установленных в винде фонтов, стал искать как плагин управляет PowerMILL после того как вычислил координаты отрезков, и обнаружил, что он посылает макрокоманды которые прописаны в отдельной библиотеке классов, а классы уже используются во всём остальном проекте... Вообще, я подозреваю что те функции API и Plugin Interface которые они предоставляют пользователю - это те же классы с макросами, только они содержатся в зашифрованных библиотеках Custom Software Core и PluginFramework40, посмотреть у меня не получилось, не умею зашифрованные библиотеки вскрывать...

Ссылка на сообщение
Поделиться на других сайтах
12.04.2021 в 21:26, eksodus сказал:

что вы называете прямым обращением ? функции API  которые в обход GUI? тогда вам не руководство макропрограммирования а инструкции по программированию плагинов надо изучать

а это уже другая тема

Уважаемый eksodus, приведу пример, макрос для создания всех инструментов из базы.

1) Методом "тыка" собрал из ответов разработчиков на форуме автокада, пользуюсь теперь ежедневно.
 

FUNCTION Main() {

DIALOGS MESSAGE OFF

FORM TOOLDBSEARCH

TOOLDB RESULTS_LIST CREATE NOQUIBBLE ALL

TOOLDBSEARCH ACCEPT

DIALOGS MESSAGE ON 

}

 

2) Что видно в Эхо когда добавляешь инструменты вручную
 

FORM TOOLDBSEARCH

 

TOOLDB RESULTS_LIST SELECT
11 NEW
TOOLDB RESULTS_LIST CREATE SELECTED

 

TOOLDB RESULTS_LIST SELECT
14 NEW
TOOLDB RESULTS_LIST CREATE SELECTED

 

TOOLDBSEARCH ACCEPT

 

На форуме человек стремился решить задачу заполнения новых проектов инструментами из обширной базы которая лежала на сервере компании, метод из Эхо был для него слишком ресурсоёмким и вешал сервер. Вот я и надеялся найти справочник по таким командам как в строке "TOOLDB RESULTS_LIST CREATE NOQUIBBLE ALL".

Ссылка на сообщение
Поделиться на других сайтах
32 минуты назад, Sir_Simpleton сказал:

Вот я и надеялся найти справочник по таким командам

там куча команд незадокументирована, как например NOQUIBBLE

и спрашивать на оф. форуме нужно именно по ним

 

PS:пример 1) можно сократить до 3 строк, результат тот же самый:

FUNCTION Main() {

TOOLDB RESULTS_LIST CREATE NOQUIBBLE ALL

}

 

команда FORM открывает диалоговое окно, а ACCEPT закрывает

а команды DIALOGS MESSAGE включают или выключают отображение всех диалогов в макросе

ну то есть если убрать все строки с FORM и ACCEPT  - то надобность в DIALOGS MESSAGE отпадает

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

 

так что в макросе для себя я бы все лишние строки поубирал, как я и сделал в последней версии в макросе для сверления

(если что - его в этой теме можно скачать)

кстати, там тоже есть несколько команд которые нигде не задокументированы

 

PPS: ваш пример 2 не годится, ибо имена (или порядковые номера) инструментов 11 и 14 это только у вас такие

у меня будет другое - и ваш макрос у меня не сработает

так что правильно будет использовать список  =- команда LIST, в руководстве по макросам есть

хотя, RESULTS_LIST  - это вроде из последних версий милла, но я точно не уверен

 

6 часов назад, Sir_Simpleton сказал:

Существует 3 способа автоматизации работы в Powermill/PowerShape: API, Plugin, Macro

4) вы забыли HTML

можно написать свою страницу HTML с нужными командами, макросами, параметрами и тд

как вариант - тут была тема про HTML-шаблоны

 

5) и для милла еще можно сохранять шаблоны проектов и/или траекторий

с любым количеством границ, шаблонов, траекторий, инструментов и привязками между ними

 

 

Изменено пользователем eksodus
Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Sir_Simpleton сказал:

...

Вообще, я подозреваю что те функции API и Plugin Interface которые они предоставляют пользователю - это те же классы с макросами, только они содержатся в зашифрованных библиотеках Custom Software Core и PluginFramework40, посмотреть у меня не получилось, не умею зашифрованные библиотеки вскрывать...

...

До меня только сейчас дошло - PowerShapeAndPowerMillAPI ведь стали open sourced в 2017м году после того как Delcam купили, вот где клад зарыт...

https://github.com/Autodesk/PowerShapeAndPowerMillAPI

Ссылка на сообщение
Поделиться на других сайтах
44 минуты назад, Sir_Simpleton сказал:

До меня только сейчас дошло - PowerShapeAndPowerMillAPI ведь стали open sourced в 2017м году после того как Delcam купили, вот где клад зарыт...

https://github.com/Autodesk/PowerShapeAndPowerMillAPI

Используйте NuGet - https://www.nuget.org/packages/Autodesk.ProductInterface.PowerMILL/1.1.53-alpha

Ссылка на сообщение
Поделиться на других сайтах
12 часов назад, scorpion1007 сказал:

 

Получить значение имени активного шаблона я смог только так:

 

powerMill = new PMAutomation(InstanceReuse.UseExistingInstance);
pmSession = powerMill.ActiveProject;

 

string name = powerMill.ExecuteEx("print $entity('pattern','').name").ToString();

Ссылка на сообщение
Поделиться на других сайтах
24 минуты назад, Sir_Simpleton сказал:

Получить значение имени активного шаблона я смог только так:

 

powerMill = new PMAutomation(InstanceReuse.UseExistingInstance);
pmSession = powerMill.ActiveProject;

 

string name = powerMill.ExecuteEx("print $entity('pattern','').name").ToString();

Понятно. Эдакий симбиоз макросов и Api. Тогда не вижу особой необходимости в изучении Api. Проще все макросами запускать из открытого Милла. Вообще тогда не понимаю смысл тогда API. Сделали бы проще, три команды, одна открывает МИЛЛ, вторая преобразует текст в макрос и прогоняет его и третья закрывает МИЛЛ.

 

Ссылка на сообщение
Поделиться на других сайтах
6 часов назад, scorpion1007 сказал:

Понятно. Эдакий симбиоз макросов и Api. Тогда не вижу особой необходимости в изучении Api. Проще все макросами запускать из открытого Милла. Вообще тогда не понимаю смысл тогда API. Сделали бы проще, три команды, одна открывает МИЛЛ, вторая преобразует текст в макрос и прогоняет его и третья закрывает МИЛЛ.

 

Ну дык в том и соль, наверное поэтому Автодески и перестали развивать API. А вот плагины имеют огромный плюс в том что работают в виде панели в запущенном Милле и могут реагировать на события, имеют прямой доступ к переменным... А вот с "переработкой" функционала макроязыка в C# классы не заигрывают, мол, хочешь - сам оформишь по примеру выше.

Кстати, то что вы показывали в видео - панельки в Грасхоппере, это именно аналог плагинов в Милле. Можно так же оформить иконками... в общем можно использовать все возможно WPF и Windows Forms.

Ссылка на сообщение
Поделиться на других сайтах
16.04.2021 в 12:17, scorpion1007 сказал:

Тогда не вижу особой необходимости в изучении Api.

читал статью несколько лет назад, что еще во времена  8-9 милла, на одном российском производстве внедрили плагин к миллу для автоматизации изготовления зубчатых колес

сначала плагин запускается в окне милла, вводятся в окне данные по зубчатому колесу,  потом в фоне запускается шейп без графической оболочки и строит по этим данным колесо

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

 

может как раз API для таких случаев ?

ведь по похожему принципу работает плагин для электродов

Ссылка на сообщение
Поделиться на других сайтах
18 часов назад, eksodus сказал:

читал статью несколько лет назад, что еще во времена  8-9 милла, на одном российском производстве внедрили плагин к миллу для автоматизации изготовления зубчатых колес

сначала плагин запускается в окне милла, вводятся в окне данные по зубчатому колесу,  потом в фоне запускается шейп без графической оболочки и строит по этим данным колесо

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

 

может как раз API для таких случаев ?

ведь по похожему принципу работает плагин для электродов

На форуме по API один опытный юзер писал что он комбинирует API+Plugin, может в этом и есть какой-то смысл, хотя произвести расчёты вне ядра Delcam можно и через плагин - получить значения переменных, обработать в C# и построить по результатам объекты в PowerShape/PowerMill через макросы, именно так и работает последний пример из инструкции по плагинам. Думаю надо курить открытый код API чтобы что-нибудь понять...

Ссылка на сообщение
Поделиться на других сайтах
16.04.2021 в 14:17, scorpion1007 сказал:

Понятно. Эдакий симбиоз макросов и Api. Тогда не вижу особой необходимости в изучении Api. Проще все макросами запускать из открытого Милла. Вообще тогда не понимаю смысл тогда API. Сделали бы проще, три команды, одна открывает МИЛЛ, вторая преобразует текст в макрос и прогоняет его и третья закрывает МИЛЛ.

 

Макрокоманды исполняются строго по порядку. Да, есть операторы SWITCH, IF и т.д., и даже можно создавать функции, но все это примитивно по сравнению с объекто-ориентированным программированием. 

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

Да и скорость вычислений при работе с макросами все же низкая. 

Плагины работают в среде PowerMill. А API нужно для того, чтобы интегрировать PowerMill с другим софтом (н-р, с PowerInspect) или использовать PowerMill в среде другого софта (например, DelcamAutomation - отдельный софт для адаптивной обработки, внутри которого связано работают PowerMill, PowerInspect и PowerShape).

 

Смысл API и Плагинов именно в использовании объектно-ориентипрованного программирования. 

 

Ссылка на сообщение
Поделиться на других сайтах

Добрый день. Прошу помощи подкорректировать макрос или указать в какую сторону копать. Задача заключается в следующем:

У инструмента заданы режимы резания в его параметрах. Необходимо чтобы у траекторий, в которых есть имя "Correction", скорость шпинделя прибавлялась на 1 от скорости шпинделя инструмента. Необходимо, чтобы скорость шпинделя бралась от инструмента, который привязан к данной траектории. Понимаю, что надо использовать цикл внутри цикла, но не могу что-то реализовать данный момент. Результат чего я хочу добиться указан на картинке. Макрос и проект для примера прилагаю.

Безымянный.jpg

проект.rar

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...