Jump to content

Макросы в Power Mill


eksodus

Recommended Posts

Павел1
6 часов назад, Arhgeo сказал:

 Была проблема с выбором пути сохранения Nc папки - сохранял рандомно в любое место.

В PM есть такой файлик pmstartup.mac, находится он обычно в C:\Program Files\Delcam\PowerMILL ххххх\lib\macro.

Вы можете в него добавлять разные простые команды, в том числе и предпочтения для NC-файлов, только вместо $dir, укажите реальный путь к папке в " ", куда необходимо записывать УП. И каждый раз, при запуске PM у Вас данные настройки предпочтений уже будут заполнены. Создаете NC-файл, все настройки уже готовы, записываете, и она направляется в указанную вами папку.

Просто PM сохраняет не все настройки, которые вы сделали в "Опциях", поэтому приходится прибегать к помощи данного файлика.

А так, конечно, тут уже каждый сам себе хозяин. Кому как удобно. 

Link to post
Share on other sites


Здравствуйте, снова нужна помощь в доработке макроса. Макрос обрезает модель по высоте 37мм. Для этого создается граница,  плоскость и удаляется модель, после чего происходит вычисление траектории и модель восстанавливается из корзины. Проблема в том что в макросе указана модель с конкретным именем "test". В другом проекте он будет искать ту же модель "test" .

FORM BLOCK
EDIT BLOCK ZMIN "37"
EDIT BLOCK ZMIN LOCK
EDIT BLOCK ZMAX "39"
EDIT BLOCK ZMAX LOCK
EDIT BLOCK RESETLIMIT "20"
EDIT BLOCK RESET
BLOCK ACCEPT
CREATE BOUNDARY ; SILHOUETTE FORM BOUNDARY
EDIT BOUNDARY "1" TOLERANCE "0,05"
EDIT BOUNDARY "1" PRIVATE NO
EDIT BOUNDARY "1" CALCULATE
EDIT BOUNDARY "1" ACCEPT BOUNDARY ACCEPT
CREATE PLANE ; FROM BLOCK
"37"
EXPLORER SELECT Model "Model\Planes" NEW
EXPLORER SELECT Model "Model\test" NEW
DELETE MODEL "test"
FORM STRATEGYSELECTOR
STRATEGYSELECTOR STRATEGY "Finishing/Raster-Flat-Finishing.ptf" NEW

IMPORT TEMPLATE ENTITY TOOLPATH TMPLTSELECTORGUI "Finishing/Raster-Flat-Finishing.ptf"

EDIT PAR 'CutDirection' 'any'
EDIT PAR 'Tolerance' "0,05"
EDIT PAR 'RadialDepthOfCut.UserDefined' '1' Edit Par 'Stepover' "7"
EDIT TPPAGE SWPointDistrb
EDIT TOOLPATH POINTDIST 'Filter.Type' 'arcfit'
EDIT TOOLPATH POINTDIST 'Filter.Factor' "0,05"
EDIT TPPAGE SWLeadsLinks
EDIT TPPAGE SWLeadIn
EDIT TOOLPATH LEADS LEADIN RAMP
EDIT TPPAGE SWLink
EDIT TOOLPATH "1" CALCULATE
FORM ACCEPT SFRasterFlat
SPLITTER TABRECYCLER
EDIT RECYCLER RECOVER Model "test"
EXPLORER SELECT Model "Model\Planes" NEW
DELETE MODEL "Planes"

пытался вставить в макрос такой кусок кода. Отдельно он удаляет модель, в макросе не работает.

// имя проекта
        STRING proj = project.name
        // путь к модели 
        STRING ModelPath = folder('Model')[0].Path
        // название модели (без формата) 
        STRING ModelName = folder('model')[0].Name
        // поиск позиции $ModelName в строке $ModelPath (0-начало) 
        REAL Pos = position($ModelPath, $ModelName)
        // отнимаем от пути к модели имя модели
        STRING path = substring($ModelPath, 0, $Pos)

        DELETE model $ModelName

Link to post
Share on other sites
Павел1
19.07.2024 в 14:18, Arhgeo сказал:

Здравствуйте, снова нужна помощь в доработке макроса. Макрос обрезает модель по высоте 37мм. Для этого создается граница,  плоскость и удаляется модель, после чего происходит вычисление траектории и модель восстанавливается из корзины. Проблема в том что в макросе указана модель с конкретным именем "test". В другом проекте он будет искать ту же модель "test" .

 

Могу предложить Вам макрос без удаления детали в корзину. 

Можно выделением всех поверхностей детали "test" занести их в окно "переменный припуск" - режим обработки "Игнорировать".

Макрос проверен, работает в PM2016. Поэтому некоторые команды могут быть отличные от "новых" версий PM, но принцип одинаковый.

 

DIALOGS ERROR OFF
DIALOGS MESSAGE OFF

 

FORM BLOCK
EDIT BLOCK ZMIN "37"
EDIT BLOCK ZMIN LOCK
EDIT BLOCK ZMAX "39"
EDIT BLOCK ZMAX LOCK
EDIT BLOCK RESETLIMIT "20"
EDIT BLOCK RESET
BLOCK ACCEPT
CREATE BOUNDARY ; SILHOUETTE FORM BOUNDARY
EDIT BOUNDARY "1" TOLERANCE "0,05"
EDIT BOUNDARY "1" PRIVATE NO
EDIT BOUNDARY "1" CALCULATE
EDIT BOUNDARY "1" ACCEPT BOUNDARY ACCEPT
CREATE PLANE; "37"
EDIT MODEL "test" SELECT SURFACE
FORM STRATEGYSELECTOR
STRATEGYSELECTOR STRATEGY "Finishing/Raster-Flat-Finishing.ptf" NEW
IMPORT TEMPLATE ENTITY TOOLPATH TMPLTSELECTORGUI "Finishing/Raster-Flat-Finishing.ptf"
EDIT TOOLPATH THICKNESS LIST UPDATE 7 NEW
EDIT TOOLPATH ; THICKNESS ACQUIRE
EDIT TOOLPATH ; THICKNESS COMPONENTS IGNORE
THICKNESS APPLY
THICKNESS ACCEPT
EDIT PAR 'CutDirection' 'any'
EDIT PAR 'Tolerance' "0,05"
EDIT PAR 'RadialDepthOfCut.UserDefined' '1' Edit Par 'Stepover' "7"
EDIT TPPAGE SWPointDistrb
EDIT PAR 'Filter.Type' 'arcfit'
EDIT PAR 'Filter.Factor' "1"
EDIT TOOLPATH "1" CALCULATE
FORM ACCEPT SFRasterFlat
DELETE MODEL "Planes"

 

DIALOGS ERROR On
DIALOGS MESSAGE On

Link to post
Share on other sites

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

EDIT TPPAGE SWPointDistrb
EDIT PAR 'Filter.Type' 'arcfit'
EDIT PAR 'Filter.Factor' "1"
[EDIT TOOLPATH "1" CALCULATE

Ошибка: Нельзя вычислить неактивную траекторию.

FORM ACCEPT SFRasterFlat

Link to post
Share on other sites

 

Понял свою ошибку, у вас расчёт не универсальный, в макросе указана конкретная модель, траектория, граница. у меня же граница 2, траектория 4. Переделал модель тест на универсальное указание модели, вставив костыль из другого макроса. Всё заработало.

EDIT BOUNDARY "2" CALCULATE
EDIT BOUNDARY "2" ACCEPT BOUNDARY ACCEPT
CREATE PLANE; "37"


STRING proj = project.name
        // путь к модели 
        STRING ModelPath = folder('Model')[0].Path
        // название модели (без формата) 
        STRING ModelName = folder('model')[0].Name
        // поиск позиции $ModelName в строке $ModelPath (0-начало) 
        REAL Pos = position($ModelPath, $ModelName)
        // отнимаем от пути к модели имя модели
        STRING path = substring($ModelPath, 0, $Pos)  


EDIT MODEL $ModelName SELECT SURFACE
FORM STRATEGYSELECTOR
STRATEGYSELECTOR STRATEGY "Finishing/Raster-Flat-Finishing.ptf" NEW
IMPORT TEMPLATE ENTITY TOOLPATH TMPLTSELECTORGUI "Finishing/Raster-Flat-Finishing.ptf"
EDIT TOOLPATH THICKNESS LIST UPDATE 7 NEW
EDIT TOOLPATH ; THICKNESS ACQUIRE
EDIT TOOLPATH ; THICKNESS COMPONENTS IGNORE
THICKNESS APPLY
THICKNESS ACCEPT
EDIT PAR 'CutDirection' 'any'
EDIT PAR 'Tolerance' "0,05"
EDIT PAR 'RadialDepthOfCut.UserDefined' '4' Edit Par 'Stepover' "7"
EDIT TPPAGE SWPointDistrb
EDIT PAR 'Filter.Type' 'arcfit'
EDIT PAR 'Filter.Factor' "4"
EDIT TOOLPATH "4" CALCULATE
FORM ACCEPT SFRasterFlat
DELETE MODEL "Planes"

 

DIALOGS ERROR On
DIALOGS MESSAGE On

 

Понял свою ошибку, у вас расчёт не универсальный, в макросе указана конкретная модель, траектория, граница. у меня же граница 2, траектория 4. Переделал модель тест на универсальное указание модели, вставив костыль из другого макроса. Всё заработало.

 

DIALOGS ERROR OFF
DIALOGS MESSAGE OFF

 

FORM BLOCK
EDIT BLOCK ZMIN UNLOCK
EDIT BLOCK ZMAX UNLOCK
EDIT BLOCK ZMIN "37"
EDIT BLOCK ZMIN LOCK
EDIT BLOCK ZMAX "39"
EDIT BLOCK ZMAX LOCK
EDIT BLOCK RESETLIMIT "20"
EDIT BLOCK RESET
BLOCK ACCEPT
CREATE BOUNDARY ; SILHOUETTE FORM BOUNDARY
EDIT BOUNDARY "2" TOLERANCE "0,05"
EDIT BOUNDARY "2" PRIVATE NO

EDIT BOUNDARY "2" CALCULATE
EDIT BOUNDARY "2" ACCEPT BOUNDARY ACCEPT
CREATE PLANE; "37"


STRING proj = project.name
        // путь к модели 
        STRING ModelPath = folder('Model')[0].Path
        // название модели (без формата) 
        STRING ModelName = folder('model')[0].Name
        // поиск позиции $ModelName в строке $ModelPath (0-начало) 
        REAL Pos = position($ModelPath, $ModelName)
        // отнимаем от пути к модели имя модели
        STRING path = substring($ModelPath, 0, $Pos)  


EDIT MODEL $ModelName SELECT SURFACE
FORM STRATEGYSELECTOR
STRATEGYSELECTOR STRATEGY "Finishing/Raster-Flat-Finishing.ptf" NEW
IMPORT TEMPLATE ENTITY TOOLPATH TMPLTSELECTORGUI "Finishing/Raster-Flat-Finishing.ptf"
EDIT TOOLPATH THICKNESS LIST UPDATE 7 NEW
EDIT TOOLPATH ; THICKNESS ACQUIRE
EDIT TOOLPATH ; THICKNESS COMPONENTS IGNORE
THICKNESS APPLY
THICKNESS ACCEPT
EDIT PAR 'CutDirection' 'any'
EDIT PAR 'Tolerance' "0,05"
EDIT PAR 'RadialDepthOfCut.UserDefined' '4' Edit Par 'Stepover' "7"
EDIT TPPAGE SWPointDistrb
EDIT PAR 'Filter.Type' 'arcfit'
EDIT PAR 'Filter.Factor' "4"
EDIT TOOLPATH "4" CALCULATE
FORM ACCEPT SFRasterFlat
DELETE MODEL "Planes"

 

DIALOGS ERROR On
DIALOGS MESSAGE On

Link to post
Share on other sites
Павел1
12 часов назад, Arhgeo сказал:

Понял свою ошибку, у вас расчёт не универсальный, в макросе указана конкретная модель, траектория, граница. у меня же граница 2, траектория 4. Переделал модель тест на универсальное указание модели, вставив костыль из другого макроса. Всё заработало.

 

 

Опять таки у Вас тоже не универсальный расчет. В проекте всегда будет граница 2 и траектория 4? Сначала Вы прислали макрос с траекторией 1 и границей 1.

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

 

обработка плоскости.mac

Edited by Павел1
Link to post
Share on other sites

Спасибо, очень хороший макрос. Если не сложно, объясните как сделали траекторию не 4, а универсальной. Мне это важно понять для других траекторий

 

Link to post
Share on other sites

Этот макрос для первого слоя, где в проекте всегда будет граница 2 и траектория 4. Потом, когда буду разбираться в написании макросов лучше, хотел создать на основе этого универсальный -для следующих слоев. Этот макрос выравнивает 40-ю фанеру, под слой 37мм. модель мы набираем слоями, к примеру модель высотой 222мм -будет из 6 слоев фанеры.

Link to post
Share on other sites
  • 4 months later...

Всем привет. Снова нужна помощь.

Хотел переделать макрос, чтобы задавать название NC-файла, но в итоге выходит "$newname100sled". Вот макрос:

FORM STRATEGYSELECTOR
IMPORT TEMPLATE ENTITY TOOLPATH TMPLTSELECTORGUI "Finishing/Constant-Z-Finishing.002.ptf"

EDIT TPPAGE SWBlock
EDIT BLOCK ZMIN UNLOCK
EDIT BLOCK ZMIN "-0,4"
EDIT BLOCK ZMIN LOCK
EDIT BLOCK ZMAX UNLOCK
EDIT BLOCK ZMAX "39"
EDIT BLOCK ZMAX LOCK
EDIT BLOCK RESETLIMIT "20"
EDIT BLOCK RESET
EDIT TPPAGE TOOL
ACTIVATE TOOL "6sv"
EDIT TPPAGE SWConstZFinishing
EDIT PAR 'AxialDepthOfCut.UserDefined' '1' EDIT PAR 'Stepdown' "50"
EDIT PAR 'Tolerance' "0,05"
EDIT PAR 'CutDirection' 'any'
EDIT PAR 'Thickness' "0"
EDIT TPPAGE SWPointDistrb
EDIT TOOLPATH POINTDIST 'Filter.Factor' "0,035"
EDIT TPPAGE SWLeadsLinks
EDIT TPPAGE SWLeadIn
EDIT TOOLPATH LEADS LEADIN NONE
EDIT TPPAGE SWLink
EDIT TOOLPATH "1" CALCULATE
FORM ACCEPT SFConstZFinishing

STRING NewName =  INPUT "Введите имя модели"
CREATE NCPROGRAM "$NewName+100sled" EDIT NCPROGRAM "$NewName+100sled" APPEND TOOLPATH "1" DEACTIVATE NCPROGRAM\r
FORM STRATEGYSELECTOR
IMPORT TEMPLATE ENTITY TOOLPATH TMPLTSELECTORGUI "Finishing/Constant-Z-Finishing.002.ptf"

 

 

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

Снова нужна помощь.

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

 

FORM STRATEGYSELECTOR
IMPORT TEMPLATE ENTITY TOOLPATH TMPLTSELECTORGUI "Finishing/Constant-Z-Finishing.002.ptf"

EDIT TPPAGE SWBlock
EDIT BLOCK ZMIN UNLOCK
EDIT BLOCK ZMIN "-0,4"
EDIT BLOCK ZMIN LOCK
EDIT BLOCK ZMAX UNLOCK
EDIT BLOCK ZMAX "39"
EDIT BLOCK ZMAX LOCK
EDIT BLOCK RESETLIMIT "20"
EDIT BLOCK RESET
EDIT TPPAGE TOOL
ACTIVATE TOOL "6sv"
EDIT TPPAGE SWConstZFinishing
EDIT PAR 'AxialDepthOfCut.UserDefined' '1' EDIT PAR 'Stepdown' "50"
EDIT PAR 'Tolerance' "0,05"
EDIT PAR 'CutDirection' 'any'
EDIT PAR 'Thickness' "0"
EDIT TPPAGE SWPointDistrb
EDIT PAR 'Filter.Factor' "0,035"

EDIT TPPAGE SWLeadsLinks
EDIT TPPAGE SWLeadIn
EDIT TOOLPATH LEADS LEADIN NONE
EDIT TPPAGE SWLink
EDIT TOOLPATH "1" CALCULATE
FORM ACCEPT SFConstZFinishing

STRING NewName =  INPUT "Введите имя модели"
$NewName = $NewName + "100sled"
CREATE NCPROGRAM $NewName
EDIT NCPROGRAM $NewName

APPEND TOOLPATH "1"
DEACTIVATE NCPROGRAM\r
FORM STRATEGYSELECTOR
IMPORT TEMPLATE ENTITY TOOLPATH TMPLTSELECTORGUI "Finishing/Constant-Z-Finishing.002.ptf"

 

 

Ну и косяки небольшие поправьте в конце.

Edited by mannul
Link to post
Share on other sites

Вчерашняя задача по задумке должна была использоваться в приложенном макросе, создавая NC-файлы в виде: NewName-100sled,

NewName-101as, NewName-102-4ern, NewName-103-4ist, NewName-104obr. Но вчерашний пример для этого не совсем подходит.

Пробовал переделать так: STRING NewName = INPUT "Введите имя модели"
STRING NCName
NCName = NewName + "-100sled"
CREATE NCPROGRAM NCName
EDIT NCPROGRAM NCName
APPEND TOOLPATH "1"
DEACTIVATE NCPROGRAM 

Но выходит ошибка.

1Sloy1.mac

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

Вчерашняя задача по задумке должна была использоваться в приложенном макросе, создавая NC-файлы в виде: NewName-100sled,

NewName-101as, NewName-102-4ern, NewName-103-4ist, NewName-104obr. Но вчерашний пример для этого не совсем подходит.

Пробовал переделать так: STRING NewName = INPUT "Введите имя модели"
STRING NCName
NCName = NewName + "-100sled"
CREATE NCPROGRAM NCName
EDIT NCPROGRAM NCName
APPEND TOOLPATH "1"
DEACTIVATE NCPROGRAM 

Но выходит ошибка.

1Sloy1.mac 7 \u041a\u0431 · 0 скачиваний

У вас те же самые ошибки что и в прошлый раз.

Link to post
Share on other sites

Вчерашний пример годится лишь для создания одного NC-файла, но не подходит для группы, т.к. к переменной добавляется название 100sled, при попытке исправить это, возвращаюсь к прошлым ошибкам.

Link to post
Share on other sites
17.07.2024 в 13:40, Павел1 сказал:

В PM есть такой файлик pmstartup.mac, находится он обычно в C:\Program Files\Delcam\PowerMILL ххххх\lib\macro.

Вы можете в него добавлять разные простые команды, в том числе и предпочтения для NC-файлов, только вместо $dir, укажите реальный путь к папке в " ", куда необходимо записывать УП. И каждый раз, при запуске PM у Вас данные настройки предпочтений уже будут заполнены. Создаете NC-файл, все настройки уже готовы, записываете, и она направляется в указанную вами папку.

Просто PM сохраняет не все настройки, которые вы сделали в "Опциях", поэтому приходится прибегать к помощи данного файлика.

А так, конечно, тут уже каждый сам себе хозяин. Кому как удобно. 

в пути вывода это прописывайте:   {project.path}\{project}ncprograms\{ncprogram} автоматом будут nc-файлы выводиться в папку проекта

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.



×
×
  • Create New...