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

Макросы в Power Mill


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

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

а для отдельной в списке это сложновато будет

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

 

и если только по одному, то там по сути всего 2 кнопки нажать - ПКМ-Создать NC файл, и потом ПКМ на NC файле - записать, зачем для 2 кнопок ещё макрос писать ?

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


1 час назад, eksodus сказал:

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

 

Проекты чаще всего огромные, обработка с разных сторон, несколько СК, в проводнике обычно несколько папок с кучей траекторий (часто больше 50), соответственно также много границ и инструментов, которые приходится постоянно открывать\закрывать и прокручивать вверх-вниз для того, чтобы увидеть самый верх с NC-файлами, это неудобно. А удобно было бы жмакнуть сочетание клавиш, без прокрутки проводника, и NC-файл уже залетел на флешку)).  Записать сразу все траектории нет смысла, я за смену столько не сделаю)) 

Скрытый текст

Снимок.JPG

 

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

симпатичный пуансон )

у меня получился такой вот вариант, только сначала нужно активировать траекторию

STRING activename = Toolpath.name
CREATE NCPROGRAM $activename
EDIT NCPROGRAM $activename
APPEND TOOLPATH $activename
KEEP NCPROGRAM ;

TEXTINFO ACCEPT

последняя строчка закрывает окно результатов постпроцессирования

если нужно видеть результат - нужно удалить последнюю строчку

 

и если NC  файл с таким именем уже существует - макрос остановится с ошибкой

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

@eksodus  Спасибо огромное! Уже второй раз выручаешь) Всё отлично работает, прям то, что надо)

 

 

4 часа назад, eksodus сказал:

а для отдельной в списке это сложновато будет

 

эх, недооцениваешь ты себя)

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

k.sema

 

Опять же, если хочется спостпроцессировать сразу несколько, то слегка доработав макрос с помощью цикла FOREACH, получим:

 

Скрытый текст

 

ENTITY LIST $Selected_Toolpaths = INPUT ENTITY MULTIPLE toolpath "Выберите траектории"

FOREACH $tp in $Selected_Toolpaths {

ACTIVATE TOOLPATH $tp.Name

STRING activename = Toolpath.name
CREATE NCPROGRAM $activename
EDIT NCPROGRAM $activename
APPEND TOOLPATH $activename
KEEP NCPROGRAM ;

TEXTINFO ACCEPT

}

 

 

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

Спасибо за помощь. Сделал сам. Но остался вопросик. А как сохранить значение переменной в буфере обмена?

Ссылка на сообщение
Поделиться на других сайтах
В 23.04.2017 в 10:19, syncomp сказал:

Как округлять числа? Нужно рассчитать размер заготовки с определенным припуском.

 

В 10.05.2017 в 15:14, syncomp сказал:

Спасибо за помощь. Сделал сам. Но остался вопросик. А как сохранить значение переменной в буфере обмена?

Поделишься?

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

Конечно, только не оптимизирован, хотя работает. У меня стояла задача: Округлить заготовку до 5мм и дать припуск 10 мм на сторону по Х У. Удобнее всего было конвертировать число в строку, сделать с ней манипуляции, снова конвертировать в число и прибавить 20...

Размер заготовки.mac

Подскажите пожалуйста. Как узнать имя модели? Нужно перевернуть модель и назначить ей другую СК.  Что я делаю не так?

FOREACH md IN folder  ('model') {
String my_model = md.Name
}
Print  $my_model

 

При выполнении макроса выдается ошибка " Неправильное имя" в строке Print.

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

При выполнении макроса выдается ошибка " Неправильное имя"

Знак равно поставьте после Print

и поменяйте местами со строкой с закрывающей скобкой

 

PS: только по сути это ни к чему, вам надо модель крутить, а у вас макрос на вывод имён всех моделей получился

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

Не всегда правильно считает))

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

 

Размер заготовки2.mac

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

PS: только по сути это ни к чему, вам надо модель крутить, а у вас макрос на вывод имён всех моделей получился

Так и надо было имя. Чтобы закрутить модель надо знать ее имя. Операции с ней производить буду. А это только часть макроса, которая печатает имя модели. У меня в заготовке бывает по 20 моделей стоит. Но потом оказалось, что делал немного не то. Мне нужно было повернуть все на 180 градусов по оси Y. Вроде как выполнить команду Rotate. Я и сейчас не знаю, как это сделать.

20 часов назад, sssdos сказал:

Не всегда правильно считает))

Я заметил. Но считает неправильно, если нет никакой СК. Установил СК, запустил макрос. Все работает.

Может кто знает как передать данные в буфер обмена. Хочу усовершенствовать макрос так, чтобы он размеры заготовки писал  в файл...

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

Так и надо было имя. Чтобы закрутить модель надо знать ее имя. Операции с ней производить буду. А это только часть макроса, которая печатает имя модели.

во-первых - дайте полный макрос, а не часть, чтобы можно было полностью правильно разобраться, а не частично

5 часов назад, syncomp сказал:

У меня в заготовке бывает по 20 моделей стоит. Но потом оказалось, что делал немного не то. Мне нужно было повернуть все на 180 градусов по оси Y. Вроде как выполнить команду Rotate. Я и сейчас не знаю, как это сделать.

как раз повернуть все модели по оси Y - это несложно оператором FOREACH

поэтому, во-вторых - опишите что вам нужно получить в результате

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

 

5 часов назад, syncomp сказал:

Может кто знает как передать данные в буфер обмена.

ну если бы можно было уточнить, что вы называете в PowerMILL-е буфером обмена...

я просто первый раз сталкиваюсь с таким термином в отношении PowerMILL, интересно узнать

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

 

Может кто знает как передать данные в буфер обмена. Хочу усовершенствовать макрос так, чтобы он размеры заготовки писал  в файл...

в какой файл? , если в NC программу, то в пмпосте есть соответствующие параметры Block Max X ...

 

если просто в файл, то проще подцепиться  "vbasikom"  (VB) или "шарпом" (С#).

 

 

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

Нашёл макрос для выведения общей статистики NC файла

 

IF (ENTITY_EXISTS('ncprogram','')) {
//Calculate ncprogram time
ENTITY tpath = entity('ncprogram','')
REAL $total_time = $tpath.statistics.leadsandlinks.times.rapid
$total_time = total_time + $tpath.statistics.leadsandlinks.times.plunge
$total_time = total_time + $tpath.statistics.leadsandlinks.times.ramp
$total_time = total_time + $tpath.statistics.leadsandlinks.times.others
$total_time = total_time + $tpath.statistics.cuttingmoves.times.linear
$total_time = total_time + $tpath.statistics.cuttingmoves.times.arcs
STRING $msg = string(round($total_time,2))
//MESSAGE INFO "Total Time $Msg mn"
$total_time = INPUT "Total Time NC Time Mn"
} ELSE {
MESSAGE INFO "NO ACTIVE ncprogram"
}

 

И ещё один макрос - выводит координаты центра отверстия.

Отверстие нужно предварительно выделить.

 

EDIT BLOCKTYPE CYLINDER
EDIT BLOCK RESET
REAL $CENTERX = $block.centre.x
REAL $CENTERY = $block.centre.y
$CENTERX = ROUND($CENTERX, 3)
$CENTERY = ROUND($CENTERY, 3)
MESSAGE INFO "CENTER X = $CENTERX" +CRLF+ "CENTER Y = $CENTERY"

 

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

Мы изготавливаем деревянные модели для литейного производства. заготовки делаем исходя из габаритных размеров модели +20мм припуска, по 10 на сторону. Толщина, высота по Z. в данном контексте не важна... Бывает так и часто, что ошибаемся в задании размеров заготовки. Вот я и решил написать макрос, чтобы он сам рассчитал размеры заготовки и выдал их в Message info. Потом пошел дальше, хочу чтобы размер заготовки не перепесывался  в ручную,а сохранялся в файле, например "Заготовка.txt". Для передачи данных, служит буфер обмена Windows, CTRL+C, а не РМ!!! Чтобы затем его можно было вставить в файл CTRL+V.

В основном у нас детали делаются за один установ. Но бывает, что и за два. Мы переворачиваем заготовку на 180 градусов и продолжаем обрабатывать с обратной стороны. Хочу сделать макрос, чтобы установил СК1,сделал нужные мне обработки, потом перевернул деталь на 180 градусов вдоль У и установил СК2 для обработки 2-й сторооны...

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

хорошо, теперь хоть понятно что нужно сделать

50 минут назад, syncomp сказал:

хочу чтобы размер заготовки не перепесывался  в ручную,а сохранялся в файле, например "Заготовка.txt".

файловые операции  - это мне надо почитать последнее руководство по макросам

в 2012 версии этого ещё не было

52 минуты назад, syncomp сказал:

Хочу сделать макрос, чтобы установил СК1,сделал нужные мне обработки, потом перевернул деталь на 180 градусов вдоль У и установил СК2 для обработки 2-й сторооны...

а это как раз не сложно сделать

модели ж всегда у вас параллелепипедные ?

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

хорошо, теперь хоть понятно что нужно сделать

Идей у меня много. Пользуюсь около 30-ти макросами. Даже создал свою панель инструментов.  Не хватает  инфы по макросам. Да и разработчики "языка", создается впечатление не сильно парятся на удобством. Строковые Функции такие бедные! Перевод числа в строку есть, даже два раза упоминается, а вот обратной ни разу...  пока сам сообразил применить ту же функцию...

Заготовки у нас паралеллепипедные. Но бывают и цилиндрические, это когда вырезаем, и остаются остатки

Изменено пользователем syncomp
Ссылка на сообщение
Поделиться на других сайтах
В 18.05.2017 в 14:23, syncomp сказал:

Хочу сделать макрос, чтобы установил СК1,сделал нужные мне обработки, потом перевернул деталь на 180 градусов вдоль У и установил СК2 для обработки 2-й сторооны...

Вот макрос, который создаёт новую СК, поворачивает её на 180 градусов по Y, задаёт ноли:

- по Z - верхняя плоскость

- по XY - середина заготовки (детали)

 

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

Единственное условие - убедиться перед запуском, что активная СК, или если её нет - Глобальная СК, - имеет ось Z  перпендикулярной к нужной плоскости XY.

 

(Так как этот макрос как раз и требуется на вторую сторону обработки - то понятно что активная СК перед его запуском уже имеет правильное расположение оси Z)

// Создание и поворот СК на 180 град по Y
STRING WP1=new_entity_name('workplane')
CREATE WORKPLANE ; EDITOR
MODE WORKPLANE_EDIT START $WP1
MODE WORKPLANE_EDIT TWIST Y
MODE WORKPLANE_EDIT TWIST "180"
WPETWIST ACCEPT
MODE WORKPLANE_EDIT FINISH ACCEPT

// Задание заготовки
ACTIVATE Workplane $WP1
EDIT MODEL ALL DESELECT ALL
EDIT BLOCK COORDINATE WORKPLANE
EDIT BLOCKTYPE BOX
EDIT BLOCK ALL UNLOCK
EDIT BLOCK TOLERANCE ".001"
EDIT BLOCK RESETLIMIT "0"
EDIT BLOCK LIMITTYPE MODEL
EDIT BLOCK RESET

// Перемещение Z0 на верхнюю плоскость, XY -  центр
REAL $x0 = ($block.limits.xmax+$block.limits.xmin)/2
REAL $y0 = ($block.limits.ymax+$block.limits.ymin)/2
REAL $z0 = $block.limits.zmax
MODE WORKPLANE_EDIT START ;
MODE WORKPLANE_EDIT POSITION
MODE POSITION CARTESIAN X $x0
MODE POSITION CARTESIAN Y $y0
MODE POSITION CARTESIAN Z $z0
POSITION APPLY
MODE WORKPLANE_EDIT FINISH ACCEPT

// Отрисовка СК, Модели и Заготовки
UNDRAW Workplane $WP1
DEACTIVATE Workplane
ACTIVATE Workplane $WP1
EDIT BLOCK RESET
DRAW BLOCK
ROTATE TRANSFORM ISO1
ZOOM DOUBLE

 

теперь примерный порядок действий такой:

1) Ваш макрос, или другой макрос, или вручную, - создаёт СК (если нужно)

2) Второй макрос на создание и просчёт траекторий

3) Третий макрос - из этого сообщения, он создаёт и поворачивает СК на 180 гр по Y

4) Последний макрос на просчёт траекторий с обратной стороны

 

Ну или всё это собрать в один макрос. Но перед сборкой в один макрос - я бы протестировал всё это как отдельные 4 макроса, и только потом всё вместе.

 

В 18.05.2017 в 14:23, syncomp сказал:

хочу чтобы размер заготовки не перепесывался  в ручную,а сохранялся в файле, например "Заготовка.txt".

а к этому давайте вернёмся через недельку примерно

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

Вот обновленный макрос расчета заготовки без SWITCH. Вроде считает правильно...

Размер заготовки.mac

Ссылка на сообщение
Поделиться на других сайтах
  • MFS закрепил это тему

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

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

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

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

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

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

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

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

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

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




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