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

Макросы в Power Mill


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

 

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

 

 

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

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


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

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

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

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

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

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


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".

 

 

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

 

Ссылка на сообщение
Поделиться на других сайтах
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 для подтверждения с следующей строке макроса

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

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

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

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

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

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

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

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

 

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

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

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

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

 

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

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

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

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

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

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

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

 

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

 

 

Ссылка на сообщение
Поделиться на других сайтах
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" существует, то не делать такие-то пункты. Либо каждый раз создавать уникальное название папки и в ней сохранять все траектории. Тогда макрос не будет ругаться на то, что такая папка уже есть. Либо такая траектория, с таким именем существует. Их имена тоже надо делать уникальными

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

 

 

Ссылка на сообщение
Поделиться на других сайтах
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" существует, то не делать такие-то пункты. Либо каждый раз создавать уникальное название папки и в ней сохранять все траектории. Тогда макрос не будет ругаться на то, что такая папка уже есть. Либо такая траектория, с таким именем существует. Их имена тоже надо делать уникальными

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

 

 

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

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

 

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

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

Ссылка на сообщение
Поделиться на других сайтах
Только что, 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

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

 

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

 

 

 

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

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

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

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

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

Ссылка на сообщение
Поделиться на других сайтах
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 файлы создаются чтобы вставить в них траектории массива (это первый пункт желаемых улучшений). Сейчас после завершения макроса это делает инженер вручную, перетаскиванием. Как это автоматизировать не знаю.

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

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

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

Ссылка на сообщение
Поделиться на других сайтах
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 файлы создаются чтобы вставить в них траектории массива (это первый пункт желаемых улучшений). Сейчас после завершения макроса это делает инженер вручную, перетаскиванием. Как это автоматизировать не знаю.

 

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

И опять же.

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

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

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

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

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

sctring name_toolpath=$toolpath.name

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



  • Сообщения

    • Snake 60
      Скорее всего исправляли в конкретной сборке, для конкретных тел. Насколько я помню, надо в самом эскизе профиля заполнить свойство Description
    • Snake 60
      Делаете дырку в свае - вставляете в нее трубу и 2 человеко-силы крутят сваю ) Дёшево и сердито и не нужен никакой планетарный редуктор ))
    • gudstartup
      вы всегда ищите свой путь или будете делать то что вам советуют? с самого начала прежде чем приступать к экспериментам вам нужно было вынуть носитель и сделать образ. diskcopy делает копию гибкого диска на другой а вам надо сделать образ жесткого диска или карты памяти. делайте как советует @Viktor2004 иначе еще чего нибудь сломаете или вам станок не нужен и вы его приобрели для экспериментов ? вот а печатной машинке из прошлого нельзя а вот на синумерике можно - удивительные вещи в настоящем происходят!! на 100 % уверен что там не модуль а либо писимиси ай либо жд @mircomax81 хотите работать в дос почитайте помощь по командам 
    • PuKoLLleT
      Доброго дня всем. Поделитесь опытом,раньше такое не доводилось делать. На торце фланца нужно сделать  восемь отверстий ф17H7 на токарно-фрезерном станке с осью Y ,имеется ManualGuide.В моем понимании нужно просверлить,а затем торцевой фрезой расточить нужный диаметр.Получится такой фокус,или надо разверткой доводить нужный размер?  Стойка Fanuc 0i-Tf.
    • Snake 60
      Всё верно, я даже русификатор делал для него (ушло на это где-то около года). Хороший софт был, я всех знакомых на него подсадил в свое время :) У меня даже где-то образ на виртуалке лежит с SW2014+MechSoft, Жаль, что автодеск его поглотил, а не DS :( А по сути вопроса, проектировал двухступенчатый планетарный редуктор в свое время. Что было нужно: Справочник по планетаркам (автора не помню, если надо поищу), из софта MathCAD + GearTeq (софтина идет вместе с GearTrax, только рассчитывает и моделирует несколько зацеплений согласно выбранной схеме, в том числе планетарки) Ой и ошибаетесь. Звездочки - не равно зубчатые колеса в планетарке) Мы намучились с малой точностью изготовления на эл.эрозии, а Вы лазером ))) Был собран опытный образец редуктора с незакаленными деталями, чисто проверить геометрию, отладить сборку. Так потом начальство этот редуктор сказало испытать в бою, как я не противился)) Помер за пару дней интенсивных нагрузок ))) Материал, термообработка и точности изготовления решают )
    • Snake 60
      @Тихоход  Ещё один вариант - изучать программирование и писать свою программу/макрос. Вот пример конфигуратора двери: https://www.youtube.com/watch?v=wv4HryWQBSk
    • mircomax81
      Посредством Diskcopy можно сделать адекватную копию на флоппи диск?
    • Andrey_kzn
      Да, ведь советовали автору вытащить жёсткий диск и сделать образ. Неужели самому не интересно, как устроен этот старый промкомпьютер? Там может стоять как жёсткий диск, так и CF-карта, или же Disc-on-chip или Disc-on-module.  Как-то очень давно, на подобном промышленном оборудовании (большая печатная машина) я не смог перенести  ПО с родной CF - карты на другую, такого же размера но другой фирмы. Была также станочная оболочка под досом.  Образ я делал Нортон гостом, развернул его на другую CF-карту без проблем. Машина загрузилась нормально и работала ровно 2 дня, на неродной CF-карте,  потом зависла, и отказалась загружаться. Пришлось вызывать сервисника. От него мы узнали, что нельзя просто так взять и заменить карту  - носитель системного ПО, на другую. А полезли мы туда, так как руководство захотело печатать отчёты по работе машины. В станочном ПО такая функция была. Вот только принтер надо было купить у фирмы - производителя этой самой машины. В попытках заставить работать другой принтер мы редактировали файл  AUTOEXEС.BAT, на предмет загрузки драйвера принтера, ничего не получилось, зато перестали открываться некоторые страницы станочного ПО.  Образ у нас был давно снят, и мы развернули его на другую карту памяти. Родную карту я трогать не стал (как чувствовал, что нельзя ). Сервисник восстановил ПО с архивной дискеты на родную карту памяти, и всё заработало. Дискеты с архивами ПО шли вместе с документацией к машине.  Там были дискеты с Досом, станочной оболочкой, параметрами приводов, программой ПЛК. Он же и предупредил нас о предельно аккуратном обращении с родной картой памяти, и посоветовал немедленно сделать образы с архивных дискет, что мы сразу и проделали.. Вот такой сюрприз от машины эпохи Дос.
    • Борман
    • gudstartup
      а ведь все работало...
×
×
  • Создать...