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.




  • Сообщения

    • Maik812
      Файлы на месте.. ссылки..  просто ссылки только на файлы, сами файлы и не каких копиий в проекте. Если на то пошло то универсальный инструмент для своих ссылок или разных вариантах отображения и хранения списков файлов https://wincmd.ru/plugring/virtualpanel.html я им пользуюсь. Закинул файлы с проектов и группировали их как хочешь это ссылки не файлы сами и имена любые дать. Можно так же сделать общий ини и юзать всеми проверяющими. Все это для большой организации и с большими издержками..  и так во многом. это приводит к не поворотности и неэкономичности больших компаний.
    • BU_RAN
      https://genlubric.ru/produkciya-gl/produkty-dlya-metalloobrabotki/
    • SAPRonOff
      ну когда длина в новом документе не кратна прототипному значению, там получается некая дельта, тут КАДу приходится где-то что-то ужать, по другому не понятно как.   у вас файл линии по гиперссылке сделан в учебной версии - у неё есть ограничения при использовании.   похоже эту задачу пользовательскими линиями просто так не решить, судя по справке https://www.tflexcad.ru/help/cad/17/index.html?g_u.htm и то что успел сам потыкать
    • Алекале
      Приветствую! Стоит ТС 11 и NX10. Изучаю вопрос внедрения Тех процесса в программу. Подскажите какие либо материалы, либо шаги к созданию ТП в тимцентр. Спасибо!
    • Алекале
      актуальная тема даже в 2023 году. можно пожалуйста ссылку. спасибо
    • gudstartup
      А вы все делаете строго по инструкции Этот пункт выполняете Попробуйте записать файлы из дискет при помощи TNCRemo но не все сразу а по каталогам
    • esergey
      смотря что понимать под этим  - техпроцесс  попробуйте тут почитать  или спросите форумчан в другой какои то теме  я не изучал этот вопрос  http://siemensdocs.plmlanit.ru/en-US/search/282219420?q=technical process&releaseVersion=Teamcenter 12.4&releasesku=PL20200109161503476 http://siemensdocs.plmlanit.ru/en-US/release/282219420/Teamcenter 12.4?releasesku=PL20200109161503476  
    • Алекале
      Добрый день, помогите освоить написание техпроцесса в teamcenter 11. невозможно найти какую либо информацию
    • VldLg
      Если через TNCRemo раскрыть файл бекапа в ту директорию где он находится и то что получается очень похоже на то, что должно быть на диске https://drive.google.com/drive/folders/1LUiEwa1MAHQRQ_nsDT1wFiZHxZNP7yf6?usp=sharing Это то, что извлекает TNCRemo и файла бэкапа, сделанного в то время, когда станок работал.
    • Kelny
      Пардонье, но это идиотизм и профанация. То есть человек что-то там проверил, согласовал, а через неделю-месяц вы принесли совершенно другой бумажный документ на подпись со словами: "всё проверено и согласовано в электронном виде". Или человек должен снова всмомнить, что он проверял, поднять сигнатуры проверяемых файлов и сверить, что с проверки ни чего не изменилось (то есть должен быть инструмент по сбору и хранения сигнатур на файлы или признак отсутствия изменений), а лишь потом ставить свой автограф. Или пока один бегает подписывает актуальный документ, другой уже исправил документацию в ПЛМ/ПДМ. Так в ПЛМ/ПДМ быть не должно, т.к. это называется бардак. Надо искоренять бумагу и переходить уже на электронные подписи, а не делать вид электронного документа оборота, но в конце цепочки возвращаться к бумаге - не хорошо это.   И это основной минус сетевой работы и обычно даже не предусматривают варианты альтернативного взаимодействия, что бы можно было решить эту проблему в случае форс-мажора на время восстановления сетей.   Тут проблема правильно ли наволил, обновил ли вовремя. Вобщем человеческий фактор, когда одни и те же файлы надо туда сюда переносить и не запутаться, где лежат последние, где отредактировать и снова положить по всем папкам, не забыв куда клал ранее. Вобщем тоже бардак.   Подписи в электронный документ можно ставить абы как, как и в бумажном, но по большому счёту это важно для внутренного использования, а внешнему потребителю КД по сути важнее подпись ответсвенного/утверждающего/большого начальника и т.п. ПЛМ/ПДМ как раз таки ограничивает порядок подписания, а так же сбрасывает все подписи, если документ изменился - так что круговорот документв в электронном обороте может оказаться более извилистым и круговоротным. В бумажных документах при прохождении круга подписей, при незначительной коррекции внесённой прямо в документ можно продолжить собирать подписи не спускаясь на нулевоей уровень со сбором подписей сначала.   Може и не трудно, но к сожалению не все бывают собранны и ответственны, а это может приводить к тому, что будет процесс всё время застопориваться. Автоматизация в этом плане сама разошлёт, сама напомнит, а так же сама пожалуется куда следует в случае, если какие-то цепочки встали без движения.
×
×
  • Create New...