eksodus

Макросы в Power Mill

359 сообщений в этой теме
готовлю пакет макросов для всеобщего пользования

а что за макросы там будут ?

будет интересно посмотреть их

и когда это будет возможно ?

 

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

но по сути другим может пригодится штуки 2-3

я парочку уже выкладывал - один для зеркалирования проекта и второй для гравировки

а другие наврядли кому-то пригодятся

Поделиться сообщением


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


простые макросы, упрощающие и ускоряющие дятлополобные действия до 1 клика:

-работа с проходами траектории (7макро)

-работа с перебегами (5макро)

-работа с врезанием 

-проверка зарезов/столкновений/расчет вылета(3макро)

-подгрузка инструмента с режимами и подачами, оправками (не база РМ)

-расчет траектории для кромочной фрезы на подчистку острых кромок корпусных деталей(4макро, с 2д корректором и без)

-схлопывание дерева РМ

-создание СК на выделенном фрагменте детали

-смена цветовой палитры для вывода NC на печать / для работы

 

сборка макро вшита в русифицированное меню пользователя(с описанием его установки), и проверена для работы с версиями от PM9 до РМ2016

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

Изменено пользователем lnslns

Поделиться сообщением


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

сборка макро вшита в русифицированное меню пользователя(с описанием его установки), и проверена для работы с версиями от PM9 до РМ2016

 

то есть - это будет сделано типа в виде дополнительного приложения ?

или встраивается непосредственно в сам повермилл ?

есть возможность посмотреть предварительный скриншот ?

свои макросы можно будет добавлять ?

 

PS: на каком языке программирования работают макросы в повермилле ?

C# ? C++ ?  или другое что-то ?

хочу всё-таки исправить неработающие макросы в моём переводе

Поделиться сообщением


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

то есть - это будет сделано типа в виде дополнительного приложения ?

нет все штатными средствами РМ

 

или встраивается непосредственно в сам повермилл ?

но оно встраивается в меню

 

есть возможность посмотреть предварительный скриншот ?

да чуть позже

 

свои макросы можно будет добавлять ?

да

 

PS: на каком языке программирования работают макросы в повермилле?

синтаксис собственный РМ

Изменено пользователем lnslns

Поделиться сообщением


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

Доброго Всем времени суток! Подскажите как макросом можно открыть папку в которой сохранен NC файл проекта?

Поделиться сообщением


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

как макросом можно открыть папку в которой сохранен NC файл проекта?

 

стандартная команда ДОС по смене директории - CD (change directory)

синтаксис такой -

CD "C:\temp"

вместо C:\temp указать нужную папку с NC файлами на компе

Поделиться сообщением


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

Доброго Всем времени суток! Подскажите как макросом можно открыть папку в которой сохранен NC файл проекта?

Именно папку?

Сам файл открывается легко и просто, ПКМ на файле в дереве:

post-25054-0-28847400-1459162161.jpg

Поделиться сообщением


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

Именно папку?

Сам файл открывается легко и просто, ПКМ на файле в дереве:

attachicon.gif0.jpg

Это да но он открывается во внешней программе. Но перед тем как отправить его на ЧПУ нужно перейти в папку с сохраненным объектом и от туда скачать сам файл но через программу это не реализован.

Поделиться сообщением


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

как перейти в папку я указал, но другие команды не работают в 2012 милле (создать-копировать и тд)

но даже если бы и работали  - пришлось бы вручную каждый раз указывать -  откуда и куда копироваться должно

 

а это довольно неудобно - проще сразу на нужную папку (можно даже сетевую) записывать NC файлы

Поделиться сообщением


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

Доброго Всем времени суток! Подскажите как можно получить информацию о длине хвостовика или как то проверить существует ли он у активного инструмента?

Например переменная:

Tool.Length

работает, но для хвостовика такой переменной не нашёл.

Та что есть для техкарт:

MCLength

почему то в макросе выдаёт ошибку

Поделиться сообщением


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

Частично отвечу на свой вопрос т.к. хотел способ под Powermill 2012, но нашёл только под более старшую версию, скорей всего начиная с 2015, сам же протестировал на 2016.

Выкладываю полностью весь свой макрос для проверки на столкновения и зарезы. Проверяются все траектории в папке с активной траекторией, без учёта подпапок. Если длина хвостовика больше нуля (то есть он есть), то идёт проверка и на зарезы и на столкновения, в противном случае только на зарезы. В процессе проверки не показывает сообщений.

//PowerMill 2016

DIALOGS ERROR OFF
DIALOGS MESSAGE OFF

STRING $FolderName = dirname(pathname(entity('Toolpath',''))) //определяет путь по активной траектории

real $ShankLength = size(ENTITY('tool', '').ShankSetValues) //длина хвостовика

FOREACH t IN folder ($FolderName) {

//исключение подпапок
IF dirname(pathname(t)) == $FolderName {

ACTIVATE TOOLPATH $t.Name

//Если хвостовик не равен нулю
If $ShankLength != 0 {

//Проверка на зарезы и столкновения
EDIT COLLISION TYPE GOUGE
EDIT COLLISION SPLIT_SEGMENT N
EDIT COLLISION SPLIT_TOOLPATH N
EDIT COLLISION APPLY
EDIT COLLISION TYPE COLLISION
EDIT COLLISION ADJUST_TOOL N
EDIT COLLISION APPLY


} else {

//Проверка на зарезы
EDIT COLLISION TYPE GOUGE
EDIT COLLISION SPLIT_SEGMENT N
EDIT COLLISION SPLIT_TOOLPATH N
EDIT COLLISION APPLY

}

}

}

DIALOGS ERROR On
DIALOGS MESSAGE On

4 пользователям понравилось это

Поделиться сообщением


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

Выложу тогда ещё один макрос под PowerMill 2016. Макрос открывает папку где лежит сам проект.

//PowerMill 2016

STRING Dirbase = project_pathname(0)  //полный путь до проекта (включая сам проект)
STRING filebase = project_pathname(1) //название папки проекта

STRING $Dir = replace($Dirbase, $filebase, "") //заменяет filebase на '' в пути проекта

OLE FILEACTION "OPEN" $Dir //открывает папку где лежит проект
4 пользователям понравилось это

Поделиться сообщением


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

В дополнении к предыдущему макросу. Если папка где лежит проект с таким же названием как и сам проект, то оба эти названия будут удалены командой replace. Нужны дополнительные условия. Как вариант:

//PowerMill 2016

STRING Dirbase = project_pathname(0)  //полный путь до проекта (включая сам проект)
STRING filebase = project_pathname(1) //название папки проекта
real length = length($Dirbase) - length($filebase) //количество символов в переменной $Dirbase без учёта $filebase

STRING $Dir = substring($Dirbase, 0, $length) //отображает строчку с позиции 0 до $length

OLE FILEACTION "OPEN" $Dir //открывает папку где лежит проект
2 пользователям понравилось это

Поделиться сообщением


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

Макрос для нумерации инструмента. Если инструмент активен, то нумерация работает только в активной директории, без учёта подпапок, в противном случае нумеруется весь инструмент. Есть возможность указать с какой позиции начинать отчёт.

DIALOGS ERROR OFF
DIALOGS MESSAGE OFF

string T = ""
$T = INPUT "Введите начало отчёта"
INT nmb = $T

STRING path = pathname('tool', '')

// Проверка наличия активных инструментов
IF path != '' {

STRING $FolderName = dirname(pathname(entity('Tool',''))) //определяет путь по активному инструменту

FOREACH t IN folder($FolderName) {

//исключение подпапок
IF dirname(pathname(t)) == $FolderName {

$t.number.value = nmb
$t.number.userdefined = 1
$nmb = nmb + 1

}

}

} else {

FOREACH t IN folder('Tool') {

$t.number.value = nmb
$t.number.userdefined = 1
$nmb = nmb + 1

}

}

DIALOGS ERROR On
DIALOGS MESSAGE On
1 пользователю понравилось это

Поделиться сообщением


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

Макрос для замены инструмента. Замена происходит в цикле в директории активной траектории без учёта подпапок. Активный инструмент - тот что подлежит подмене, а тот на который меняется инструмент должен иметь приставку "_new".

DIALOGS ERROR OFF
DIALOGS MESSAGE OFF

string $ToolName = Tool.Name

//______получение имени нового инструмента_____

STRING $FolderName = dirname(pathname(entity('Tool',''))) //определяет путь по активному инструменту

FOREACH t IN folder($FolderName) {

// Получение имени в Нижнем регистре
STRING $RTName = lcase(t.Name)

// Проверка, содержит ли имя '_new'
IF position(t.Name, "_new") >= 0 {

string $ToolReplace = t.Name

//_____________________________________________

STRING $FolderName = dirname(pathname(entity('Toolpath',''))) //определяет путь по активной траектории

FOREACH $tp IN folder($FolderName) {

//исключение подпапок
IF dirname(pathname(tp)) == $FolderName {

//Если активный инструмент равен $ToolName
IF $tp.Tool.Name == $ToolName {

EDIT TOOLPATH $tp.Name REPLACE_TOOL $ToolReplace  //$tp.Name заменяется на $ToolReplace

}

}

}

}

}

DIALOGS ERROR On
DIALOGS MESSAGE On

Поделиться сообщением


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

Макрос для нумерации траекторий. Добавляет порядковый номер к траектории, который заканчивается точкой, наличие которой и проверяется макросом. Работает только в активной директории без учёта подпапок. Если траектории не пронумерованы (идёт проверка на наличие точки в первых 4 символах в названии траектории), то нумеруются все траектории, если есть, то происходит повторная нумерация. Также из названия траектории убираются все "_" и заменяются " "

DIALOGS ERROR OFF
DIALOGS MESSAGE OFF

STRING $FolderName = dirname(pathname(entity('Toolpath',''))) //определяет путь по активной траектории

INT $nmb =1

FOREACH t IN folder ($FolderName) {

//исключение подпапок
IF dirname(pathname(t)) == $FolderName {

ACTIVATE TOOLPATH $t.Name

STRING $OneName = Toolpath.name             //имя активной траектории
STRING $twoName = substring(OneName, 0, 4) //первые 4 символа от начала строки (0-начало)


//проверка наличия точки в первых трёх символах от начала строки
IF position($twoName, ".") == -1 {

//Если точки нет

STRING $Name = replace($t.Name, "_", " ") //заменяет '_' на ' ' в названии траектории
string $N=$nmb
string $newname=$N+'.'+$Name
RENAME TOOLPATH ; $newname
$nmb = nmb + 1 //счётчик траекторий

} else {

//Если точка есть

STRING $pointName = substring($twoName, 0, (position($twoName, "."))+1 ) //колличество символов до первой точки (отсчёт в переменной position идёт от 0, а должна быть длина, поэтому +1) от начала строки

STRING $Name = replace($t.Name, pointName, "") //убирает со строки $t.Name указанные символы в переменной $pointName

STRING $Nametwo = replace($Name, "_", " ") //заменяет '_' на ' ' в названии траектории
string $N=$nmb
string $newname=$N+'.'+$Nametwo
RENAME TOOLPATH ; $newname
$nmb = nmb + 1 //счётчик траекторий

}


}

}

RESET LOCALVARS // очистить временные переменные

DIALOGS ERROR On
DIALOGS MESSAGE On

Поделиться сообщением


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

Макрос для изменения вылета инструмента с патрона. Используется пользовательский Диалог ввода. В шапке выводится запрос и текущий вылет.

string prompt = "Введите значение вылета.Текущее "+Tool.OVERHANG
do {
bool err = 0
do {
real $i = input $prompt
$err = ERROR i

EDIT PAR 'TOOL.OVERHANG' $i//вылет с патрона
Изменено пользователем Konstantin_VP

Поделиться сообщением


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

спасибо )

Поделиться сообщением


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

рано радовался

если нет открытого проекта - милл наглухо виснет

это можно исправить ?

Поделиться сообщением


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

рано радовался

если нет открытого проекта - милл наглухо виснет

это можно исправить ?

У меня ничего не происходит если активировать макрос в PowerMill 2016 без проекта. А что он должен в этом случае делать?Что открывать?

Поделиться сообщением


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

Возможно вы воспользовались именно первым вариантом этого макроса. Я использую второй, который также выложил. Он сразу после первого идёт, воспользуйтесь им. Там не зависнет т.к. строка нулевой длины не может привести к зависанию PowerMill. В любом случае как вариант можно воспользоваться этим:

//PowerMill 2016

STRING Dirbase = project_pathname(0)  //полный путь до проекта (включая сам проект)
STRING filebase = project_pathname(1) //название папки проекта
real length = length($Dirbase) - length($filebase) //количество символов в переменной $Dirbase без учёта $filebase

STRING $Dir = substring($Dirbase, 0, $length) //отображает строчку с позиции 0 до $length

If $Dir !='' {

OLE FILEACTION "OPEN" $Dir //открывает папку где лежит проект

} else {

PROJECT OPEN PROJSELECTOR //окно открытия проекта

}

Если проект не открыт, то появляется окно для открытия проекта.

Изменено пользователем Konstantin_VP

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
А что он должен в этом случае делать?Что открывать?

ну открывать ничего не должен, но и милл виснуть как бы не должен

Возможно вы воспользовались именно первым вариантом этого макроса.

ну это понятно что первым - я то цитировал с сообщения с первым макросом

В любом случае как вариант можно воспользоваться этим:

спасибо - это самый правильный вариант )

Поделиться сообщением


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

ID: 63   Опубликовано: (изменено)

Макрос для добавления траекторий из активной папки без учёта подпапок в NC. После добавления на всех траекториях где в названии есть 'чист' включается корректор слева.

//PowerMill 2016

DIALOGS ERROR OFF
DIALOGS MESSAGE OFF


STRING path = pathname('toolpath',Name)

// Проверка наличия активных траекторий
IF path != '' {

STRING $FolderName = dirname(pathname(entity('Toolpath',''))) //определяет путь по активной траектории

FOREACH t IN folder ($FolderName) {

//исключение подпапок
IF dirname(pathname(t)) == $FolderName {

NCPROGRAM ;
APPEND TOOLPATH $t.Name // Добавить все траектории из папки без учёта подпапок

}

}

//_________________________________________
//Включение корректора на траекториях с приставкой 'чист' В названии

int $Item = 0

STRING NCName  = entity('ncprogram','').Name //Активный NC

FOREACH ncitem IN components(entity('ncprogram', $NCName)) {

// Проверка траекторий в NC-файле
IF ncitem.RootType == 'nctoolpath' {

// Получение имени в Нижнем регистре
STRING $lcaseName = lcase(ncitem.Name)

// Проверка, содержит ли имя 'чист'
IF position($lcaseName, "чист") >= 0 {

EDIT NCPROGRAM ; ITEM $Item COMPONENT ${($Item)*1000}

COMP_CODE LEFT //корректор слева

$Item = Item + 1

} else {

$Item = Item + 1

}

}

}

//_________________________________________

} ELSE {

NCPROGRAM ;
APPEND TOOLPATH ALL  // Добавить все траектории

}


DIALOGS ERROR On
DIALOGS MESSAGE On
Изменено пользователем Konstantin_VP

Поделиться сообщением


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

 

Теперь возникает вопрос, как сохранить оформление рабочего  пространства с подписями кнопок, расположением и т. п. Для переноса на другую машину??

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
как сохранить оформление рабочего пространства с подписями кнопок, расположением и т. п.

да там же кнопочка есть сохранить )

сохраняет как xml-файл, внутри которого прописаны названия кнопок, название иконок, названия и расположение макросов

 

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

если расположение другое - подправить ручками xml-файл

1 пользователю понравилось это

Поделиться сообщением


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

Привет всем. Макросами пользуюсь недавно, но их эффективность на лицо. Создаю макросы путем записи действий... Ну если надо корректирую немного. Работал в PowerMill 2012, сейчас перешел на 2016. Так вот. До сих пор никак не могу понять, как использовать "активные элементы".

Например, я создаю СК модели "По Заготовке", затем указываю направление осей. И это практически на всех деталях. Использование макроса в данном случае очень эффективно. Но бывают детали, когда приходится обрабатывать с двух сторон, при этом создаю две СК. В какой-то момент СК 2 нужно перенести в другую точку. Опять пользуюсь макросом. Но тут проблема! Этот макрос создавал через "Запись-СТОП". И в макросе явно указана СК, которая была активна при создании макроса. Мне же нужно изменить СК под другим номером(именем). Вопрос№1, как записать строку макроса, которая бы указывала бы на активный элемент? Вопрос №2, как записать строку макроса, чтобы происходил запрос на указание номера(имени) СК? Подобные запросы мне нужны не только относительно СК, но и границ, инструмента, 2Д моделей...

1 пользователю понравилось это

Поделиться сообщением


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

Вопрос№1, как записать строку макроса, которая бы указывала бы на активный элемент?

Вопрос №2, как записать строку макроса, чтобы происходил запрос на указание номера(имени) СК?

то, что Вы хочете сделать - это не "строка макроса", а использование переменных, функций и операторов

 

1) для проверки активного элемента используйте функцию active, например в операторе IF:

IF active(….) {
…
}

2) для указания имени (СК, границы, траектории) нужно использовать переменные, например

string prompt = "Введите имя"
$i = input $prompt
$err = ERROR i
}

и потом сделать обращение к этой переменной, или вставить этот блок кода внутри какой-то функции или оператора

Изменено пользователем eksodus

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
для проверки активного элемента используйте функцию active, например в операторе IF:
В строке макроса могут быть несколько функций и операторов, как я понял из листинга самих макросов, разделенные ";" Но это не важно

Получается, что для поиска активного элемента помимо оператора IF, для перебора всех элементов нужен еще и цикл? Не сложно ли? Это я к тому, что возможно в ПоверМилл есть типа глобальные переменные, куда заносятся данные изменяет которые только сам Повер. Ну, типа "workplane_active=3". А я в своем макросе используя переменную workplane_active, совершаю действия над активной СК, т.е над 3-й.

Поделиться сообщением


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

В строке макроса могут быть несколько функций и операторов, как я понял из листинга самих макросов, разделенные ";"

 

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

 

Получается, что для поиска активного элемента помимо оператора IF, для перебора всех элементов нужен еще и цикл? Не сложно ли?

 

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

но оператор IF это не оператор цикла,  а раздвоение действий

 

PS: посидел немного над руководством по макросам от 2016 милла, и вот что получилось:

IF entity_exists(workplane) {
   FORM BLOCK
   } else {
      FORM TOOLZHEIGHTS
}

Пояснение: если есть активная СК (с любым именем) - открыть заготовку, если нет активной СК - открыть режимы резания

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

если что - пиши, я поясню

 

и по второму вопросу хотелось бы прояснить - что ты хочешь сделать ?

можно поподробнее, или  часть макроса ?

Поделиться сообщением


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

Спасибо большое за участие, ответы. По первому вопросу теперь все ясно.

Второй вопрос по сути как и первый. Просто выбор идет не по активному элементу, а при явном его указании и если он не активный, сделать его активным и тогда работать с ним. Буду пробовать твои варианты.

Поделиться сообщением


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

Вопрос еще. Ты спец только по макросам или по всему ПоверМилл? По НЦСтудио? Есть ли здесь подобные ветки?
Я год назад устроился на наше предприятие... Мы изготавливаем деревянные модели для литейного производства. Я ЧПУ-шник с большим стажем, пишу программы, но преимущественно  по токарным работам. Здесь же фрезеровка, да еще 3Д. У нас стоял ПоверМилл 8. Вот с него и начинал. Через три месяца я остался один из программистов, самостоятельно мог уже многое делать. Нашел ПоверМилл 2012 в ноябре, с мая сижу на 2016. Переход с версии на версию прошел успешно. Но понимаю, что знаю его мало, хотя для наших работ полностью мои знания ПоверМилла подходят. Просто хочу самосовершенствоваться...

Поделиться сообщением


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

ACTIVATE Workplane "3" - это прямое указание

чтоб заменить "3" на окно с выбором, скорее всего нужно будет исп-ть функцию какую-то, со строковой переменной

ну типа примера выше - string prompt

я такое сразу не напишу, а времени посидеть разобраться сейчас нет

 

Ты спец только по макросам или по всему ПоверМилл?

да я не спец - я только учусь )

зайди на форум делкама почитай  - один пишет что у него есть  макрос на 2 Мб, с помощью которого он делает почти все детали

2 МБ ! только представь сколько это страниц команд получится !?

вот он спец

Поделиться сообщением


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

Вопрос №2, как записать строку макроса, чтобы происходил запрос на указание номера(имени) СК?

получилось вот так -

$workplane = INPUT "Введите имя СК"
ACTIVATE workplane $workplane

если нужно это проделать с другими элементами, то "workplane" заменить три раза на нужный элемент

 

Вопрос№1, как записать строку макроса, которая бы указывала бы на активный элемент?

Подобные запросы мне нужны не только относительно СК, но и границ, инструмента, 2Д моделей

использование активного элемента указывается точкой с запятой

по крайней мере для траекторий и границ проверил - работает

например - вот прямое указание  -

EDIT TOOLPATH "1" CALCULATE

т.е. - вычислить траекторию 1

а вот указание на активный элемент

EDIT TOOLPATH ; CALCULATE

будет вычислена активная траектория

 

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

STRING activename = Toolpath.name
EDIT TOOLPATH $activename CALCULATE

для границ тоже работает

 

PS: в последнем случае использовалась строковая переменная activename

как я понял - это внутренняя переменная повермилла

в справке её нет, как и нет других внутренних переменных (нашёл на форуме делкама)

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

Изменено пользователем eksodus
1 пользователю понравилось это

Поделиться сообщением


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

Есть ли макросы позволяющие автоматически разделить по слоям вертикальные/горизонтальные поверхности, поверхности перпендикулярные плоскости ХУ (отверстия, пазы, окна)?

 

Макрос можно построить на основе следующих команд:

 

EDIT SELECTUNDERCUT MODEL "<Имя модели>" FORM SELECTUNDERCUT

VIEW MODEL ; UCANGLE "0"   // 0 - вертикальные стенки; 90 - горизонтальные

EDIT SELECTIONTOOLS MATCH_DRAFT_ANGLE YES

FORM APPLY SELECTUNDERCUT

Поделиться сообщением


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

возможно в ПоверМилл есть типа глобальные переменные, куда заносятся данные изменяет которые только сам Повер. Ну, типа "workplane_active=3". А я в своем макросе используя переменную workplane_active, совершаю действия над активной СК, т.е над 3-й.

в дополнение к моему предыдущему посту, нашёл вот такую строку макроса

STRING ModelName = INPUT ENTITY MODEL "Set Active Model."

здесь имени модели присваивается имя активной модели

думаю, для СК можно будет поступить также

но я пока не проверял

Изменено пользователем eksodus

Поделиться сообщением


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

Здравствуйте, подскажите макрос который бы вычислял заготовку (блок) и к вычисленной длине X прибавил 20 мм, проблема как добавить 20 мм, макрос должен работать для любой импортированной модели

1.png

Изменено пользователем kvint62

Поделиться сообщением


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

Здравствуйте, подскажите макрос который бы вычислял заготовку (блок) и к вычисленной длине X прибавил 20 мм, проблема как добавить 20 мм, макрос должен работать для любой импортированной модели

ну это же простейший случай - разве простая запись действий не срабатывает тут ?

Поделиться сообщением


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

ну это же простейший случай - разве простая запись действий не срабатывает тут ?

Простая запись срабатывает, но только для той модели для которой производилась запись, после вычисления заготовки "Длина X" имеет некое значение например 100, пишу как выше на скрине +20 к "Длине X", в итоге в макросе "Длина X" всегда вычисляется 120 мм, а нужно чтобы к фактической вычисленной "X" добавлялось 20 мм, (чтоб макрос был универсальным для любой загруженной модели).

Поделиться сообщением


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

нужно чтобы к фактической вычисленной "X" добавлялось 20 мм, (чтоб макрос был универсальным для любой загруженной модели).

да, почему-то милл добавляет 20мм к фактическому значению

 

тогда - вот такой вариант:

FORM BLOCK
DELETE BLOCK
EDIT BLOCK ALL UNLOCK
EDIT BLOCK TOLERANCE "0.01"
EDIT BLOCK RESETLIMIT "10"
EDIT BLOCK RESET
EDIT BLOCK XLEN LOCK
EDIT BLOCK XMAX LOCK
EDIT BLOCK RESETLIMIT "0"
EDIT BLOCK RESET
BLOCK ACCEPT

 

Поделиться сообщением


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

Всем привет.

Я ничего не смыслю в макросах. Хочу посоветоваться со спецами. Есть проблема, можно ли решить вопрос на уровне макросов. Если в теории такое вообще возможно, то начну копать макросы )

 

Суть проблемы такова, - имеется пятиосеовой голова-голова. Ограничения по поворотной голове +-360гр. Реконфигурацию( раскрутку) сложно реализовать, поэтому в НЦ файле стоит проверка на достижение ограничения и если ограничение достигнуто, постпроцессирование останавливается по ошибке. Штатные методы(упорядочивание зигзагом и автоматическое упорядочивание зигзагом) не делают свою работу, ось в некоторых местах все равно закручивается. Приходится править ручками или резать траекторию на две, вдоль оси вращения.

 

Можно ли теоретически править траекторию макросом, чтоб при достижении лимитов по оси менялось бы направление траектории на противоположное?

Поделиться сообщением


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

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

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

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



  • Реклама

  • Сообщения