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

Макросы в 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 пользователей

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




  • Сообщения

    • maxx2000
      Подушную малость. Чё там. Уже в упор научились резьбу резать без выходной канавки?
    • ispite
      Здравствуйте, не могу построить стандартную сетку, что не позволяет дальше провести расчёт. Получается сделать сетку "на основе кривизны", но солид отказывается считать, после нажатия кнопки "запустить исследование" происходит сбой. https://disk.yandex.ru/d/D8wvRbYMW1lWjQ
    • ddm
      изготовить по чертежу с последующим покрытием,цинкование ,по 1000 шт каждой позиции ,предложение отправить на почту qwer463@yandex.ru
    • sklide008
      И еще можно ли задать горчие клавиши на кнопки открыть, скрыть и тд?
    • sklide008
      Подскажите, пожалуйста, в инвенторе есть такой пункт упорядочи по алфавиту дерево. Здесь найти такого не могу, пытался treesorter ставить но он добавляет просто в папку а не сортирует в дереве. Есть ли такой макрос чтобы все детали в дереве по порядку и алфавиту шли?
    • stanislavz
      Есть станок с данным контроллером. Все работает. Недавно была проблема с передачей данных - установил запасной контроллер. А запасной контроллер сказал нет работе. Проблема была в программе компьютера для передачи данных. Грустно, досадно, контроллер был куплен как рабочий. Как бы и не горит, но необходимо поправить. Плата управления с процессором mc68020, память hm628128-10. Память буферным питанием от 3 батареек + 0,5 Фарада на плате как буфер для замены батареек на 1 сутки. Лежало долго, без батареек. Симптомы: После первого включения, в памяти были и программы и параметры (0 странность). Честно, удивило. Но - система жутко тормозит, отклик на нажатие кнопки 3-5 секунд. В таком режиме сумел закачать машинные параметры под свой станок. Но это заняло час.. 4 строки и ждет секунд 10 итд. Есть видео. Перекинул с рабочего контроллера, БП, плату плц, ээпром плц - все то же. Проверил осциллографом кварцы живые , частота есть, амплитуда хорошая. 1 странность - после манипуляций по замене батарейки, старые записи из памяти исчезли. Ничего не коротнул. Возможно 0,5 Ф был не заряжен. Там тоже необходимы сутки для зарядки. Но как оно было запечатоно до этого - мистика. 2 странность. Если плата лежит ночь без питания, только с буфером - потом 2-3 минуты работает хорошо. 3 аналогично работает 2-3 минуты если питание отключить и очистить питание памяти (выпаял 0,5 Ф буфер с платы) Проверка памяти на старте есть. Проходит хорошо. На зависает, на холодную пайку не похоже. Шевелил / двигал все. Да и не виснет, именно тормозит. При том если оставить на час - тоже все стабильно плохо. Если набрать быстро 5 символей- экран сразу пуст, но после задержки символы будут на экране. Заказал второй процессор и память. 10 штук. Подавал прямо 5 вольт на память - все так же. Токи потребления между плохой и хорошей платой смогу проверит.    
    • brigval
    • Ветерок
      "увеличение оптимизации". Оптимизацию невозможно ни увеличить, ни уменьшить.
    • gudstartup
      @boomeeeer может от страны зависит
    • david1920
      нет время нет заниматься да и информации новой нет Это я на других станках делал
×
×
  • Создать...