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

Макросы в 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 пользователей

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



  • Сообщения

    • maxx2000
      @artberesta 2 раздела справки https://tflexcad.ru/help/cad/17/?ysclid=m3bnjiod40554176555 делается как и в любой другой CAD, протягиванием эскиза по траектории с вычитанием материала. 3D Построения. Опорная геометрия-3D путь-Проекция 3D пути на грань или тело Твердотельное моделирование-По траектории
    • artberesta
      Спасибо большое всем ответившим на мой вопрос. Я изучаю эту программу , и в силу своего возраста она дается мне тяжело. (Хотя и на русском языке) Я легко могу это сделать в 3 программах blender, fusion, zbruch. Если вам будет не сложно , покажите на примере как это сделать в t flex. Возможно , когда я это сделаю и пойму , я обязательно выложу ответ на рутубе.  
    • gudstartup
      @Madmax70 900 -ые параметры опций запишите отдельно так как их только вручную вводить нужно. это связано с тем что при установке того или иного бита опций меняется конфигурация системы и оа требует перезагрузки чтобы привести в соответствие память (выделить или убрать несколько кб)и включить установленные функции а при изменении размера памяти программ эта область полностью очищается и т.д. можете конечно  попробовать их ввести через 232 предварительно установив параметры связи но и reader/puncher inerface  может быть опциональным поэтому придётся соответствующий 9хх.х установить иначе связь вовсе не заработает. сколько раз я не пробовал вводить ни разу нормально все не ввелись может чего не так делал. да и на 10 11 серии фанука ввод опций только ручной через ипл меню
    • ALEKS
      Презентация пройдёт в Герцлии 5 декабря и в Кейсарии 26 ноября сего года. Записывайтесь у секретаршы Симатрона.
    • Artas28
      Что означает запись, например @135:=@127+@802;//(X*COR*POS) @140:=@135-#10 @  - ?  := ?  
    • Artas28
      Добрый день! Есть у кого программа для Inspection Plus. Измерение отверстия или вала по трем точкам (O9823). Желательно для Syntec. А то в станок O9804 Векторная калибровка радиуса сферического наконечника щупа загрузили, а измерение отв. по 3-м точкам нет:((
    • Guest_by
      Попробуйте так:   CIMFIL/ON,GOHOME     XX=POSTF(2,1,1867,1)    FEDRAT / 123.000000,  MMPM        XX=POSTF(13)                 XX=POSTF(2,1,1867,0)            XHOME=POSTF(1,3,130)             YHOME=POSTF(1,3,131)   ZHOME=POSTF(1,3,132)   FHOME = 8000 POSTN/ALL           POSTN/OUT,7,1,26,ZHOME,F,FHOME POSTN/OUT,24,XHOME,25,YHOME CIMFIL/OFF
    • mamomot
      Понятно! Да я о Вас давно все понял... Вы, главное, не беспокойтесь...
    • gudstartup
      вы тоже не видите ответа в этом вопросе ... про барабаны не знаю но по головам своих учеников он стучать любил от этого гварнери выглядит таким забитым
    • maxx2000
      @mamomot странная манера у тебя трактовать слова и приписывать эту трактовку в заслуги автора. По моему мнению, все кто требует решения для каждого конкретного случая когда достаточно лишь изучить инструментарий, обезьяны, а не все. Почему? Потому что даже обезьян учат кнопки давить не задумываясь. Нажал на кнопку-получил результат. Коллеги твои плюются может потому что такие же обезьяны-кнопконажиматели. Пусть научатся моделить отливки, а не заниматься хнёй. Уровень в твоей конторе мне примерно понятен, по твоим статьям. НОРМАЛЬно, т.е. и так сойдёт. Пусть изучают Компас, учатся конструировать и у них не будет необходимости просить кого-то что-то делать в ТФ. И не понятно, чё ты так возбудился, уже должен был успокоиться. Вопрос риторический, ответа не требует.   Операция проецирвоания кривой и протягивания это базовый функционал для ВСЕХ CAD @Guhl а, я не говорил что он делал скрипки 
×
×
  • Создать...