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


Arhgeo

Здравствуйте, снова нужна помощь в доработке макроса. Макрос обрезает модель по высоте 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
Arhgeo

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

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
Arhgeo

 

Понял свою ошибку, у вас расчёт не универсальный, в макросе указана конкретная модель, траектория, граница. у меня же граница 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
Arhgeo

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

 

Link to post
Share on other sites
Arhgeo

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

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.



  • Сообщения

    • ivanK
      Думаю что это связано с тем что пакет программ который они поставляют для Fanuc рассчитан не только на fanuc а ещё на Meldas (Mitsubishi) и на Makino Они его разработали когда ещё переменные в fanuc нельзя было вызывать по имени а только через номер (например в поколении 0iC)  А то что при самостоятельной настройке делают ошибки им только на руку, купил софт не разобрался как его настроить, вызывай сотрудника Renishaw он всё сделает...    Мы 3 года назад дооснащали станок измерительной головой OMP60,  обратились в renishaw-russia, нам сказали что не будут устанавливать её на станок если у нас нет официально купленного софта под неё Goprobe или Inspection Plus
    • gudstartup
      @mortinio слишком малый объем бэкапа надо при сканировании файлов выбирать кнопку *.* scan all у вас огромная  длина инструмента указана отсюда DCM   я не нашел в вашем бэкапе таблицы инструментов и таблицы мест уберите инструмент т5 из грйфера в tnc:\plcdata исправьте длину инстр T41   зайдите в 789 зажмите разожмите шпидель и иициализируйте по смены
    • Jesse
      ну, это скорее наша придумка значить..просто у заказчика появились вопросы по типу "а к какой категории отнести ёмкость, которую вообще на сейсмику не проверяют?" Вот так и возникла 4-я категория...) ну у нас множитель перед [sigma] должен быть либо такой же как в газмясе, либо меньше. Ну т.е. более жёсткие требование. Хотя чаще их просто копируют))
    • Pauls75
      Привет, Максим!  Для тебя всё что угодно, хоть из 0.005 мм, про материал даже не спрашиваю 
    • A_1
      Станок получит список координат осей отверстий по программе HOLES2. Эта программа позиционирует инструмент к центрам отверстий, а изменённая программа L115 с помощью команд TRANS X=<текущее положение по X> Y=<текущее положение по Y> устанавливает в этих точках начало системы координат для расфрезеровки.   Если не хотите модифицировать подпрограмму L115, то можно сделать "по формулам": def int _i, _n=8; количество отверстий def real _r=125; радиус окружности def real _a=45; угол первого отверстия for _i = 1 to _n trans x=_r * cos(_a) y=_r * sin(_a) L115 _a = _a + 360 / _n endfor trans  
    • vik300001
      согласен, лучше пронест, но ситуация...  Нужно лантеком
    • aleksejkolinko
      При переносе размеров из модели в чертёж, почему-то не проставляются буквенные допуски. Пытаюсь освоить этот способ простановки размеров. У кого какой опыт и почему проставляются только числовые значения допусков?
    • Bellka
      На предыдущей стойке это была команда М6
    • Nod801
      @timyr8693 по вашей ссылке не получается скачать ... выложите в другое место ваши файлы ... посмотрим что там не так
    • Nikomas
      Из вашей формулы я не получу список координат.   Очень жаль что для TRANS нельзя использовать полярные координаты (TRANS RP=125 AP=45). Было бы в разы проще. Первое отверстие я нашел с помощью: R1 = SQRT(2) / 2 * 125 А вот второе добавить (+45град на радиусе 125мм) я без понятия как.
×
×
  • Create New...