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

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

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




  • Сообщения

    • v-david
      Вы выбрали конфигурацию, но не активировали ее:       Set swCustPropMgr = CmpDoc.Extension.CustomPropertyManager(CompConfig) '------------------------------------------------------------------------------- lRetVal = CmpDoc.ShowConfiguration2(CompConfig) '-------------------------------------------------------------------------------     lRetVal = swCustPropMgr.Get4("Наименование", False, Val, ValOut)     If ValOut = Empty Then         Set swCustPropMgr = CmpDoc.Extension.CustomPropertyManager("")         lRetVal = swCustPropMgr.Get4("Наименование", False, Val, ValOut)
    • hlibhlib
      При двойном клике на имеющийся Размер для редактирования и последующем подтверждении действия слетают Настройки CAD на дефолт. ===> Бесит! Этого не было в предыдущих версиях. Может какие-то настойки нужны?  Сталкивался-ли кто с такой ситуацией?  Как выход из положения настроил линии и дуги в настройках Атрибутов. Вроде работает, но в меню Главная Цвет и ширина каркасной геометрии Дефолтная.  
    • Viktor2004
      Импортозамещение  
    • vad0000
      Нет, просто отключаете, и забываете о ней   Не надо ничего делать   Откуда приходит сигнал 24 вольта на 7 вход сервоусилителя? Фото другой страницы схемы
    • maxx2000
    • vladimir.songin
      То есть отключаю аналоговую обратную связь от аналогового входа, и подключаю вместо энкодера? Так не делал но сомнения у меня: Вход энкодера может  быть 12 или 5 вольт. У нас 12. Два пина питание, два пина Каналы A B соответственно, один пин REF (непонятно что он означает и как работает). Остальные соеденены вместе. На какие из них подавать аналаговый вход обратной связи дефлектора.  сигналы от энкодера приходят, проверял осцилографом на самом разьёме непосредственно на входе DM02, и некое значение уже могло бы отобразиться в поле энкодера при отключенном аналаговом входе.  Если отключить аналоговый вход, то видим единичку в обоих полях, но уже писал об этом.  
    • Алексей 1977
      Кто знает подскажите как отключить этот ненужный набор букв и символов в готовой УП? Я так думаю надо редактировать постпроцессор? Заранее спасибо ( Общая длина: 130.0) ( Заготовка:) ( MIN X: -10.970) ( MIN Y: -10.970) ( MIN Z: -6.500) ( MAX X: 10.970) ( MAX Y: 10.970) ( MAX Z: 0.000) ( COORDINATE SYSTEM: Глобальная СК) ( Кончик инструмента:) (   X: -0.000) (   Y: 0.000) (   Z: 10.000) ( Рекомендованная длина: 50.000) ( Количество кромок: 4) ( Инструмент:   Концевая фреза) ( DIAMETER: 10.000) ( Безопасность:) ( Рабочие ходы инструмента: Безопасная БЕЗ зарезов) ( Подводы инструмента: Безопасная БЕЗ зарезов) ( Переходы инструмента: Безопасная БЕЗ зарезов) ( Рабочие ходы патрона: Столкновения НЕ проверялись) ( Подводы патрона: Столкновения НЕ проверялись) ( Переходы патрона: Столкновения НЕ проверялись) ( Траектория: Шаблон) ( STEPOVER: 5.000) ( ДОПУСК:0.100) ( THICKNESS:0.000) ( Статистика:) ( LENGTH: 95.318)( LIFTS: ( TIME: 0/00/05) 1) G0X0Y0 G43Z10.H13 X4.75Y-8.227 Z5. G1Z0F500 X9.5Y-5.485F1000 Y5.485 X0Y10.97 X-9.5Y5.485 Y-5.485 X0Y-10.97 X4.75Y-8.227 G0Z10.
    • gudstartup
      считывание происходит при помощи вх\вых сигналов контроллера plc 
    • gudstartup
      @Maks Horhe так все таки скиньте бэкап эмулируем ваше чпу в cncguide и посмотрим куда поедет?  можете снять видео с фиксацией координатных позиций после каждого кадра. Выложу вашу программу пусть программисты посмотрят все ли в ней ок. %O0002 G40 G17 G94 G90 G49 G80 N1 G91 G28 Z0.0 N2 G91 G28 X0.0 Y0.0 N3 G91 G28 B0.0 C0.0 N4 M03 S200 N5 G90 G0 G53 B0.0 C0.0 N6 G54 N7 X0.0 Y0.0 N8 G90 G43 H01 N9 G90 G0 X0.0 Y0.0 N10 G90 G0 Z200.0 N11 G01 Z10.0 F1500. N12 M00 N13 G00 Z200.0 N14 G40 G49 G69 N15 G00 G53 Z0.0 N16 G00 G54 B0.0 C0.0 N17 G68.2 X0.0 Y0.0 Z0.0 1135. J39.2044 K-129.2315 N18 G53.1 N19 G01 X0.0 Y0.0 F1500 N20 G90 G43 H01 N21 G90 G01 X0.0 Y0.0 F1500 N22 G90 G01 Z200. F1500 N24 M00 N25 G00 Z200. N26 G40 G49 G69 N27 G91 G28 Z0.0 N28 G28 X0.0 Y0.0 N29 G91 G28 B0.0 C0.0 N30 M5 N31 M30
    • gudstartup
      @karlf 530 считывает ключ по специальному протоколу при помощи plc и получает его серийный номер а из него определяет возможные режимы доступа. там нет драйвера а есть plc модуль или несколько эти модули написаны на питоне  надпись smartkey исчезает с экрана при запуске чпу??
×
×
  • Создать...