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

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

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




  • Сообщения

    • MagicNight
      Да дело не в бедности, ищу оптимальный ноут, пока не могу найти.
    • fenics555
      Уважаемые Дамы и Господа!  Есть библиотечные изделия, которые почему-то очень доооооолго грузятся в сборках. Я хочу попросить Вас потестить их и сказать в чем причина, ибо совсем невозможно работать. gost18829-73.prt.1 pin_split.prt.1 Как это всё можно ускорить?
    • gudstartup
      а вы хоть станок проверяли по программе на изделии на точность прежде чем товарищей этих выгнать? если нет то грешите на самих себя! система в наших краях еще не распространенная поэтому и тем тут нет надо в поднебесную писать
    • AlexArt
      Ну допустим, ты и на другом ресурсе это опубликовал. А не коммуниздил. Но вот продвигать воровство от государства, ворующее из Вики, это верх мерзости.
    • maxx2000
      Ах, да. Фильтры выбора добавили. Теперь можно выбрать только то что видно на первом плане, а не вместе с тем что с обратной стороны детали. В общем надо обновляться. Как раз работёнка на прессформу нарисовалась 
    • maxx2000
      Причина того - Кроилово. Кроилово всегда приводит к попадалову. Месяц простоял сколько мильонов деревянных потеряли? Вопрос риторический. И ещё будет стоять. Как памятник человеческой глупости и жадности.
    • AlexKaz
      "9 июля 1968 года на мышах был проведен самый знаменитый эксперимент американского ученого-этолога Джона Кэлхуна «Вселенная-25». Суть опыта заключалась в создании идеальных условий, где мыши могли бы жить и размножаться, не ведая никаких забот, вдали от хищников и в отсутствие эпидемий и заболеваний. Для этих целей ученый построил специальный загон, куда были помещены четыре пары белых мышей (самцов и самок). В распоряжении мышей всегда была чистая вода и еда в изобилии, специальные гнезда, где можно обустроить себе жилище ― гнезд в загоне хватало для проживания нескольких тысяч мышей. Температура в загоне в среднем составляла около 20 ℃ и была комфортной для мышей. Животные не подвергались никаким влияниям извне и жили в идеальных условиях в свое удовольствие. А дальше началось самое интересное. На первом этапе эксперимента мыши хорошо размножались, вели активный образ жизни, охотно играли. На следующей фазе эксперимента мыши стали есть меньше, перестали наедаться до отвала. На третьей фазе эксперимента, когда в загоне были уже сотни мышей, произошло распределение социальных ролей, стала ярко выраженной иерархия, клановость. Появились так называемые отверженные ― молодые особи, которых другие, взрослые мыши сгоняли в центр загона, не давали им вести нормальный образ жизни, причиняли физический вред. В природе такое, наверное, было бы невозможно, ведь эти мыши-агрессоры просто не дожили бы до старости: их бы съели хищники. Но в загоне Кэлхуна хищников не было, и взрослые мыши начали попросту издеваться над молодняком. Образовались две большие группировки: самцы-одиночки и самки-одиночки. При этом самки-одиночки отказывались спариваться <с менее статусными многочисленными молодыми самцами и с оставшимися старыми статусными> и отвергали ухаживания самцов. У мышей стал проявляться тотальный индивидуализм, мыши не стремились создать семью. На последней, четвертой стадии мышиная популяция стала сокращаться. Появились самцы, которых сам Кэлхун назвал «красивыми» (англ. beautiful ones), из-за отсутствия ран и рубцов. <В оригинале: They never engaged in sexual approaches toward females, and they never engaged in fighting, and so they had no wound or scar tissue. Thus their pelage remained in excellent condition. - Дословный перевод: Они никогда не прибегали к сексуальным подходам к самкам, и они никогда не участвовали в боях, и поэтому у них не было ран или рубцовой ткани. Таким образом, их шерсть сохранилась в отличном состоянии.> Эти мыши не вступали в борьбу за самок и территорию, не проявляли активности к размножению и только питались, спали и чистили шёрстку. У мышей стали проявляться различные формы девиантного поведения, вспышки агрессии. Самки стали проявлять агрессию, защищать себя сами, стали умерщвлять своих детенышей, а затем окончательно отказались размножаться. На пике эксперимента в загоне одновременно проживало чуть более двух тыс. мышей. Еды и гнезд было достаточно для дальнейшего роста популяции, но через четыре года после начала эксперимента Кэлхун остановил свой опыт, потому что в загоне осталось чуть более сотни мышей, и все они уже вышли из репродуктивного возраста. По итогам эксперимента Кэлхун пришел к выводу, что достижение определенной плотности населения и заполнение социальных ролей в популяции приводит к распаду общества" https://physicsoflife.pl/dict/pic/calhoun/calhoun.. https://scientificrussia.ru/articles/utopiya-dlya-mys.. https://ru.wikipedia.org/wiki/Кэлхун,_Джон_(этолог)
    • gudstartup
      @Koels вот в чем дело пока ds609 это предупреждение поэтому F может и не появится если sv601 это значит ошибка. возможно при нагреве радиатора серво определяет это как предупреждение или ваш вентилятор крутиться медленнее чем оригинальный и серва думает что он встал хотяпри этом обычно на экране в строке состояния FAN.мигает больше у меня вариантов нет....  
    • ДОБРЯК
      Решите любым алгоритмом. Тогда будет конструктивный разговор. :=)
    • Fedor
      https://en.wikipedia.org/wiki/List_of_numerical_analysis_topics#Eigenvalue_algorithms     :) 
×
×
  • Создать...