Jump to content

Макросы в Power Mill


eksodus

Recommended Posts

scorpion1007

 

Добавление параметра в макросе

 

 

ENTITY nc = entity('ncprogram',$name_ncfile) 
STRING NewValue = "Face5"
IF Not (MEMBER ($nc.UserParameters._keys, 'Size')) { 
    EDIT USERPAR ncprogram $nc.Name TYPE "String" 
    EDIT USERPAR ncprogram $nc.Name NAME "Size" 
    CREATE USERPAR ncprogram $nc.Name 

 $nc.UserParameters.Size=$NewValue

Link to post
Share on other sites


15 часов назад, scorpion1007 сказал:

Разобрался почему не работает?

Он у тебя спотыкается на команде KEEP SNAPSHOT NCPROGRAM CURRENT_TPSTATE_VIEW

Потому что вручную выделяешь НЦ-файл, и делаешь его текущим(CURRENT). То есть по сути при ручной манипуляции в команде передается параметр, указывающий на НЦ-файл. В автоматическом режиме, этот параметр не передается и программа не знает, что ей делать. Поэтому слетает. Убери эту команду из макроса или обойди ее другим способом

Пока нет. Ковыряю. 

Link to post
Share on other sites
Скрытый текст


ENTITY LIST Mylist = folder('Toolpath')


string zag = ""
FOREACH item in MyList {
$zag = " x "
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)
$zag = $zag + $dlinax+" y "+$dlinay+" z "+$dlinaz
$item.Notes = zag
}

UNDRAW TOOLPATH ALL 
UNDRAW TOOL ALL
UNDRAW NCPROGRAM ALL
UNDRAW BOUNDARY ALL
UNDRAW PATTERN ALL
UNDRAW FEATURESET ALL
UNDRAW WORKPLANE ALL
KEEP SNAPSHOT PROJECT CURRENT
KEEP SNAPSHOT PROJECT CURRENT
EXPORT SETUPSHEETS NCPROGRAM ALL
KEEP NCPROGRAM ALL

Разобрался. если в сохранённом проекте уже существует папка "ncprograms", то выскакивает данная ошибка "ошибка макроса KEEP NCPROGRAM ALL".

 

 

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

 

Link to post
Share on other sites
scorpion1007
7 часов назад, mekeale сказал:
  Показать содержимое


ENTITY LIST Mylist = folder('Toolpath')


string zag = ""
FOREACH item in MyList {
$zag = " x "
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)
$zag = $zag + $dlinax+" y "+$dlinay+" z "+$dlinaz
$item.Notes = zag
}

UNDRAW TOOLPATH ALL 
UNDRAW TOOL ALL
UNDRAW NCPROGRAM ALL
UNDRAW BOUNDARY ALL
UNDRAW PATTERN ALL
UNDRAW FEATURESET ALL
UNDRAW WORKPLANE ALL
KEEP SNAPSHOT PROJECT CURRENT
KEEP SNAPSHOT PROJECT CURRENT
EXPORT SETUPSHEETS NCPROGRAM ALL
KEEP NCPROGRAM ALL

Разобрался. если в сохранённом проекте уже существует папка "ncprograms", то выскакивает данная ошибка "ошибка макроса KEEP NCPROGRAM ALL".

 

 

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

 

Добавляй YES для подтверждения с следующей строке макроса

  • Нравится 1
Link to post
Share on other sites
11 часов назад, scorpion1007 сказал:

Добавляй YES для подтверждения с следующей строке макроса

Спасибо. Получилось.

  • Нравится 1
Link to post
Share on other sites

Здравствуйте. Решил написать макрос для создания массива траекторий.

Он делает следующее:

1) создает массив для каждой траектории в папке "траектории" для лск 1 и лск2 (переворот заготовок)

2) создает для каждого нс файла аналогичный с пометкой о размере массива в начале имени (нс файлы пустые без траекторий)

 

Такой макрос получился и работает, НО хочется улучшить его в следующем:

1) Сделать автоматическую вставку траекторий массива (обычно это несколько траекторий с одной общей фрезой) в соответствующий нс файл массива. Сейчас это происходит в ручном режиме после завершения макроса.

2) Сделать возможным запускать макрос несколько раз подряд для создания разных массивов, например сначала 2х2, потом 3х4 и т.п. Сейчас приходится удалять созданные массивы траекторий и нс файлы перед повторным запуском.

3) Сделать так чтобы переходы между элементами массива были выше заготовки и модели. Сейчас на некоторых траекториях эти переходы идут прямо через модель и заготовки не поднимаясь на безопасную высоту. Приходится просматривать все траектории и поднимать вручную.

 

В прикрепленном макросе сделана попытка по улучшению пункта 2 через IF ELSE.

а) Макрос создает папку 1 в нс файлах и забрасывает в нее все существующие нс файлы.

б) Создает папки в папке нс файлов с названием массива (например 2х3 Концевая 10)

в) Создаёт папку 1 в траекториях и забрасывает в нее все существующие траектории

г) Создает папку в папке траекторий с названием массива 

д) Создает массивы траекторий из папки 1 в папку массива

В общем то все это работало до добавления функции IF ELSE которая должна при условии уже созданных папок 1 исключить шаги а) и в)

 

Может кто подскажет как решить эти три вопроса по улучшению макроса?

 

 

Link to post
Share on other sites
scorpion1007
3 часа назад, Cefius сказал:

Здравствуйте. Решил написать макрос для создания массива траекторий.

Он делает следующее:

1) создает массив для каждой траектории в папке "траектории" для лск 1 и лск2 (переворот заготовок)

2) создает для каждого нс файла аналогичный с пометкой о размере массива в начале имени (нс файлы пустые без траекторий)

 

Такой макрос получился и работает, НО хочется улучшить его в следующем:

1) Сделать автоматическую вставку траекторий массива (обычно это несколько траекторий с одной общей фрезой) в соответствующий нс файл массива. Сейчас это происходит в ручном режиме после завершения макроса.

2) Сделать возможным запускать макрос несколько раз подряд для создания разных массивов, например сначала 2х2, потом 3х4 и т.п. Сейчас приходится удалять созданные массивы траекторий и нс файлы перед повторным запуском.

3) Сделать так чтобы переходы между элементами массива были выше заготовки и модели. Сейчас на некоторых траекториях эти переходы идут прямо через модель и заготовки не поднимаясь на безопасную высоту. Приходится просматривать все траектории и поднимать вручную.

 

В прикрепленном макросе сделана попытка по улучшению пункта 2 через IF ELSE.

а) Макрос создает папку 1 в нс файлах и забрасывает в нее все существующие нс файлы.

б) Создает папки в папке нс файлов с названием массива (например 2х3 Концевая 10)

в) Создаёт папку 1 в траекториях и забрасывает в нее все существующие траектории

г) Создает папку в папке траекторий с названием массива 

д) Создает массивы траекторий из папки 1 в папку массива

В общем то все это работало до добавления функции IF ELSE которая должна при условии уже созданных папок 1 исключить шаги а) и в)

 

Может кто подскажет как решить эти три вопроса по улучшению макроса?

 

 

Так а где сам макрос?

Тебе надо сделать проверку существования папки.  Если такая папка "1" существует, то не делать такие-то пункты. Либо каждый раз создавать уникальное название папки и в ней сохранять все траектории. Тогда макрос не будет ругаться на то, что такая папка уже есть. Либо такая траектория, с таким именем существует. Их имена тоже надо делать уникальными

Как создавать уникальное название папки  я показал в видео

 

 

  • Нравится 1
Link to post
Share on other sites
07.06.2023 в 00:37, Cefius сказал:

Здравствуйте. Решил написать макрос для создания массива траекторий.

Он делает следующее:

1) создает массив для каждой траектории в папке "траектории" для лск 1 и лск2 (переворот заготовок)

2) создает для каждого нс файла аналогичный с пометкой о размере массива в начале имени (нс файлы пустые без траекторий)

 

Такой макрос получился и работает, НО хочется улучшить его в следующем:

1) Сделать автоматическую вставку траекторий массива (обычно это несколько траекторий с одной общей фрезой) в соответствующий нс файл массива. Сейчас это происходит в ручном режиме после завершения макроса.

2) Сделать возможным запускать макрос несколько раз подряд для создания разных массивов, например сначала 2х2, потом 3х4 и т.п. Сейчас приходится удалять созданные массивы траекторий и нс файлы перед повторным запуском.

3) Сделать так чтобы переходы между элементами массива были выше заготовки и модели. Сейчас на некоторых траекториях эти переходы идут прямо через модель и заготовки не поднимаясь на безопасную высоту. Приходится просматривать все траектории и поднимать вручную.

 

В прикрепленном макросе сделана попытка по улучшению пункта 2 через IF ELSE.

а) Макрос создает папку 1 в нс файлах и забрасывает в нее все существующие нс файлы.

б) Создает папки в папке нс файлов с названием массива (например 2х3 Концевая 10)

в) Создаёт папку 1 в траекториях и забрасывает в нее все существующие траектории

г) Создает папку в папке траекторий с названием массива 

д) Создает массивы траекторий из папки 1 в папку массива

В общем то все это работало до добавления функции IF ELSE которая должна при условии уже созданных папок 1 исключить шаги а) и в)

 

Может кто подскажет как решить эти три вопроса по улучшению макроса?

 

 

 

22 часа назад, scorpion1007 сказал:

Так а где сам макрос?

Тебе надо сделать проверку существования папки.  Если такая папка "1" существует, то не делать такие-то пункты. Либо каждый раз создавать уникальное название папки и в ней сохранять все траектории. Тогда макрос не будет ругаться на то, что такая папка уже есть. Либо такая траектория, с таким именем существует. Их имена тоже надо делать уникальными

Как создавать уникальное название папки  я показал в видео

 

 

Не смог разобраться как прикреплять файлы к сообщению. Подскажите где эта таинственная кнопка прикрепить файл.

Link to post
Share on other sites
scorpion1007
20 минут назад, Cefius сказал:

 

Не смог разобраться как прикреплять файлы к сообщению. Подскажите где эта таинственная кнопка прикрепить файл.

Ctrl+C, Ctrl+V Вставь как текст

Link to post
Share on other sites
Только что, scorpion1007 сказал:

Ctrl+C, Ctrl+V Вставь как текст

DEACTIVATE NCPROGRAM
RESET LOCALVARS

DIALOGS ERROR OFF

ACTIVATE WORKPLANE "1"
STATUS EDITING_PLANE XY


//-----Создание переменных-----

REAL $x = INPUT "Введите шаг по оси Х"

REAL $y = INPUT "Введите шаг по оси Y"

INT $nx = INPUT "Введите количество копий по оси Х"

INT $ny = INPUT "Введите количество копий по оси Y"


//---Отключение сообщений и графики--- 

GRAPHICS LOCK
DIALOGS MESSAGE OFF

ACTIVATE FOLDER "NCProgram\1"


//---создание папок нс---

IF active(NCProgram.Name)=="1" {
STRING ncfolder1 = $nx + "x" + $ny

CREATE FOLDER "NCProgram" ;
ACTIVATE FOLDER "NCProgram\Папка 1"
RENAME FOLDER "NCProgram\Папка 1" $ncfolder1

} ELSE {

CREATE FOLDER "NCProgram" ;
RENAME FOLDER "NCProgram\Папка 1" "1"
ACTIVATE FOLDER "NCProgram\1"

FOREACH $ncfile1 IN folder ('NCProgram') {
ACTIVATE NCPROGRAM $ncfile1.Name
EDIT FOLDER "NCProgram\1" INSERT $ncfile1.Name LAST
}

}


//---создание папок границ---

ACTIVATE FOLDER "NCProgram\1"

IF active(Toolpath.Name)=="1" {


STRING folder1 = $nx + "x" + $ny

CREATE FOLDER "Toolpath" ;
ACTIVATE FOLDER "Toolpath\Папка 1"
RENAME FOLDER "Toolpath\Папка 1" $folder1
 
} ELSE {

CREATE FOLDER "Toolpath" ;
ACTIVATE FOLDER "Toolpath\Папка 1"
RENAME FOLDER "Toolpath\Папка 1" "1"

FOREACH $tp1 IN folder ('Toolpath') {
ACTIVATE TOOLPATH $tp1.Name
EDIT FOLDER ; INSERT $tp1.Name LAST
}

STRING folder1 = $nx + "x" + $ny

CREATE FOLDER "Toolpath" ;
ACTIVATE FOLDER "Toolpath\Папка 1"
RENAME FOLDER "Toolpath\Папка 1" $folder1

}


//-----Активирование плоскости XY-----

STATUS EDITING_PLANE XY


//-----Массивы траекторий----

FOREACH tp IN folder ('Toolpath\1') {
ACTIVATE TOOLPATH $tp.Name
IF active(workplane.Name)=="1" {

MODE TOOLPATH_TRANSFORM START $tp.Name
MODE TRANSFORM TYPE PATTERN_RECTANGLE
MODE TRANSFORM RECTANGLE_PATTERN XSPACE "$x"
MODE TRANSFORM RECTANGLE_PATTERN XNUM $nx

MODE TRANSFORM RECTANGLE_PATTERN YSPACE "$y"
MODE TRANSFORM RECTANGLE_PATTERN YNUM $ny

MODE TRANSFORM RECTANGLE_PATTERN SORT YZ

MODE TRANSFORM FINISH
MODE TOOLPATH_TRANSFORM FINISH ACCEPT

} ELSE {

MODE TOOLPATH_TRANSFORM START $tp.Name
MODE TRANSFORM TYPE PATTERN_RECTANGLE
MODE TRANSFORM RECTANGLE_PATTERN XSPACE "$x+5"
MODE TRANSFORM RECTANGLE_PATTERN XNUM $nx

MODE TRANSFORM RECTANGLE_PATTERN YSPACE "$y+5"
MODE TRANSFORM RECTANGLE_PATTERN YNUM $ny

MODE TRANSFORM FINISH
MODE TOOLPATH_TRANSFORM FINISH ACCEPT

}
}


STRING $ncfolder1 = $nx + "x" + $ny

CREATE FOLDER "NCProgram" ;
ACTIVATE FOLDER "NCProgram\Папка 1"
RENAME FOLDER "NCProgram\Папка 1" $ncfolder1


//-----НС-файлы-----

EDIT ENTATTRIBUTE TEMPLATE NCPROGRAM OFF

FOREACH nc IN folder ('NCProgram') {

ACTIVATE WORKPLANE FROMENTITY NCPROGRAM $nc.Name

STRING nc1 = $nx + "x" + $ny + " - " + $nc.Name

CREATE NCPROGRAM ; EDIT NCPROGRAM ; QUIT FORM NCTOOLPATH
EDIT NCPROGRAM "1" TAPEOPTIONS "C:\Постпроцессоры\2019NCStudioPMNew.pmoptz" FORM ACCEPT SelectOptionFile
RENAME NCProgram "1" $nc1
NCTOOLPATH CANCEL FORM ACCEPT NCTOOLPATHLIST FORM ACCEPT NCTOOLLIST FORM ACCEPT PROBINGNCOPTS

}


ACTIVATE FOLDER "Toolpath\1"

//----Включение сообщений и графики---- 

DIALOGS MESSAGE ON
DIALOGS ERROR ON

GRAPHICS UNLOCK
RESET LOCALVARS

Link to post
Share on other sites
scorpion1007
Скрытый текст

 

3 часа назад, Cefius сказал:

DEACTIVATE NCPROGRAM
RESET LOCALVARS

DIALOGS ERROR OFF

ACTIVATE WORKPLANE "1"
STATUS EDITING_PLANE XY


//-----Создание переменных-----

REAL $x = INPUT "Введите шаг по оси Х"

REAL $y = INPUT "Введите шаг по оси Y"

INT $nx = INPUT "Введите количество копий по оси Х"

INT $ny = INPUT "Введите количество копий по оси Y"


//---Отключение сообщений и графики--- 

GRAPHICS LOCK
DIALOGS MESSAGE OFF

ACTIVATE FOLDER "NCProgram\1"


//---создание папок нс---

IF active(NCProgram.Name)=="1" {
STRING ncfolder1 = $nx + "x" + $ny

CREATE FOLDER "NCProgram" ;
ACTIVATE FOLDER "NCProgram\Папка 1"
RENAME FOLDER "NCProgram\Папка 1" $ncfolder1

} ELSE {

CREATE FOLDER "NCProgram" ;
RENAME FOLDER "NCProgram\Папка 1" "1"
ACTIVATE FOLDER "NCProgram\1"

FOREACH $ncfile1 IN folder ('NCProgram') {
ACTIVATE NCPROGRAM $ncfile1.Name
EDIT FOLDER "NCProgram\1" INSERT $ncfile1.Name LAST
}

}


//---создание папок границ---

ACTIVATE FOLDER "NCProgram\1"

IF active(Toolpath.Name)=="1" {


STRING folder1 = $nx + "x" + $ny

CREATE FOLDER "Toolpath" ;
ACTIVATE FOLDER "Toolpath\Папка 1"
RENAME FOLDER "Toolpath\Папка 1" $folder1
 
} ELSE {

CREATE FOLDER "Toolpath" ;
ACTIVATE FOLDER "Toolpath\Папка 1"
RENAME FOLDER "Toolpath\Папка 1" "1"

FOREACH $tp1 IN folder ('Toolpath') {
ACTIVATE TOOLPATH $tp1.Name
EDIT FOLDER ; INSERT $tp1.Name LAST
}

STRING folder1 = $nx + "x" + $ny

CREATE FOLDER "Toolpath" ;
ACTIVATE FOLDER "Toolpath\Папка 1"
RENAME FOLDER "Toolpath\Папка 1" $folder1

}


//-----Активирование плоскости XY-----

STATUS EDITING_PLANE XY


//-----Массивы траекторий----

FOREACH tp IN folder ('Toolpath\1') {
ACTIVATE TOOLPATH $tp.Name
IF active(workplane.Name)=="1" {

MODE TOOLPATH_TRANSFORM START $tp.Name
MODE TRANSFORM TYPE PATTERN_RECTANGLE
MODE TRANSFORM RECTANGLE_PATTERN XSPACE "$x"
MODE TRANSFORM RECTANGLE_PATTERN XNUM $nx

MODE TRANSFORM RECTANGLE_PATTERN YSPACE "$y"
MODE TRANSFORM RECTANGLE_PATTERN YNUM $ny

MODE TRANSFORM RECTANGLE_PATTERN SORT YZ

MODE TRANSFORM FINISH
MODE TOOLPATH_TRANSFORM FINISH ACCEPT

} ELSE {

MODE TOOLPATH_TRANSFORM START $tp.Name
MODE TRANSFORM TYPE PATTERN_RECTANGLE
MODE TRANSFORM RECTANGLE_PATTERN XSPACE "$x+5"
MODE TRANSFORM RECTANGLE_PATTERN XNUM $nx

MODE TRANSFORM RECTANGLE_PATTERN YSPACE "$y+5"
MODE TRANSFORM RECTANGLE_PATTERN YNUM $ny

MODE TRANSFORM FINISH
MODE TOOLPATH_TRANSFORM FINISH ACCEPT

}
}


STRING $ncfolder1 = $nx + "x" + $ny

CREATE FOLDER "NCProgram" ;
ACTIVATE FOLDER "NCProgram\Папка 1"
RENAME FOLDER "NCProgram\Папка 1" $ncfolder1


//-----НС-файлы-----

EDIT ENTATTRIBUTE TEMPLATE NCPROGRAM OFF

FOREACH nc IN folder ('NCProgram') {

ACTIVATE WORKPLANE FROMENTITY NCPROGRAM $nc.Name

STRING nc1 = $nx + "x" + $ny + " - " + $nc.Name

CREATE NCPROGRAM ; EDIT NCPROGRAM ; QUIT FORM NCTOOLPATH
EDIT NCPROGRAM "1" TAPEOPTIONS "C:\Постпроцессоры\2019NCStudioPMNew.pmoptz" FORM ACCEPT SelectOptionFile
RENAME NCProgram "1" $nc1
NCTOOLPATH CANCEL FORM ACCEPT NCTOOLPATHLIST FORM ACCEPT NCTOOLLIST FORM ACCEPT PROBINGNCOPTS

}


ACTIVATE FOLDER "Toolpath\1"

//----Включение сообщений и графики---- 

DIALOGS MESSAGE ON
DIALOGS ERROR ON

GRAPHICS UNLOCK
RESET LOCALVARS

 

 

Ну во первых. Сначала подправь свои траектории, чтоб начальные и конечные точки были на безопасной высоте. Тогда не нужно будет править NC-файлы на зарезы

2023-06-07_225231.jpg

2023-06-07_225200.jpg

 

Ну и попробуй макрос, чуть подправил тебе конечно, там нагоржено:smile:. Мне не совсем понятна его работа, зачем создавать пустые NC-файлы итд

Скрытый текст

 

DEACTIVATE NCPROGRAM
RESET LOCALVARS

DIALOGS ERROR OFF

ACTIVATE WORKPLANE "1"
STATUS EDITING_PLANE XY


//-----Создание переменных-----

REAL $x = INPUT "Введите шаг по оси Х"

REAL $y = INPUT "Введите шаг по оси Y"

INT $nx = INPUT "Введите количество копий по оси Х"

INT $ny = INPUT "Введите количество копий по оси Y"


//---Отключение сообщений и графики--- 

GRAPHICS LOCK
DIALOGS MESSAGE OFF

ACTIVATE FOLDER "NCProgram\1"


//---создание папок нс---

IF active(NCProgram.Name)=="1" {
    STRING ncfolder1 = $nx + "x" + $ny

    CREATE FOLDER "NCProgram" ;
    ACTIVATE FOLDER "NCProgram\Папка 1"
    RENAME FOLDER "NCProgram\Папка 1" $ncfolder1

} ELSE {

    CREATE FOLDER "NCProgram" ;
    RENAME FOLDER "NCProgram\Папка 1" "1"
    ACTIVATE FOLDER "NCProgram\1"

        FOREACH $ncfile1 IN folder ('NCProgram') {
        ACTIVATE NCPROGRAM $ncfile1.Name
        EDIT FOLDER "NCProgram\1" INSERT $ncfile1.Name LAST
        }

}


//---создание папок границ---

ACTIVATE FOLDER "NCProgram\1"

IF active(Toolpath.Name)=="1" {


    STRING folder1 = $nx + "x" + $ny

    CREATE FOLDER "Toolpath" ;
    ACTIVATE FOLDER "Toolpath\Папка 1"
    RENAME FOLDER "Toolpath\Папка 1" $folder1
     
} ELSE {

    CREATE FOLDER "Toolpath" ;
    ACTIVATE FOLDER "Toolpath\Папка 1"
    RENAME FOLDER "Toolpath\Папка 1" "1"

    FOREACH $tp1 IN folder ('Toolpath') {
        ACTIVATE TOOLPATH $tp1.Name
        EDIT FOLDER ; INSERT $tp1.Name LAST
        }

    STRING folder1 = $nx + "x" + $ny

    CREATE FOLDER "Toolpath" ;
    ACTIVATE FOLDER "Toolpath\Папка 1"
    RENAME FOLDER "Toolpath\Папка 1" 

}


//-----Активирование плоскости XY-----

STATUS EDITING_PLANE XY


//-----Массивы траекторий----

string list list_all_tools_in_toolpath={}


FOREACH tp IN folder ('Toolpath\1') {
    //Создаем список всех инструментов в трансформируемых траекториях
    BOOL addl = add_last(list_all_tools_in_toolpath,tp.tool.name)
    
    
    iF active(workplane.Name)=="1" {

        MODE TOOLPATH_TRANSFORM START $tp.Name
        MODE TRANSFORM TYPE PATTERN_RECTANGLE
        MODE TRANSFORM RECTANGLE_PATTERN XSPACE "$x"
        MODE TRANSFORM RECTANGLE_PATTERN XNUM $nx

        MODE TRANSFORM RECTANGLE_PATTERN YSPACE "$y"
        MODE TRANSFORM RECTANGLE_PATTERN YNUM $ny

        MODE TRANSFORM RECTANGLE_PATTERN SORT YZ

        MODE TRANSFORM FINISH
        MODE TOOLPATH_TRANSFORM FINISH ACCEPT

    } ELSE {

        MODE TOOLPATH_TRANSFORM START $tp.Name
        MODE TRANSFORM TYPE PATTERN_RECTANGLE
        MODE TRANSFORM RECTANGLE_PATTERN XSPACE "$x+5"
        MODE TRANSFORM RECTANGLE_PATTERN XNUM $nx

        MODE TRANSFORM RECTANGLE_PATTERN YSPACE "$y+5"
        MODE TRANSFORM RECTANGLE_PATTERN YNUM $ny

        MODE TRANSFORM FINISH
        MODE TOOLPATH_TRANSFORM FINISH ACCEPT

    }
}

// ---------------Создание NC-файлов по имени фрезы------------------------
STRING $name_folder = $nx + "x" + $ny
STRING fl="Toolpath\" + $name_folder
ENTITY LIST list_toolpath = folder($fl)
string ck="CK"+ $list_toolpath[0].workplane.Name+" "
$name_folder="Array"+ $ck + $name_folder
CREATE FOLDER "NCProgram" $name_folder
$fl="NCProgram\" + $name_folder
ACTIVATE FOLDER $fl
BOOL rmvdbl = remove_duplicates($list_all_tools_in_toolpath)
FOREACH toolname IN list_all_tools_in_toolpath {
    $name_folder=$nx + "x" + $ny +"-"+toolname
    CREATE NCPROGRAM $name_folder
        FOREACH tp IN list_toolpath {
            if $tp.tool.name == $toolname {
            EDIT NCPROGRAM ; APPEND TOOLPATH $tp.name
            }
        }    
}
//---------------------------------------------------------------------------------------


CREATE FOLDER "NCProgram" ;
ACTIVATE FOLDER "NCProgram\Папка 1"
RENAME FOLDER "NCProgram\Папка 1" $ncfolder1


//-----НС-файлы-----

EDIT ENTATTRIBUTE TEMPLATE NCPROGRAM OFF

FOREACH nc IN folder ('NCProgram') {

    ACTIVATE WORKPLANE FROMENTITY NCPROGRAM $nc.Name

    STRING nc1 = $nx + "x" + $ny + " - " + $nc.Name

    CREATE NCPROGRAM ; EDIT NCPROGRAM ; QUIT FORM NCTOOLPATH
    EDIT NCPROGRAM "1" TAPEOPTIONS "C:\Постпроцессоры\2019NCStudioPMNew.pmoptz" FORM ACCEPT SelectOptionFile
    RENAME NCProgram "1" $nc1
    NCTOOLPATH CANCEL FORM ACCEPT NCTOOLPATHLIST FORM ACCEPT NCTOOLLIST FORM ACCEPT PROBINGNCOPTS
 
}


ACTIVATE FOLDER "Toolpath\1"

//----Включение сообщений и графики---- 

DIALOGS MESSAGE ON
DIALOGS ERROR ON

GRAPHICS UNLOCK
RESET LOCALVARS

 

 

 

  • Нравится 1
Link to post
Share on other sites
syncomp

Всем здравствуйте!  При отладке макросов иногда бывает ситуация, когда из-за ошибки в нем, невозможно остановить сам макрос. Нажатие любой клавиши приводит к выводу ошибки. При этом работа в Повермилл невозможна. Приходится останавливать его через Диспетчер задач. Может кто подскажет, как остановить работу макроса?

Link to post
Share on other sites
scorpion1007
2 часа назад, syncomp сказал:

Всем здравствуйте!  При отладке макросов иногда бывает ситуация, когда из-за ошибки в нем, невозможно остановить сам макрос. Нажатие любой клавиши приводит к выводу ошибки. При этом работа в Повермилл невозможна. Приходится останавливать его через Диспетчер задач. Может кто подскажет, как остановить работу макроса?

Обычно при ошибке выскакивает окно с указанием ошибки. Если макрос вообще не реагирует и ничего не показывает, то скорее всего он требует ввести в командное окно некую дополнительную информацию. В командном окне можно видеть выполняемые команды и какую информацию он требует. Как правило можно выйти из макроса в этом случае через escape. Прям чтоб макрос приводил к падению РМ ну это в ооочень редких случаях

Link to post
Share on other sites
08.06.2023 в 06:05, scorpion1007 сказал:
  Показать содержимое

 

 

 

 

Ну во первых. Сначала подправь свои траектории, чтоб начальные и конечные точки были на безопасной высоте. Тогда не нужно будет править NC-файлы на зарезы

2023-06-07_225231.jpg

2023-06-07_225200.jpg

 

Ну и попробуй макрос, чуть подправил тебе конечно, там нагоржено:smile:. Мне не совсем понятна его работа, зачем создавать пустые NC-файлы итд

  Скрыть содержимое

 

DEACTIVATE NCPROGRAM
RESET LOCALVARS

DIALOGS ERROR OFF

ACTIVATE WORKPLANE "1"
STATUS EDITING_PLANE XY


//-----Создание переменных-----

REAL $x = INPUT "Введите шаг по оси Х"

REAL $y = INPUT "Введите шаг по оси Y"

INT $nx = INPUT "Введите количество копий по оси Х"

INT $ny = INPUT "Введите количество копий по оси Y"


//---Отключение сообщений и графики--- 

GRAPHICS LOCK
DIALOGS MESSAGE OFF

ACTIVATE FOLDER "NCProgram\1"


//---создание папок нс---

IF active(NCProgram.Name)=="1" {
    STRING ncfolder1 = $nx + "x" + $ny

    CREATE FOLDER "NCProgram" ;
    ACTIVATE FOLDER "NCProgram\Папка 1"
    RENAME FOLDER "NCProgram\Папка 1" $ncfolder1

} ELSE {

    CREATE FOLDER "NCProgram" ;
    RENAME FOLDER "NCProgram\Папка 1" "1"
    ACTIVATE FOLDER "NCProgram\1"

        FOREACH $ncfile1 IN folder ('NCProgram') {
        ACTIVATE NCPROGRAM $ncfile1.Name
        EDIT FOLDER "NCProgram\1" INSERT $ncfile1.Name LAST
        }

}


//---создание папок границ---

ACTIVATE FOLDER "NCProgram\1"

IF active(Toolpath.Name)=="1" {


    STRING folder1 = $nx + "x" + $ny

    CREATE FOLDER "Toolpath" ;
    ACTIVATE FOLDER "Toolpath\Папка 1"
    RENAME FOLDER "Toolpath\Папка 1" $folder1
     
} ELSE {

    CREATE FOLDER "Toolpath" ;
    ACTIVATE FOLDER "Toolpath\Папка 1"
    RENAME FOLDER "Toolpath\Папка 1" "1"

    FOREACH $tp1 IN folder ('Toolpath') {
        ACTIVATE TOOLPATH $tp1.Name
        EDIT FOLDER ; INSERT $tp1.Name LAST
        }

    STRING folder1 = $nx + "x" + $ny

    CREATE FOLDER "Toolpath" ;
    ACTIVATE FOLDER "Toolpath\Папка 1"
    RENAME FOLDER "Toolpath\Папка 1" 

}


//-----Активирование плоскости XY-----

STATUS EDITING_PLANE XY


//-----Массивы траекторий----

string list list_all_tools_in_toolpath={}


FOREACH tp IN folder ('Toolpath\1') {
    //Создаем список всех инструментов в трансформируемых траекториях
    BOOL addl = add_last(list_all_tools_in_toolpath,tp.tool.name)
    
    
    iF active(workplane.Name)=="1" {

        MODE TOOLPATH_TRANSFORM START $tp.Name
        MODE TRANSFORM TYPE PATTERN_RECTANGLE
        MODE TRANSFORM RECTANGLE_PATTERN XSPACE "$x"
        MODE TRANSFORM RECTANGLE_PATTERN XNUM $nx

        MODE TRANSFORM RECTANGLE_PATTERN YSPACE "$y"
        MODE TRANSFORM RECTANGLE_PATTERN YNUM $ny

        MODE TRANSFORM RECTANGLE_PATTERN SORT YZ

        MODE TRANSFORM FINISH
        MODE TOOLPATH_TRANSFORM FINISH ACCEPT

    } ELSE {

        MODE TOOLPATH_TRANSFORM START $tp.Name
        MODE TRANSFORM TYPE PATTERN_RECTANGLE
        MODE TRANSFORM RECTANGLE_PATTERN XSPACE "$x+5"
        MODE TRANSFORM RECTANGLE_PATTERN XNUM $nx

        MODE TRANSFORM RECTANGLE_PATTERN YSPACE "$y+5"
        MODE TRANSFORM RECTANGLE_PATTERN YNUM $ny

        MODE TRANSFORM FINISH
        MODE TOOLPATH_TRANSFORM FINISH ACCEPT

    }
}

// ---------------Создание NC-файлов по имени фрезы------------------------
STRING $name_folder = $nx + "x" + $ny
STRING fl="Toolpath\" + $name_folder
ENTITY LIST list_toolpath = folder($fl)
string ck="CK"+ $list_toolpath[0].workplane.Name+" "
$name_folder="Array"+ $ck + $name_folder
CREATE FOLDER "NCProgram" $name_folder
$fl="NCProgram\" + $name_folder
ACTIVATE FOLDER $fl
BOOL rmvdbl = remove_duplicates($list_all_tools_in_toolpath)
FOREACH toolname IN list_all_tools_in_toolpath {
    $name_folder=$nx + "x" + $ny +"-"+toolname
    CREATE NCPROGRAM $name_folder
        FOREACH tp IN list_toolpath {
            if $tp.tool.name == $toolname {
            EDIT NCPROGRAM ; APPEND TOOLPATH $tp.name
            }
        }    
}
//---------------------------------------------------------------------------------------


CREATE FOLDER "NCProgram" ;
ACTIVATE FOLDER "NCProgram\Папка 1"
RENAME FOLDER "NCProgram\Папка 1" $ncfolder1


//-----НС-файлы-----

EDIT ENTATTRIBUTE TEMPLATE NCPROGRAM OFF

FOREACH nc IN folder ('NCProgram') {

    ACTIVATE WORKPLANE FROMENTITY NCPROGRAM $nc.Name

    STRING nc1 = $nx + "x" + $ny + " - " + $nc.Name

    CREATE NCPROGRAM ; EDIT NCPROGRAM ; QUIT FORM NCTOOLPATH
    EDIT NCPROGRAM "1" TAPEOPTIONS "C:\Постпроцессоры\2019NCStudioPMNew.pmoptz" FORM ACCEPT SelectOptionFile
    RENAME NCProgram "1" $nc1
    NCTOOLPATH CANCEL FORM ACCEPT NCTOOLPATHLIST FORM ACCEPT NCTOOLLIST FORM ACCEPT PROBINGNCOPTS
 
}


ACTIVATE FOLDER "Toolpath\1"

//----Включение сообщений и графики---- 

DIALOGS MESSAGE ON
DIALOGS ERROR ON

GRAPHICS UNLOCK
RESET LOCALVARS

 

 

 

Вставил такой код после блока -Отключение сообщений и графики-

FOREACH tp IN folder ('Toolpath') {
ACTIVATE TOOLPATH $tp.Name

EDIT TOOLPATH LEADS RAISEFORM
EDIT TOOLPATH START TYPE POINT_SAFE
EDIT TOOLPATH END TYPE POINT_SAFE
PROCESS TPLEADS
LEADS ACCEPT

}

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

И еще макрос у меня останавливается на первом же IF. думаю из за того что изначально папок с именем "1" в проекте нет.

Пустые NC файлы создаются чтобы вставить в них траектории массива (это первый пункт желаемых улучшений). Сейчас после завершения макроса это делает инженер вручную, перетаскиванием. Как это автоматизировать не знаю.

Link to post
Share on other sites
8 часов назад, syncomp сказал:

Всем здравствуйте!  При отладке макросов иногда бывает ситуация, когда из-за ошибки в нем, невозможно остановить сам макрос. Нажатие любой клавиши приводит к выводу ошибки. При этом работа в Повермилл невозможна. Приходится останавливать его через Диспетчер задач. Может кто подскажет, как остановить работу макроса?

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

Link to post
Share on other sites
scorpion1007
3 часа назад, Cefius сказал:

Вставил такой код после блока -Отключение сообщений и графики-

FOREACH tp IN folder ('Toolpath') {
ACTIVATE TOOLPATH $tp.Name

EDIT TOOLPATH LEADS RAISEFORM
EDIT TOOLPATH START TYPE POINT_SAFE
EDIT TOOLPATH END TYPE POINT_SAFE
PROCESS TPLEADS
LEADS ACCEPT

}

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

И еще макрос у меня останавливается на первом же IF. думаю из за того что изначально папок с именем "1" в проекте нет.

Пустые NC файлы создаются чтобы вставить в них траектории массива (это первый пункт желаемых улучшений). Сейчас после завершения макроса это делает инженер вручную, перетаскиванием. Как это автоматизировать не знаю.

 

Link to post
Share on other sites
scorpion1007

И опять же.

IF active(Toolpath.Name)=="1"  {

Откуда ты взял переменную Toolpath? Как ты проверяешь, у неё поле Name?

сначала получи саму сущность

enity toolpath=enity('Toolpath',"1")

а потом ты уже имеешь доступ к ее полю

sctring name_toolpath=$toolpath.name

Link to post
Share on other sites
  • 3 weeks later...

Всем здравствуйте! Пишу программы на PowerMill удаленно для разных предприятий. У каждого свои требования и разные заморочки. Поэтому для каждого заказчика у меня есть отдельные вкладки Ленты с необходимым набором инструментов. Постоянно сталкиваюсь с проблемой постпроцессора в NC файлах. Выбираю их вручную. Задумал сделать макрос, который создавал NC файл с нужным мне постпроцессором. Проблема в том, что указывая постпроцессор в одном проекте, PowerMill запоминает его. А в другом (следующем) проекте мне нужен другой постпроцессор, но при создании NC файла в Параметрах будет от прошлого проекта.

Может кто подскажет, как в пункте контекстного меню NC-файлы : "Предпочтения" установить нужный мне постпроцессор. Копирование команд в "Эхо" не дает нужного результата.

Link to post
Share on other sites
39 минут назад, maxx2000 сказал:

разве при загрузке профиля станка пост не подхватывается?

Профилями станка не пользуюсь. И нигде сколько работаю в РМ, никто этим не пользуется

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.



  • Сообщения

    • Клиент
      Ага, и пост сварганить под другой кам. Первая мысль, какая приходит в голову- это не соответствующе расположена деталь в кам и на станке. Но, ведь, 2 другие стороны ровные, на что вы и обратили внимание. Разгадку не знаю, но, все-таки, предполагаю, что дело не в программе. Контроль rtcp происходит на станке или в кам?
    • Ветерок
      очередная фигня. Не могу вставить в заметку символы. Пишет, что нет файла gtol.sym. А такого файла действительно нету. Есть gtol97.sym. Скопировал его в достпную папку, переименовал. Путь к папке прописан. Всё равно ругается.  А недавно проблемы не было.
    • Viktor2004
      это специально для теста 5-тиосевой обработки сделано   самодельные я туда поставил
    • lem_on
      Какой конченый программист, деталь простая как лапоть, а делается через одновременную обработку. Зачем там 5 осей, непонятно.  Цикл обкатки шарика на станке то есть?  Если там все норм, то пинать программиста с особой жестокостью. 
    • ak762
      глядя на ваше видео, впечатление что проблемма в программе а не в станке, почему там такие паузы вместо движения по простому контуру давным давно что то подобное делал на 5х микроне так все было плавно если НЦ код сгенерирован правильно и фрезу не отжимало на заготовке с HRC55       Mikron_5_axis_clip_1.MOV
    • Viktor2004
      к сожалению политику определяю не я. Мне моими политиками указано не сопротивляться.
    • fantom.ul
    • Ветерок
      Разобрался с помощью Ютуба. Оказывается в этой таблице всё не так. Там это не над столбцом, а слева, где дерево. Я туда и не смотрел (дисплей слишком большой ). И сортировка этой таблицы возможна только по одному столбцу, а не разным, как в спецификации.
    • Ветерок
      Вот про то и речь. Не кликается, не выбирается. И иконка выбора свойств неактивна.   Насколько я понял, в таблицу идет по умолчанию (и только так) значение Desription. И надо каким-то образом связать его с Наименованием чтобы не вводить вручную.
    • gudstartup
      тогда езжайте спокойно на следующий объект и думайте в поезде под стук колес а они пусть работают в 3+2 если план горит!!
×
×
  • Create New...