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


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

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

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

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

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

Link to post
Share on other sites
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".

 

 

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

 

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
mekeale
11 часов назад, scorpion1007 сказал:

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

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

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

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

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

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
Cefius
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
Cefius
Только что, 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
Cefius
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
mekeale
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...
syncomp

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

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

Link to post
Share on other sites
maxx2000

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

Link to post
Share on other sites
syncomp
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.




  • Сообщения

    • ID_Hacker
      Единственная сложность в снятии бекапа была только с 802 стойкой с MMC100, где нужен был нормальный аппаратный COM порт, и то, на тот момент я не знал о ПО синуком НЦ и возможности снятия бэкапа с NCU модуля. Step 7 и Sinumerik add on for step7 достаточно новой версии, что бы распознать версию контроллера и внутреннего ПО и всё скачивается через Ethernet порт без каких либо проблем. Ну если этот Ethernet порт вообще есть. USB-MPI/Profibus контроллер на али стоит несколько тысяч. Оригинал от сименса около 50. Но почти во всех случаях он есть на PCU в составе станка с Powerline и всегда можно установить степ на неё. Степ свободно распространяется через SIOS, полноценная триальная версия без ограничений.
    • Anat2015
      Тем, что там в сравнении с этим - тишь, да гладь. А причина - "параметры". В Фануке все через параметры, надо их знать, плюс, не все еще видны, а чтобы видно было, надо знать еще одни волшебные параметры, и т.д. и т.п.. В Сименсе почти все уже настроено. Но Фанук гибче, надежнее. В общем, плюсы и минусы есть и там и там, каждому - свое, как было написано на одних воротах.
    • Мрачный
      Обычно PDM поставляется как минимум с неким минимальным комплектом документации, мануалами, видеороликами. И с техподдержкой. У вас что, нет ничего из этого? PDM на торрентах не валяется, в силу своей специфичности. Да, и у интермеха есть свой форум. Может, там поискать ответы на свои вопросы*
    • Orchestra2603
      @ДОБРЯК, а формы можно посмотреть?   @ber2004: Если вы хотите свериться с аналитикой по сфере, то можете перейти в сферические координаты (в СВ же можно?) и закрепить по всем узлам все перемещния кроме радиального. В той формуле при ее выводе тоже предполагается, что  (т.е. перемещения в окружном и меридианальном направлении равны нулю) У вас будет нормальная невырожденная матрица жесткости, т.е. сможете нормалбно баклинг посчитать, и это не  должно вносить никаких искажений в сравнении с аналитическим решением.  
    • konstrn
      В одну строку: TAP-THRU(tt)=<NUM_INST> отв.<hw-threaddesc>-6H. Можно и в две. Только при одном отверстии слово отв. придется удалять вручную.
    • ID_Hacker
      По ПО для настройки "Built in 3D interference check" у кого то есть информация? Очень нужна помощь.
    • Viktor2004
      Ага. Только подключение по ETHERNET что бы скачать программу автоматики, это опция И если нет под рукой специфического кабеля MPI, автоматику не увидишь никак. Да и Step7 для каждого типа Синумерика должен быть со своей тузлой, поддерживающей именно этот тип контроллера. И все это объемом в несколько гигабайт   чем синумериковский форум лучше во этого нашего фануковского? А чего стоит снять бэкап с Синумерика. То что у Фанука занимает шесть секунд, тут растягивается на час. А когда скачаешь бэкап и пробуешь его тут же залить обратно, а он не заливается. Ошибка за ошибкой. Типа, у какого-то там файла путь слишком длинный и превышает допустимое количество символов.     скажите, чего вы не можете найти по Фануку?  
    • Chuvak
      @vasillevich68 Вы внимательно читаете? В таблице 1 (которая взята из ГОСТ 9013-59 Металлы. Метод измерения твердости по Роквеллу) ведь даже указан диапазон измерений ед. твердости у шкалы С - 20-70. А на чертеже - 75-83. А что значит тогда число 15 в индексе Rc ? @vasillevich68 Кстати, а откуда вы взяли первую картинку ?   А это тогда что ? 105,5 и 109,5 явно не вписываются ни в один из диапазонов измерения.
    • ID_Hacker
      У меня и сейчас нет проблем. Форум даже из россии работает без каких либо ограничений. С документацией немного посложнее. ПО скачать да, сложновато. Но тут уже спасибо нашим службам, во всю ограничивающим VPN. Да, опыта с сименсом в разы больше. Но пару давних лет, и два года активной работы сейчас дают достаточный опыт. Сложной не кажется, не знакомой тоже. Кажется во многом нелогичной, неудобной, и чрезмерно закрытой. Я часто сталкиваюсь с тем, что понимаю суть проблемы, но приходится тратить много времени на изучение документации только из за того, что слова описывающие функции подобраны не те, документация не структурирована. Я всегда ругался на сименс за их неудобную документацию, но с фануком я познал на много больший уровень дискомфорта.
    • Honey Badger
      Спасибо и на том, я запомнил этот метод, буду пользоваться. Нашел еще несколько интересных приемов в ролике на ютубе, на канале Connective PLM, про выравнивание половинок разрезанной модели.  Показаны примы про выявление на модели элементов, по которым можно построить разные примитивы (цилиндр, сферу, конус, плоскость), построение на их основе плоскости симметрии, а также очень интересная фишка с использованием автоматического выравнивания частей модели. https://www.youtube.com/watch?v=ye879aAyrQE Пока еще даже не переварил всё показанное, но очень интересно)) Теперь думаю, как это применить, т.к. у меня-то модель цельная, а не разрезанная
×
×
  • Create New...