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

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

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




  • Сообщения

    • 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
      нет время нет заниматься да и информации новой нет Это я на других станках делал
×
×
  • Создать...