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

Макросы в Power Mill


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

Доброго времени суток коллеги.

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

Вроде курю форумы, хелпы, но споткнулся на элементарном. Макрос ругается и выдается ошибку. Не могу понять синтаксис. Я в программировании ноль пока

Суть в том, создаю переменную, создаю папку траекторий, переименовываю её по имени переменной, пытаюсь активировать, но выскакивает ошибка, хотя папка переименована.

Поможите))

 

 

STRING Mess = $dlinaX + " - " + $dlinaY + " _" + $nomer_zakaza + " - " + $Model_name

CREATE FOLDER "Toolpath" ; 
RENAME FOLDER "Toolpath\Папка 1" $Mess
ACTIVATE FOLDER $Mess

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


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

Доброго времени суток коллеги.

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

Доброго

у меня всё также начиналось )

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

Суть в том, создаю переменную, создаю папку траекторий, переименовываю её по имени переменной, пытаюсь активировать, но выскакивает ошибка, хотя папка переименована.

Поможите))

у меня ваш макрос на 4 строки вообще ничего не создаёт - сразу ошибка

это полная версия вашего макроса ?

и версия повермилла какая ?

 

и вы создаёте не одну а 4 переменные

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

откуда же брать значение переменной $nomer_zakaza  ? как её вычислять собираетесь ?

 

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

RESET LOCALVARS
//Вычисление размеров
EDIT MODEL ALL DESELECT ALL
EDIT BLOCK RESET

int dlinaX=round(Block.Limits.XMax-Block.Limits.XMin,0)
int  dlinaY=round(Block.Limits.YMax-Block.Limits.YMin,0)
int  dlinaZ=round(Block.Limits.ZMax-Block.Limits.ZMin,0)


//***** Вычисление пути ****это кусок кода с нэта не совсем понимаю, что он делает
STRING ModelPath = folder('Model')[0].Path
STRING Model_name=folder('Model')[0].Name
INT Pos = Position($ModelPath,"Фрез\")
$ModelPath=substring($ModelPath,0,$pos+5)

string scname = " Введите номер заказа"
STRING $nomer_zakaza = input $scname
//$err = ERROR nomer_zakaza

 

//**********  Запись в файл размера заготовки ***********
STRING Mess = $dlinaX + " - " + $dlinaY + " _" + $nomer_zakaza + " - " + $Model_name
STRING Patt = $nomer_zakaza + " - " + $Model_name

CREATE FOLDER "Toolpath" ; 
RENAME FOLDER "Toolpath\Папка 1" $Mess

CREATE FOLDER "Pattern" ; 
RENAME FOLDER "Pattern\Папка 1" $Patt

 
//***** Вычисление фрезы 20 мм ****

ACTIVATE FOLDER $Mess
FORM STRATEGYSELECTOR
STRATEGYSELECTOR STRATEGY "C:/Users/Sergey/AppData/Local/Autodesk/PowerMill/My-Strategies/20end_neapol.ptf" NEW

IMPORT TEMPLATE ENTITY TOOLPATH TMPLTSELECTORGUI "C:/Users/Sergey/AppData/Local/Autodesk/PowerMill/My-Strategies/20end_neapol.ptf"
EDIT BLOCK RESET
ACTIVATE FOLDER $Patt
CREATE PATTERN ;

STRING Patt20 =  " 20endmill- " + $Model_name
RENAME Pattern "1" $Patt20
EDIT LEVEL "2.0" SELECT ALL
EDIT PATTERN ; INSERT MODEL
EDIT MODEL ALL DESELECT ALL
EDIT TOOLPATH "1" CALCULATE


//***** Вычисление фрезы 60 градусов ****
ACTIVATE FOLDER $Mess


.......итд по аналогии все четыре траектории 

 

//***** Создание и запись NC ****

EXPLORER SELECT FOLDER $Mess NEW
ACTIVATE FOLDER $Mess
EDIT FOLDER $Mess NCPROGRAM
ACTIVATE NCPROGRAM $Mess KEEP NCPROGRAM ;

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

ACTIVATE FOLDER $Mess

ошибка в этой строке

у вас переменная Mess - содержит только ИМЯ папки

а вы пытаетесь обратиться к папке просто по имени - БЕЗ пути папки, отсюда и ошибка

 

то есть вам нужно задать ещё одну переменную, содержащую ПУТЬ к папке, и потом имя папки

и уже активировать папку по этой новой переменной

 

например вот так:

STRING FolderPath = "Toolpath\$Mess"
ACTIVATE FOLDER  $FolderPath

 

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

А иначе милл не будет знать к какой папке обращаться

 

PS: проделав тоже самое к папке траекторий и шаблонов - макрос всё равно выдаёт ошибку - он не может найти слой 2,0

откуда вы его взяли ? он же в макросе никак не задаётся

 

и что за шаблон 20end_neapol.ptf  ? какая это траектория в милле?

 

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

 

например вот так:

STRING FolderPath = "Toolpath\$Mess"
ACTIVATE FOLDER  $FolderPath

 

 

@eksodus  Спасибо большое. Надеюсь Вам:angel: уготовано место в раю за то, что помогаете новичкам:worthy: Сколько раз вы меня уже выручали. 

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

PS: проделав тоже самое к папке траекторий и шаблонов - макрос всё равно выдаёт ошибку - он не может найти слой 2,0

откуда вы его взяли ? он же в макросе никак не задаётся

 

Геометрия у меня импортируется по слоям. Шаблоны для каждой траектории берутся со слоев

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

Люди добрые.

Подскажите, как сделать задержку на время импорта модели и для записи NC-файла?

Выскакивает ошибка до того,  как импортировалась модель и до того пока записывается NC-шка.

Я так понимаю. начинает исполняться следующая команда, хотя предыдущая ещё не закончена

Строки кода в которых выскакивает ошибка:

IMPORT MODEL FILEOPEN

RESET LOCALVARS
DELETE WORKPLANE ALL

.....

 

и

....

ACTIVATE NCPROGRAM $Mess KEEP NCPROGRAM ;
TEXTINFO ACCEPT

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

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

Выкладываю простой макрос по переименованию траекторий по их порядковому номеру и инструменту.

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

Но можно использовать и сам по себе.

 

Сам макрос:  RenameTP.zip

 

Что нужно сделать перед запуском - расположить в дереве милла траектории в нужном порядке и запустить макрос.

После запуска будет запрос -

 

555.png.ceb809ef06eced0b562391bdfefff657.png

 

Запрос сделан для того - чтобы при случайном нажатии, не пошло автоматическое переименование всех траекторий.

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

 

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

Прошу помощи в переделке макроса от милла 2017-2018-2019, для милла 2016 !

если такое конечно возможно

 

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

нужно всего-лишь забиндить на макрос любое сочетание клавиш, например F2

 

1) клацаем F2, появляется окно ориентирования, потом выбираем мышкой любую поверхность и опять клацаем F2

результат будет вот такой:

 

201.png.7df67037e1127a424aea66eb9d5704d9.png

 

 

Если нажать Нет - можно опять выбрать другую поверхность, и опять нажать F2 - макрос покажет тогда уклон для другой поверхности, и тд

Если нажать Да - макрос закроется.

 

Для милла 2017-2018-2019 макрос работает отлично.

А вот в милле 2016 выдаёт вот такую ошибку -

 

202.png.41a0504100af91eb741c4d3ff14f70b1.png

 

 

Может кто-нибудь знает - можно ли этот макрос адаптировать для милла 2016 ?

Буду благодарен за помощь.

 

Спасибо.

 

Макрос вот тут: Draft_Angle.zip

 

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

STRING path = ""
$path = FILESELECT "Import model file"
IMPORT MODEL $path

Спасибо большое:good:

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

можно ли этот макрос адаптировать для милла 2016

Нет. $widget ввели в PM2017.

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

Ссылка на сообщение
Поделиться на других сайтах
В 27.04.2018 в 00:58, impact сказал:

$widget ввели в PM2017.

ясно

В 27.04.2018 в 00:58, impact сказал:

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

вот что нашёл на сайте автодеска -

If anyone need a widget value in a old version you can do this...


real $XYangle = "" // your store variable


//create a temp file to record 

tracefile open c:\temp\widget_temp.txt
print formvalue Calc.Shell.LineTab.MeasureDiffXY // your widget
tracefile close


// read temp file
FILE OPEN "c:\temp\widget_temp.txt" FOR READ AS GetValue
FILE READ $XYangle FROM GetValue
FILE CLOSE GetValue

 

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

 

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

можно это как-то прикрутить к макросу

Но есть несущественное ограничение, опция "Включить эхо" (Echo Commands) должна быть отключена. В макросе я добавил отключение, но нужно иметь ввиду эту особенность.

Draft_Angle.mac

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

Но есть несущественное ограничение, опция "Включить эхо" (Echo Commands) должна быть отключена. В макросе я добавил отключение, но нужно иметь ввиду эту особенность.

ух, работает теперь и в 2016 милле, спасибо большое !

 

PS: хорошо что тут на форуме есть звуковые оповещения о новых сообщениях или ответах

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

@eksodus , поправил немного макрос от @impact . Добавил паузу после появления окна "Направление", убрал лишние строчки, весь код поместил в подфункцию и зациклил её через Диалоговое сообщение показа угла (да-продолжить, нет- прекратить).

Показать содержимое  
FUNCTION MAIN {

FUNCTION Measure {

	MEASURE CLEAR_ALL MODE VECTOR START MEASURE DIRECTION
	MODE DIRECTION ALIGN GEOM
	VIEW MODEL ; SHADE UNDERCUT //Закраска модели: Проверка поднутрений
	
	MACRO PAUSE "Нажмите 'Продолжить' после выбора"

//объявление переменных
REAL $V_I= 0
REAL $V_J= 0
REAL $V_K= 0

string $path = macro_path(0) + "\Measure.txt" //путь

ECHO OFF DCPDEBUG UNTRACE COMMAND ACCEPT

tracefile open $path  //открытие файла Measure.txt для записи
print formvalue DirectionInput.DirectionFrame.I // I
print formvalue DirectionInput.DirectionFrame.J // J
print formvalue DirectionInput.DirectionFrame.K // K
tracefile close      //закрытие файла Measure.txt для записи

//открытие файла GetValue для чтения
FILE OPEN $path FOR READ AS GetValue
FILE READ $V_I FROM GetValue
FILE READ $V_J FROM GetValue
FILE READ $V_K FROM GetValue
FILE CLOSE GetValue  // Закрытие $GetValue

REAL Calc =0

IF $V_K == 0 {
	$Calc=90
} ELSE {
	$Calc=sqrt(($V_I*$V_I)+($V_J*$V_J))
	// PRINT $Calc
	$Calc = Atan($Calc/$V_K)
    if $Calc > 180 {
		$Calc=$Calc-180
	}
}

STRING $Qry = "Draft angle : " + $round($Calc,3) +crlf+ "Продолжить измерения?"
BOOL Ret = 0
$Ret = QUERY $Qry

IF $Ret  {

	//Вызов функции
CALL Measure()

} ELSE {

	DIRECTION ACCEPT
  VIEW MODEL ; SHADE NORMAL //Обычная закраска
}

} // Func Measure close

} // // Func Main close

 

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

поправил немного макрос от @impact .

спасибо !

тоже хороший вариант для 2016 милла

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

Доброго времени суток

Подскажите пожалуйста, как вычислить размер прямоугольного кармана. Кривая кармана (прямоугольник) создается параметрически и импортируется с моделью. По этой кривой создается карман.

Нужно вычислить размер кармана, чтоб загрузить соответствующий инструмент. К примеру, если карман шириной больше 20 мм, то загрузить фрезу диаметром 20 мм. Если меньше, то фрезу диаметром 10. Если меньше 10, то диаметр фрезы 4 мм.

Карманы могут быть разные, от двух метров до 5 мм. Нужно делать их выборку.

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

И ещё вдогонку вопрос. Как можно передать данные из имени слоя в переменные? Слой с именем 71300050 к примеру. Нужно, со слоя, начинающего с цифры 7 сделать две переменные xSize =1300 и ySize=50. Размеры  кратны 1 мм.

Я не силен, честно сказать, в VB

 

 

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

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

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

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

заготовка в милле считается по всей модели

если выделены какие=то поверхности - то по крайним точкам этих поверхностей по всем осям

 

В 19.05.2018 в 01:28, scorpion1007 сказал:

Нужно вычислить размер кармана, чтоб загрузить соответствующий инструмент. К примеру, если карман шириной больше 20 мм, то загрузить фрезу диаметром 20 мм.

проще в макрос ввести команды по созданию нужного инструмента

или макрос будет работать не у всех (названия инструментов у всех разные)

 

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

 

если у вас паз более длинной стороной всегда по X, например - то можно посчитать ширину паза вот так

REAL $WidthY = ($block.limits.ymax-$block.limits.ymin)

так можно получить размер ширины паза по Y

и потом переменную WidthY использовать далее в макросе через оператор IF-ELSE

или через другой оператор, в зависимости от количества используемых фрез

 

PS: а вообще задумка хорошая конечно - выбрал поверхности паза, запустил макрос, и получил нужную траекторию фрезеровки

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

 

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • lem_on
      ну с дуру известно что сломать можно.
    • Viktor2004
      руку привязки так сломать легко
    • lem_on
      По моему вполне логично если станок вывалится в ошибку если рука не доехала до места. У меня так же если кулачки или деталь на пути, просто пихаеш ее до места и станок опять активен. Но нынешние пановья даже не могут написать модель станка.
    • Viktor2004
      Я согласен что скорее всего проблема механическая Но если логика прописана криво и возможно не предусмотрела остановку в промежуточном состоянии, разве не логично будет попробовать принудительно подав напряжение дернуть эту руку вверх-вниз? Возможно то что туда попало выпадет  
    • Guhl
      Если оставить за скобками вопрото том, что до м19 работает нормально, а после нет, то вы не считали сколько у него реально импульсов на оборот? с помощью стороннего плк, например  А если ориентацию м5 снимать, а не м20?
    • lem_on
      Что это за станок такой в котором сразу ладер ковырять надо, даже не смотря на возможность механической проблемы? Или профдеформация?
    • Viktor2004
      не сразу я понял в чем вопрос. Долго соображал что такое режим управления скоростью. При завершении ориентации PMC снимает сигнал G70.6 ? И если он после снятия сигнала продолжает удерживать шпиндель, при каких условиях эта ориентация все же снимается? После нажатия аварийного грибка или еще как?
    • Viktor2004
      Ладдер пришлите. Будем принудительно пробовать поднимать и опускать
    • streamdown
      Коллеги приветствую! IPS 8. Подскажите пожалуйста, кто какое серверное железо использует? Интересуют параметры при одновременной работе, ну например, 400 пользователей онлайн
    • gudstartup
      так он так и позиционируется по m19 pmc выдает g70.6 а чпу отвечает f45.7 но ориентацию и смещение в 4077 он отрабатывает нормально шпиндель встает ровно и смена происходит хорошо. вопрос почему после ввода команды управления скоростью он все еще продолжает контролировать число импульсов между нуль метками хотя в принципе уже должен отменить позиционный контроль и просто считать обороты по 0 метке как он это делает без М19? это все понятно но почему оно продолжает проверять это после завершения ориентации мне непонятно
×
×
  • Создать...