eksodus

Макросы в Power Mill

359 сообщений в этой теме
В 09.08.2018 в 15:04, Chester сказал:

 

я достаточно давно уже делаю обработку деталей по схеме: делаю 1 слой обработки нижней плоскости. например щас делаю деталь - обработка по контуру. делаю 1 слой на (в данном случае) Z= -15 mm. потом нажимаю волшебную кнопку (стрелка 2) и там все раскидываю. то есть делаю перемещение на 14,75 мм вверх, потом 69 копий по -0,25 мм. до Z= - 17,5 мм. высота данной детали 17 мм.

   При таком стиле написания увеличивается вероятность ошибки и перегенерация программы для корректировки  это время, для изучения макросов конечно полезно)))

Поделиться сообщением


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


25 минут назад, sssdos сказал:

При таком стиле написания увеличивается вероятность ошибки и перегенерация программы для корректировки  это время, для изучения макросов конечно полезно)))

не очень понял мысль. это черновая. у меня фрезы черновые 10мм уже точеные-переточеные. я после них даже не меряю. знаю, что допуск + 0.2 +0.3 мм. 

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

инструмент и планер.mac

 

прям тащусь. эти 2 фрезы - черновая и чистовая за ней. в 98% случаев они всегда стоят так. 

 

а щас воюю с обдиркой по контуру на всю глубину.... код, который дали выше - завтра посмотрю, щас уже домой уезжаю.

Изменено пользователем Chester

Поделиться сообщением


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

string scname = " c какой высоты?"
REAL $workz = input $scname
EDIT ZHEIGHTS AUTOMATIC OFF
EDIT ZHEIGHTS MODEVALUE $workz
PROCESS ZHEIGHTS

ZHEIGHTS ACCEPT

не работает. ругается на real. если написать int - тоже ругается. если без них, то не подставляет число. я так понял, проблема с типами переменных. если удалить real, то вылетает с ошибкой "переменная не задана или не определена".

Поделиться сообщением


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

Попробуй string

Поделиться сообщением


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

5b72b53a1eb04_.JPG.0738595ae3881a98fe009d758d42cf89.JPG5b72b5683910f_1.JPG.98014f06f9f50a9a74b46c78b1eb6212.JPG

 

IMPORT TEMPLATE ENTITY TOOLPATH TMPLTSELECTORGUI
"3D-Area-Clearance\Model-Profile.002.ptf"
FORM ZHEIGHTS
EDIT ZHEIGHTS MODE VALUE

string scname = "c какой высоты?"
string $workz = input $scname

EDIT ZHEIGHTS AUTOMATIC OFF
EDIT ZHEIGHTS MODEVALUE $workz  // сюда должно подставиться число, введенное выше.


DELETE ZHEIGHTS ALL
PROCESS ZHEIGHTS
ZHEIGHTS ACCEPT

Изменено пользователем Chester

Поделиться сообщением


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

Ну не знаю. Я сейчас не дома, проверить и посмотреть нет возможности.У меня это выражение используется для ввода названия задания. И всё работает. Милл2018.

У вас походу милл 2012?

Изменено пользователем scorpion1007

Поделиться сообщением


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

12.png.8b94b60ca02337b1ac84026881cb2a68.png

 

 

 

13.thumb.png.d4ad72b09e66c75a58d577b4ad2acb7b.png

Поделиться сообщением


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

именно это у меня не происходит. милл такой:

5b76c856b93c7_.JPG.63f2d138b00b9526a9b1ea3052002498.JPG

Поделиться сообщением


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

Всегда думал что нельзя открыть готовый NC файл в повермилле и запустить его симуляцию.

Оказывается можно это сделать, но это недокументированная возможность.

С циклами сверления не получилось - получалась немного неправильная траектория.

А с траекторией фрезерования всё ок.

 

Вводим вот эту команду -

SIMULATE TAPEFILE FILEOPEN

 

Появится окно :

TAP.png.37287a7ee7bf649af97ab1aa5ef32ebf.png

 

И после выбора NC файла создастся траектория по шаблону.

Её симуляция будет как у родной.

Единственное - СК конечно должна быть заранее создана в нужном месте.

 

Изменено пользователем eksodus
4 пользователям понравилось это

Поделиться сообщением


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

Оказывается можно это сделать, но это недокументированная возможность.

Откуда познания недокументированных возможностей?) Заморские форумы?

Поделиться сообщением


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

Откуда познания недокументированных возможностей?) Заморские форумы?

они самые )

причём нашёл в вообще странной теме, - этот вариант там предложили как альтернативный

Поделиться сообщением


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

Дополнил макрос для проверки на зарезы и столкновения:

Показать содержимое  
FUNCTION MAIN {

ECHO OFF DCPDEBUG UNTRACE COMMAND ACCEPT
DIALOGS ERROR OFF
DIALOGS MESSAGE OFF

//объявление массива
string list $Strings={}

int $i = 0
int $j = 0
string $Msbox=''
INT Pos1 =''
INT Pos2 =''

real $ShankLength = size(ENTITY('tool', '').ShankSetValues) //длина хвостовика

string $path = macro_path(0) + "\COLLISION.txt" //путь

tracefile open $path  //открытие файла COLLISION.txt для записи
//Проверка на зарезы и / или столкновения

//Если хвостовик не равен нулю
If $ShankLength != 0 {
//Вызов функции
CALL COLLISION_1()
} else {
//Вызов функции
CALL COLLISION_2()
}

tracefile close      //закрытие файла COLLISION.txt для записи

//открытие файла для чтения $infile
File Open $path for read as infile

//чтение массива строк $infile
File Read $Strings from infile

// Закрытие $infile
File close infile

int $SizeString = size($Strings)-1


STRING $pointName = ''
STRING  $Name = ''

While i<=$SizeString {
if position($Strings[i], "Информация",0) >= 0 {
$pointName = substring($Strings[i], 0, (position($Strings[i], "Информация"))+12 )
$Name = replace($Strings[i], pointName, "") //убирает со строки $Name указанные символы в переменной $pointName
$Msbox= Msbox +crlf+ $Name
} else {
$Msbox= Msbox +crlf+ $Strings[i]
}
$Pos1 = Position($Strings[i],"НЕ ")
$Pos2 = Position($Strings[i],"не ")
$i=i+1
if $Pos1!=-1 or $Pos2 !=-1 {
$j=j+1
} else {
}
}

if $j==2 and $i==2  {
Message info $Msbox
} ELSEIF $j==2 and $i>=3 {
Message Warn $Msbox
} ELSEIF $j<2 {
Message ERROR $Msbox
}


DIALOGS ERROR On
DIALOGS MESSAGE On

}


FUNCTION COLLISION_1 () {
EDIT COLLISION TYPE GOUGE
EDIT COLLISION SPLIT_SEGMENT N
EDIT COLLISION SPLIT_TOOLPATH N
EDIT COLLISION APPLY
EDIT COLLISION TYPE COLLISION
EDIT COLLISION ADJUST_TOOL N
EDIT COLLISION SPLIT_TOOLPATH N
EDIT COLLISION APPLY
}

FUNCTION COLLISION_2 () {
EDIT COLLISION TYPE GOUGE
EDIT COLLISION SPLIT_SEGMENT N
EDIT COLLISION SPLIT_TOOLPATH N
EDIT COLLISION APPLY
}

 

Hide  
Я отключил показ сообщений и объединил их в одно, которое вывожу сам. Если всё хорошо, то сообщение типа Info, если всё хорошо, но врезание ниже заготовки, то сообщение типа Warn, если всё плохо, то сообщение типа Error.

 

Скрины  

Безымянный.png

Hide  

 

 

Изменено пользователем Konstantin_VP
1 пользователю понравилось это

Поделиться сообщением


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

Устал расширение и точку убирать в NC файлах для фанука чтоб стойка видела... вот, пользуйтесь

Точки к имени NC файла.mac

Изменено пользователем sssdos

Поделиться сообщением


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

Тоже замучался с точкой на стойке Фанук.

Сначала нашел такое решение 

Цитата

FORM OPTIONS
EDIT OPTIONS TREE OPTTREEFILEMGMT
EDIT NCPROGRAM PREFERENCES OPT_EXTENSION "cms_ares_fanuc_mdf"
EDIT NCPROGRAM PREFERENCES EXTENSION "cms_ares_fanuc_mdf" "."

Потом в инструкции вычитал, что можно задавать как "M198 P5001", так и "M198 <O5001.tap>"

1 пользователю понравилось это

Поделиться сообщением


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

Потом в инструкции вычитал, что можно задавать как "M198 P5001", так и "M198 <O5001.tap>"

Бит 4 параметра 13115 на 1 чтобы символы < и > вводить можно было с экранной клавы пульта, .tap прописывать .TAP

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 24.05.2017 в 15:59, eksodus сказал:

если добавить в настройках Панели состояния в пользовательские поля функцию


limits('toolpath','')[4]

то получим минимальное Z активной траектории

если 4 заменить на 5 - максимальное Z

мне удобно, может и ещё кому пригодится...

 

Zmin.png.d8fc6a6de587667393377803bd188f59.png

 

Ребят, а можно ли добавить такую же функцию, только чтобы отображалась статистика траектории?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 09.09.2018 в 09:37, k.sema сказал:

Ребят, а можно ли добавить такую же функцию, только чтобы отображалась статистика траектории?

Statistics.CuttingMoves.Times.Arcs+Statistics.CuttingMoves.Times.Linear+Statistics.LeadsAndLinks.Times.Others+Statistics.LeadsAndLinks.Times.Plunge+Statistics.LeadsAndLinks.Times.Ramp+Statistics.LeadsAndLinks.Times.Rapid

2 пользователям понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 10.09.2018 в 12:52, dd22 сказал:

Statistics.CuttingMoves

Спасибо !

Только почему то показывает время чуть больше чем в милле

56.png.d3ba60ca99f7d21b39fc83c5e1977d98.png

 

а можно сделать, чтобы вывод был в часах-минутах-секундах ?

и чтобы скругляло до второго знака после запятой ?

1 пользователю понравилось это

Поделиться сообщением


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

Господа,подскажите, как удалить папку ncprograms в папке проекта? Бывает, если похожие детали, тупо копирую проект, меняю модель детали и пересчитываю траектории под новую модель. При сохранении проекта под новым именем сохраняются и карты наладки и предыдущие НЦ-файлы. Мне нужно снести все это перед процессированием .

Макрос ругается и просит моего вмешательства. Когда ж предварительно сам ручками удалю папку, макрос отрабатывает до конца без проблем.

Поделиться сообщением


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

Господа,подскажите, как удалить папку ncprograms в папке проекта? Бывает, если похожие детали, тупо копирую проект, меняю модель детали и пересчитываю траектории под новую модель. При сохранении проекта под новым именем сохраняются и карты наладки и предыдущие НЦ-файлы. Мне нужно снести все это перед процессированием .

Макрос ругается и просит моего вмешательства. Когда ж предварительно сам ручками удалю папку, макрос отрабатывает до конца без проблем.

через проводник не надо копировать, из милла сохранить как, тогда не будет папочки

Поделиться сообщением


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

через проводник не надо копировать, из милла сохранить как, тогда не будет папочки

Спасибо за совет. Но вопрос был в другом. Как из макроса удалить папку?

Поделиться сообщением


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

Может кому понадобится. Код удаляет папку ncprogram в теле проекта со всем содержимым

 

STRING Dirbase = project_pathname(0) 
STRING Dirdel = $Dirbase + "/ncprogram"
DELETE DIRECTORY $Dirdel

1 пользователю понравилось это

Поделиться сообщением


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

STRING Dirbase = project_pathname(0) 
STRING Dirdel = $Dirbase + "/ncprogram"
DELETE DIRECTORY $Dirdel

где взял?

Поделиться сообщением


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

где взял?

18.thumb.png.b7ccef68b1902a3443bd1e499751d2f8.png

1 пользователю понравилось это

Поделиться сообщением


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

Всем привет.

 

Не могу задать нужную строковую переменную.

Вот пример варианта макроса -

BOOL option2 = FALSE
$option2 = QUERY "Сверлить Отверстия от ВЕРХА Заготовки?"
	IF $option2 {
		STRING Top = "BLOCK"
	}    ELSE    {
		STRING Top = "HOLE"
	}


IMPORT TEMPLATE ENTITY TOOLPATH "Drilling/Drilling.ptf"
EDIT DRILL TYPE DEEP_DRILL
EDIT DRILL TOP $Top
EDIT DRILL DEPTH HOLE
EDIT DRILL DWELLTIME "0"
EDIT PAR 'AxialDepthOfCut.UserDefined' '1' EDIT DRILL PECK_DEPTH "2"
EDIT TOOLPATH ; CALCULATE
EDIT TOOLPATH SAFEAREA RESET
RESET TOOLPATH RAPID

 

Ну в общем - мне нужно чтобы из первой части, получившееся значение переменной вставилось во вторую

Я запустил отладчик - и увидел, что после закрытия IF-ELSE значение переменной Top обнуляется.

Хотелось бы сохранить.

 

Может кто-то помочь ?

Поделиться сообщением


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

Всем привет.

 

Не могу задать нужную строковую переменную.

Вот пример варианта макроса -


BOOL option2 = FALSE
$option2 = QUERY "Сверлить Отверстия от ВЕРХА Заготовки?"
	IF $option2 {
		STRING Top = "BLOCK"
	}    ELSE    {
		STRING Top = "HOLE"
	}


IMPORT TEMPLATE ENTITY TOOLPATH "Drilling/Drilling.ptf"
EDIT DRILL TYPE DEEP_DRILL
EDIT DRILL TOP $Top
EDIT DRILL DEPTH HOLE
EDIT DRILL DWELLTIME "0"
EDIT PAR 'AxialDepthOfCut.UserDefined' '1' EDIT DRILL PECK_DEPTH "2"
EDIT TOOLPATH ; CALCULATE
EDIT TOOLPATH SAFEAREA RESET
RESET TOOLPATH RAPID

 

Ну в общем - мне нужно чтобы из первой части, получившееся значение переменной вставилось во вторую

Я запустил отладчик - и увидел, что после закрытия IF-ELSE значение переменной Top обнуляется.

Хотелось бы сохранить.

 

Может кто-то помочь ?

Задай  переменную ТОР как глобальную сначала. Инициализируй ее в самом начале. А в цикле IF ELSE сделай присваивание. Тогда будет работать

В начале string TOP = "xxx"

В цикле $TOP = "BLOCK"

Поделиться сообщением


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

В начале string TOP = "xxx"

В цикле $TOP = "BLOCK"

чет не работает так

Поделиться сообщением


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

IMPORT TEMPLATE ENTITY TOOLPATH "Drilling/Drilling.ptf"
EDIT DRILL TYPE DEEP_DRILL
BOOL option2 = FALSE
$option2 = QUERY "Сверлить Отверстия от ВЕРХА Заготовки?"
    IF $option2 {
        EDIT DRILL TOP 
    }    ELSE    {
        EDIT DRILL DEPTH HOLE
    }
EDIT DRILL DWELLTIME "0"
EDIT PAR 'AxialDepthOfCut.UserDefined' '1'

EDIT DRILL PECK_DEPTH "2"
EDIT TOOLPATH ; CALCULATE
EDIT TOOLPATH SAFEAREA RESET
RESET TOOLPATH RAPID

Изменено пользователем scorpion1007

Поделиться сообщением


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

Не-не, мне нужно отдельную переменную создать.

Внутри каждой траектории я так сделать и сам могу.

 

А если разных отверстий будет штук 20 ?

Двадцать раз жать кнопку ОК слегка неудобно будет.

Поделиться сообщением


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

Не-не, мне нужно отдельную переменную создать.

Внутри каждой траектории я так сделать и сам могу.

 

А если разных отверстий будет штук 20 ?

Двадцать раз жать кнопку ОК слегка неудобно будет.

Тогда еще проще Переменная уже задана $option2, делай просто проверку в каждой следующей стратегии

 

BOOL option2 = FALSE
$option2 = QUERY "Сверлить Отверстия от ВЕРХА Заготовки?"

//------*** Сверление****__________
    
IMPORT TEMPLATE ENTITY TOOLPATH "Drilling/Drilling.ptf"
EDIT DRILL TYPE DEEP_DRILL
IF $option2 {
        EDIT DRILL TOP 
    }    ELSE    {
        EDIT DRILL DEPTH HOLE
    }
EDIT DRILL DWELLTIME "0"
EDIT PAR 'AxialDepthOfCut.UserDefined' '1'

EDIT DRILL PECK_DEPTH "2"
EDIT TOOLPATH ; CALCULATE
EDIT TOOLPATH SAFEAREA RESET
RESET TOOLPATH RAPID

1 пользователю понравилось это

Поделиться сообщением


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

Точно, спасиб !

 

ток у тя там ошибка, но суть то понятна )

Поделиться сообщением


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

Точно, спасиб !

 

ток у тя там ошибка, но суть то понятна )

Я просто особо не вникал в сам текст макроса, в блокноте быстро накидал)) Типо того:

 

BOOL option2 = FALSE
$option2 = QUERY "Сверлить Отверстия от ВЕРХА Заготовки?"

 

//------*** Сверление****__________
IMPORT TEMPLATE ENTITY TOOLPATH "Drilling/Drilling.ptf"
EDIT DRILL TYPE DEEP_DRILL
IF $option2 {
        EDIT DRILL TOP BLOCK
    }    ELSE    {
        EDIT DRILL TOP HOLE
    }
EDIT DRILL DEPTH HOLE
...... итд

Поделиться сообщением


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

Типо того:

 

Да, оно )

Поделиться сообщением


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

Тогда еще проще Переменная уже задана $option2, делай просто проверку в каждой следующей стратегии

не работает когда запускается функция

ибо внутри функции нет этой переменной

можно конечно ещё раз ее вызвать...

но два повторяющихся вопроса будут выглядеть как-то неадекватно )

 

есть способ использовать внутри функции уже заданную переменную переменную ?

Поделиться сообщением


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

Заметил, что некоторые команды не хотят работать при выключенном TMPLTSELECTORGUI . Не знаю с чем это связано. С включенным вроде отрабатывает. Только заготовка должна быть задана и отверстия активны

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

FUNCTION Main () {
BOOL option2 = FALSE
$option2 = QUERY "Сверлить Отверстия от ВЕРХА Заготовки?"

//------*** Сверление****__________
    
IMPORT TEMPLATE ENTITY TOOLPATH TMPLTSELECTORGUI "Drilling/Drilling.ptf"
EDIT DRILL TYPE DEEP_DRILL
CALL DRILL( option2 )
EDIT DRILL DWELLTIME "0"
EDIT PAR 'AxialDepthOfCut.UserDefined' '1'
EDIT DRILL PECK_DEPTH "2"
EDIT TOOLPATH ; CALCULATE
FORM ACCEPT SFDrilling
EDIT TOOLPATH SAFEAREA RESET //хз что за команды
RESET TOOLPATH RAPID //хз что за команды
}
//---------------функция задания верха отверстий-----------------
FUNCTION DRILL( BOOL option2, ) {
IF $option2 {
        EDIT DRILL TOP BLOCK
    }    ELSE    {
        EDIT DRILL TOP HOLE
    }
}

 

Поделиться сообщением


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

некоторые команды не хотят работать при выключенном TMPLTSELECTORGUI

я специально это убрал, как и строку FORM ACCEPT SFDrilling , которая закрывает граф. оболочку выбора траекторий

и вообще убрал все команды FORM

это позволило макросу работать намного быстрее

 

команды FORM  и TMPLTSELECTORGUI запускают графическую часть, например FORM TOOL -  открывает граф. окно активного инструмента

FORM TOOLPATH - открывает граф. окно активной траектории и тд

и потом везде идет команда FORM ACCEPT  ....  которая закрывает это графические окно

 

но в случае с макросом когда нам не нужно вводить данные вручную - каждый раз прорисовывание граф окна, пусть и не видимиого в макросе,

это лишнее время работы макроса

так что без них макрос просто летает теперь

 

а какие команды не хотят работать ? можно пример ?

мне на оф форуме уже дали ответ с функциями - и теперь все работает без ошибок

 

1 час назад, scorpion1007 сказал:

EDIT TOOLPATH SAFEAREA RESET //хз что за команды
RESET TOOLPATH RAPID //хз что за команды

это ускоренные, в диалоговом окне безопасные высоты

если этого не сделать при активации другой СК в данном макросе, - то ускоренные будут с другой стороны )

Изменено пользователем eksodus

Поделиться сообщением


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

Ну например в приведенном выше куске кода.

EDIT DRILL TOP BLOCK

EDIT DRILL TOP HOLE

У меня кстати, в уже рабочем макросе, после убирания TMPLTSELECTORGUI перестали отрабатывать некоторые команды. 

1 час назад, eksodus сказал:

 

мне на оф форуме уже дали ответ с функциями - и теперь все работает без ошибок

 

Кстати, и что посоветовали более старшие товарищи?:ok:

Поделиться сообщением


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

Ну например в приведенном выше куске кода.

EDIT DRILL TOP BLOCK

EDIT DRILL TOP HOLE

а как ты определяешь что не работают ? какую ошибку выдают ?

 

2 минуты назад, scorpion1007 сказал:

У меня кстати, в уже рабочем макросе, после убирания TMPLTSELECTORGUI перестали отрабатывать некоторые команды. 

какие ? вот эти две что выше ?

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

Поделиться сообщением


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

проверил твой макрос - у тебя работает и с TMPLTSELECTORGUI и без него

обе команды

EDIT DRILL TOP BLOCK

EDIT DRILL TOP HOLE

срабатывают

 

Поделиться сообщением


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

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

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

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