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

Макросы в Power Mill


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

В 25.01.2019 в 10:48, scorpion1007 сказал:

 Скорее всего никак. Проще выровнять все детали в CADe.

В PowerMill тоже это можно поправить через Модель->Правка->Трансформация, но хочется волшебную кнопку чтобы само:)

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


В 25.01.2019 в 22:04, eksodus сказал:

PS: вы в макросе разворачиваете отверстия - не совсем понял с какой целью это делается, можете кратко разъяснить ?

1) Бывает SPEP, бывает DGK.
2) Для одного раскроя листа всегда 1 модель с несколькими деталями.
3) В повермилле делается много разных работ, не только раскрой, но и гравировка и фрезеровка, в том числе и 5-и осевая.
4) Нет
5) не имеет
6) Все делается через макрос без выделения. Если сразу понятно, что макрос не сделает правильно, то вручную приводим к результату, чтобы макрос сработал.
7) Изначально в макросе было прописано распознавать отверстия смотрящие вниз. Но в таком случае, отверстия смотрящие вверх игнорировались. Если распознавать в обоих направлениях, то в одной траектории оказывались смотрящие вверх и вниз, а потом их приходилось разворачивать в ручную.
Сейчас отдельно распознаются смотрящие вниз, отдельно смотрящие вверх - их переворачиваем и объединяем вместе.

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

7) просто не совсем понял цель - если сделать чтобы все смотрели вверх - возьмите код из моего макроса по сверлению,

там все отверстия сразу создаются смотрящими вверх

 

ну в общем - попробовал немного, не получается поделить 1 деталь= 1 модель

 

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

а) в файле импорта ресурсов Exchange добавьте внизу строку

sdxOptExplodeSolids False

и в настройках импорта в PM уберите галочку "Разбивать тела"

(можно в макросе в начале снять галочку и в конце вернуть)

теперь каждая деталь будет как цельное твердое тело, а не как набор поверхностей

если импортируете модели как STEP - значит в файле ресурсов Step.rsc по адресу:

Exchange/sys/shemas/resources

если другой формат - значит в другом формате тоже

 

можно договориться например, для таких деталей скидывали чтобы всегда в одном формате - STEP

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

 

б) в макросе для PM поставить паузу с запросом - выберите деталь

клацнув на деталь она выберется вся, потом ПКМ - Правка - Трансоформировать

ну или забить в макрос команду на перемещение детали по Z

 

в) потом продолжить макрос

 

PS: я точно не знаю как, и возможно ли без шейпа поделить деталь на модели

если разобраться как - то теоретически можно будет все макросом забить

 

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

Привет народ.

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

Макрос простой, простая обрезка детали по периметру за несколько проходов. Нужно установить макросом начальную точку в нижнем правом углу. 

Ссылка на вопрос с приложенным видосом для понимания, там же приложенный код и ссылка откуда взят принцип

 https://forums.autodesk.com/t5/powermill-forum/use-command-to-automatic-move-the-start-point-part2/m-p/8640208/highlight/false#M15649 

Буду рад любой помощи

 

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

@Konstantin_VP , по поводу макроса по переименованию траекторий:

а если требуется переименовать траектории просто в "1","2","3" и т.д, разумеется с проверкой на существование одноименных траекторий? Очень бы желателен такой  макрос. К сожалению, сам в языках программирования ничего не смыслю.

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

Нашёл макрос для выведения общей статистики NC файла

 


IF (ENTITY_EXISTS('ncprogram','')) {
//Calculate ncprogram time
ENTITY tpath = entity('ncprogram','')
REAL $total_time = $tpath.statistics.leadsandlinks.times.rapid
$total_time = total_time + $tpath.statistics.leadsandlinks.times.plunge
$total_time = total_time + $tpath.statistics.leadsandlinks.times.ramp
$total_time = total_time + $tpath.statistics.leadsandlinks.times.others
$total_time = total_time + $tpath.statistics.cuttingmoves.times.linear
$total_time = total_time + $tpath.statistics.cuttingmoves.times.arcs
STRING $msg = string(round($total_time,2))
//MESSAGE INFO "Total Time $Msg mn"
$total_time = INPUT "Total Time NC Time Mn"
} ELSE {
MESSAGE INFO "NO ACTIVE ncprogram"
}

 

И ещё один макрос - выводит координаты центра отверстия.

Отверстие нужно предварительно выделить.

 


EDIT BLOCKTYPE CYLINDER
EDIT BLOCK RESET
REAL $CENTERX = $block.centre.x
REAL $CENTERY = $block.centre.y
$CENTERX = ROUND($CENTERX, 3)
$CENTERY = ROUND($CENTERY, 3)
MESSAGE INFO "CENTER X = $CENTERX" +CRLF+ "CENTER Y = $CENTERY"

 

Как можно вывести статистику с выбранных NC файлов?

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

Как можно включить коррекцию у выбранных траекторий (в дереве NC) в активном NC файле?

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

Как можно вывести статистику с выбранных NC файлов?

через селектор выбора (пример есть в макросе сверления)

6 часов назад, NickEL1000 сказал:

Как можно включить коррекцию у выбранных траекторий (в дереве NC) в активном NC файле?

коррекция включается в NC файле для всех траекторий содержащихся в нем, а не для некоторых

Ссылка на сообщение
Поделиться на других сайтах
В 22.04.2019 в 13:50, oat сказал:

а если требуется переименовать траектории просто в "1","2","3" и т.д,

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

ECHO OFF DCPDEBUG UNTRACE COMMAND ACCEPT //отключение эхо

STRING $nmb = '1' //счётчик

FOREACH t IN folder ('Toolpath') {
STRING $OneName = $t.Name              //имя активной траектории
//Вызов функции
CALL TolpathCount($OneName, $nmb, $OneName)
}

FOREACH t IN folder ('Toolpath') {
STRING $OneName = $t.Name
IF int(position($OneName, "_")) > 0 {
STRING $Line = substring($OneName, (position($OneName, "_")), length($OneName) )
STRING $Name = replace($OneName, $Line, "") //убирает со строки $Name "_"
RENAME TOOLPATH $OneName $Name
}
}

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


} //FUNCTION MAIN


//счётчик траекторий
FUNCTION TolpathCount (STRING OneName, output STRING nmb, STRING OneName) {

string $newname=$nmb
string $uline = '_'

//Сравнение оригинальной и полученной траектории
IF $newname != $OneName {

//проверка наличия дубликатов
IF entity_exists('Toolpath',$newname) {

While entity_exists('Toolpath',$newname) == 1 {
$newname = $newname+$uline
}

RENAME TOOLPATH $OneName $newname

} else {
RENAME TOOLPATH $OneName $newname
}

} else {
//ничего не делать если названия совпадают
}

$nmb =  int (nmb) + 1 //счётчик траекторий

}

 

Hide  
Изменено пользователем Konstantin_VP
Ссылка на сообщение
Поделиться на других сайтах
В 25.04.2019 в 16:00, NickEL1000 сказал:

Как можно включить коррекцию у выбранных траекторий (в дереве NC) в активном NC файле?

Показать содержимое  
//Включение корректора на траекториях с латинской приставкой '_RL или _RR' В названии

string $LEFT = "_rl" //корректор слева
string $RIGHT = "_rr" //корректор справа
int $Item = 0 //счётчик траекторий

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

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

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

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

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

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

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

// Проверка, содержит ли имя $RIGHT
} elseIf position($lcaseName, $RIGHT) > 0 {

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

COMP_CODE RIGHT //корректор справа

}

$Item = Item + 1

}

}

 

Hide  
Если в названии траектории есть "_RL" включится корректор слева в активном NC , "_RR" - справа.
Ссылка на сообщение
Поделиться на других сайтах
  • 1 месяц спустя...
В 10.11.2017 в 20:24, impact сказал:

string filename = ""
$filename = fileselect "Open project"
project recovery open ${dirname(filename)}

Сохраняем этот макрос, в такое место чтобы путь не содержал пробелов.

 

Потом редактируем в файлах Powemill\sys\hci\powermill.ndb\source\table\menu и Powemill\sys\hci\powermill.ndb\source\table\form

ищем текст "PROJECT RECOVERY OPEN PROJSELECTOR"

и заменяем на "MACRO ВАШ\ПУТЬ\ДО\МАКРОСА.mac".

Рекомендую сделать резервные копии этих файлов.

 

Чтобы открыть проект выбираем любой файл в папке проекта.

Такое работало в РМ2017. В 2018 уже не работает.

Ссылка на сообщение
Поделиться на других сайтах
  • 2 недели спустя...
В 16.06.2019 в 19:24, syncomp сказал:

Такое работало в РМ2017. В 2018 уже не работает.

Работает. Только строка не первая найденная, а вторая, если открывается через ленту или через Ctrl+O

полностью строка

 OPEN             10347     260 1824      10070  0       1      0 8498 0 0 "FILEPATU" "" "" "" 0 "PROJECT RECOVERY OPEN PROJSELECTOR" 15

Если же через "Файл->Открыть", то там другая строка, но принцип тот же.

Project          10425     260 1811      10161  0       1      0 0 0 0 "OPENPROJ" "" "" "" 0 "FORM RIBBON BACKSTAGE CLOSE BackstageOpen PROJECT RECOVERY OPEN PROJSELECTOR" 15

 

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

Работает. Только строка не первая найденная, а вторая, если открывается через ленту или через Ctrl+O

полностью строка


 OPEN             10347     260 1824      10070  0       1      0 8498 0 0 "FILEPATU" "" "" "" 0 "PROJECT RECOVERY OPEN PROJSELECTOR" 15

Если же через "Файл->Открыть", то там другая строка, но принцип тот же.


Project          10425     260 1811      10161  0       1      0 0 0 0 "OPENPROJ" "" "" "" 0 "FORM RIBBON BACKSTAGE CLOSE BackstageOpen PROJECT RECOVERY OPEN PROJSE

Я вышел из положения по-другому. В ленте на своей панели создал кнопку Макроса и выполняю тот макрос, который был дан для РМ2017. Все прекрасно работает.

Изменено пользователем syncomp
Ссылка на сообщение
Поделиться на других сайтах
  • 1 месяц спустя...
  • 2 недели спустя...
В 27.04.2019 в 19:40, Konstantin_VP сказал:
Показать содержимое

FUNCTION MAIN {

ECHO OFF DCPDEBUG UNTRACE COMMAND ACCEPT //отключение эхо

STRING $nmb = '1' //счётчик

FOREACH t IN folder ('Toolpath') {
STRING $OneName = $t.Name              //имя активной траектории
//Вызов функции
CALL TolpathCount($OneName, $nmb, $OneName)
}

FOREACH t IN folder ('Toolpath') {
STRING $OneName = $t.Name
IF int(position($OneName, "_")) > 0 {
STRING $Line = substring($OneName, (position($OneName, "_")), length($OneName) )
STRING $Name = replace($OneName, $Line, "") //убирает со строки $Name "_"
RENAME TOOLPATH $OneName $Name
}
}

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


} //FUNCTION MAIN


//счётчик траекторий
FUNCTION TolpathCount (STRING OneName, output STRING nmb, STRING OneName) {

string $newname=$nmb
string $uline = '_'

//Сравнение оригинальной и полученной траектории
IF $newname != $OneName {

//проверка наличия дубликатов
IF entity_exists('Toolpath',$newname) {

While entity_exists('Toolpath',$newname) == 1 {
$newname = $newname+$uline
}

RENAME TOOLPATH $OneName $newname

} else {
RENAME TOOLPATH $OneName $newname
}

} else {
//ничего не делать если названия совпадают
}

$nmb =  int (nmb) + 1 //счётчик траекторий

}

 

Hide

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

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

Доброго времени! Подскажите как обратиться к типу заготовки

IF <заготовка==Блок> {

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

как переименовывать траектории принадлежащие установам

Если речь о траекториях в активной папке, то:

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

ECHO OFF DCPDEBUG UNTRACE COMMAND ACCEPT //отключение эхо

STRING $nmb = '1' //счётчик

STRING $FolderName = ACTIVE_FOLDER() //определяет путь по активной папке

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

//Если нет активной папки в "Toolpath"
If $T_Folder !='Toolpath' {
$FolderName = 'Toolpath'
}

FOREACH t IN folder ($FolderName) {
STRING $OneName = $t.Name              //имя активной траектории
//Вызов функции
CALL TolpathCount($OneName, $nmb, $OneName)
}

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


} //FUNCTION MAIN


//счётчик траекторий
FUNCTION TolpathCount (STRING OneName, output STRING nmb, STRING OneName) {

string $newname=$nmb
string $uline = '_'

//Сравнение оригинальной и полученной траектории
IF $newname != $OneName {

//проверка наличия дубликатов
IF entity_exists('Toolpath',$newname) {

While entity_exists('Toolpath',$newname) == 1 {
$newname = $newname+$uline
}

RENAME TOOLPATH $OneName $newname

} else {
RENAME TOOLPATH $OneName $newname
}

} else {
//ничего не делать если названия совпадают
}

$nmb =  int (nmb) + 1 //счётчик траекторий

}

 

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • maxx2000
      пробывал поставить птичку "разрешить привязку"? да забей ты на лайки- шмайки, словами ответь. Пробовал или помогло?
    • maxx2000
      охренел что ли, где я ему про 3+2 говорил?  По твоему 5 осевая стратегия всегда подразумевает непрерывное движение всех 5 осей? Что на 4 осевом станке нельзя использовать 5 осевые стратегии?   а спину вареньем не намазать?   Я ещё раз повторюсь,  создаётся  ЛСК (или как там она у вас называется у NXстрадальцев) обрабатываемого элемента, Z этой ЛСК будет автоматически довернута вдоль оси шпинделя(повернётся стол), а поскольку обрабатываемый элемент не плоский (с подвывертом) обработка будет вестись по всем осям (непрерывная 5 осевая), а наклон инструмента будет минимизирован, в зависимости от того как настроена обработка вдоль Z ЛСК элемента,  по нормали к элементу или будет разрешено резать боком. Либо не выёживаться и использовать инструмент для обработки импеллера. Чё тут непонятного? Ах да, нет картинок волшебных. Ну мои картинки тут не приветствуются, без желания понять суть, они бесполезны.   Алаверды Сделай и выложи сюда проект. Покажи на деле. Посмотрим на твою скилуху.  
    • GHEB
      Добрый день Создал некую модель, всё было хорошо, но после перезапуска программы почему то эскиз перестал привязываться к линиям: Выбираю "Эскиз" https://skr.sh/sPckC4oM2Sf Нажимаю на нужную мне плоскость https://skr.sh/sPc7M6DGRDq Выбираю линию https://skr.sh/sPcnw9t9J9u Пытаюсь начать рисовать от центра окружности https://skr.sh/sPc1Kklf8nM Пытаюсь рисовать от некой точки https://skr.sh/sPcECS6vnwL Как видно курсор не привязывается к точкам, из-за чего попасть точно не представляется возможным Тоже самое если я пытаюсь к эскизу например дорисовать линию https://skr.sh/sPcX7Wyj0e6  В настройках эскиза настроено так, пробовал "перетыкивать" не помогло: https://skr.sh/sPc1CoTvYDS Версия https://skr.sh/sPcH4esnnCK Скрин всего окна и настроек, о которых я вычитал тут:  https://skr.sh/sPcHbYP5iB4 Скрин https://skr.sh/sPcHbYP5iB4 всего окна и настроек, о которых я вычитал тут:      Нашёл "быстрые привязки, но они работают не очень хорошо для окружностей и между ними приходиться переключаться, до этого таокго не было, неудобо https://skr.sh/sPcvE3KzS3u
    • Viktor2004
      Вот этот пример работает безотказно Нажатие на F1 включает кипп-реле К50.0, нажатие F2 его выключает O8001 G240 P3 C0 G243 X2 Y0 A1 B0 (TEST PROGRAM) G240 P6 C0 G243 X7 Y[4 + 1] (SECOND SCREEN) G240 P7 C0 G243 X5 Y26 A1 B0 (K50.1) G243 X5 Y27 A1 B0 (ON) G243 X12 Y26 A1 B0 (K50.1) G243 X12 Y27 A1 B0 (OFF) IF [#8549 EQ 249] THEN G310 K50 Q1 ENDIF IF [#8549 EQ 248] THEN G310 K50 Q0 ENDIF M99  
    • gudstartup
      код клавиши обязан передаться приложению экран которого активен на данный момент времени а у вас получается что он неактивен и какое то другое приложение этот код забирает
    • vanek77777
      Не тебе судить об уровне моих знаний и умений) тебе конкретно написали выше, сделай и выложи сюда проект. Покажи на деле. Языком трепать ты горазд. Человек изначально спросил, как сделать в непрерывных 5 осях, а ты ему про 3+2 закатку. Зачем ему именно в 5 осях крутить это уже его дело. 
    • Viktor2004
      не знаю. Я на видео показал что код нажатой клавиши лишь кратковременно мигает в момент ее нажатия. Это в переменной #8549. Как его ловить со 100% успехом я не знаю Если из программы все удалить и оставить только нажатие кнопки, тогда работает
    • gudstartup
      куда же он девается из буфера клавиатуры ведь если код не считывать то он должен там находиться иначе неизбежен пропуск нажимаемых кнопок а это неправильно 
    • ДОБРЯК
    • maxx2000
      Я работал в одной конторе, так там был выделен человек, который мониторил ютуб каналы конкурентов на предмет того что видно на экранах мониторов попавших в кадр.
×
×
  • Создать...