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

Макросы в Power Mill


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

23 часа назад, Konstantin_VP сказал:

@scorpion1007

 

STRING LIST TPFOLDERS = get_folders('TOOLPATH')

Привеликий сенькс)

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


Всем добрый день. Всегда работал в Windows 7x64 и PowerMill 2018. Вчера пришлось переустановить Windows/ Сейчас стоит Windows 10x64 и PowerMill 2019. В принципе все нормально, но невыполняются некоторые макросы. Милл выдает ошибку, что не может вычислить выражение, синтаксическая ошибка. К примеру, знак деления(/) видит как (%). Создаю, редактирую и читаю макросы в Блокноте. Понимаю, что 10-ка неправильно выдает кодировку символов. Что делать? Может кто сталкивался с такой проблемой. Или все таки лучше вернуться на 7-ку?

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

Что делать?

переделывать макросы

Ссылка на сообщение
Поделиться на других сайтах
  • 2 недели спустя...
В 26.12.2019 в 12:51, syncomp сказал:

Всем добрый день. Всегда работал в Windows 7x64 и PowerMill 2018. Вчера пришлось переустановить Windows/ Сейчас стоит Windows 10x64 и PowerMill 2019. В принципе все нормально, но невыполняются некоторые макросы. Милл выдает ошибку, что не может вычислить выражение, синтаксическая ошибка. К примеру, знак деления(/) видит как (%). Создаю, редактирую и читаю макросы в Блокноте. Понимаю, что 10-ка неправильно выдает кодировку символов. Что делать? Может кто сталкивался с такой проблемой. Или все таки лучше вернуться на 7-ку?

Попробуй изменить кодировку в NOTEPAD++

1234.png.282998a642b4f2db99f728b2e706e1bb.png

 

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

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

Ребят, подскажите как пробежаться на предмет имён траекторий, содержащихся в NC-файле через цикл FOREACH?

 Нужно переименовать NC-файл, если  в нем содержится траектория с определенным именем

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

как пробежаться на предмет имён траекторий, содержащихся в NC-файле

 

Показать содержимое  
STRING LIST $Tl_list = extract(filter(components(entity('ncprogram', '')), "RootType=='nctoolpath'"), 'name')

FOREACH ncTp in Tl_list {

If $ncTp == '' {

}

}

 

Hide  

 

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

 

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

STRING LIST $Tl_list = extract(filter(components(entity('ncprogram', '')), "RootType=='nctoolpath'"), 'name')

FOREACH ncTp in Tl_list {

If $ncTp == '' {

}

}

 

Hide

 

Круто!!! Спасибо большое

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

Добрый день.Может кто-то работает в CimcoEdit v5? И подскажет, как отразить зеркально траекторию.

Я задаю такие параметры, и после отражения даже визуально видно, что изменяются В и С.

 

Изменение размера IMG_20200117_151729.jpg

Изменение размера IMG_20200117_144414.jpg

Изменение размера IMG_20200117_144115.jpg

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

Прошу помочь с макросом. Если в имени траектории есть G41 или G42, то в примечания (NOTES) к траектории нужно внести запись Dn, где n - номер инструмента траектории.

Ссылка на сообщение
Поделиться на других сайтах
В 28.04.2019 в 15:57, Konstantin_VP сказал:
Показать содержимое

//Включение корректора на траекториях с латинской приставкой '_RL или _RR' В названии

string $LEFT = "_rl" //корректор слева
string $RIGHT = "_rr" //корректор справа
int $Item = 0 //счётчик траекторий

STRING NCName  = entity('ncprogram','').Name //Активный NC

FOREACH ncitem IN components(entity('ncprogram', $NCName)) {

// Проверка траекторий в NC-файле
IF lcase(ncitem.RootType) == 'nctoolpath' {

// Получение имени в Нижнем регистре
STRING $lcaseName = lcase(ncitem.Name)

// Проверка, содержит ли имя $LEFT
IF position($lcaseName, $LEFT) > 0 {

EDIT NCPROGRAM ; ITEM $Item COMPONENT ${($Item)*1000}

COMP_CODE LEFT //корректор слева

// Проверка, содержит ли имя $RIGHT
} elseIf position($lcaseName, $RIGHT) > 0 {

EDIT NCPROGRAM ; ITEM $Item COMPONENT ${($Item)*1000}

COMP_CODE RIGHT //корректор справа

}

$Item = Item + 1

}

}

 

Hide
Если в названии траектории есть "_RL" включится корректор слева в активном NC , "_RR" - справа.

Как сделать, чтобы макрос воздействовал сразу на все NC-файлы, а не только на активный?

Ссылка на сообщение
Поделиться на других сайтах
В 19.02.2020 в 10:43, arsenev сказал:

Прошу помочь с макросом. Если в имени траектории есть G41 или G42, то в примечания (NOTES) к траектории нужно внести запись Dn, где n - номер инструмента траектории.

С этой задачей справился. Вот текст макроса для фанукообразных систем ЧПУ:
 

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

 

//Вставка Notes с номером корректора на радиус инструмента
//на траекториях с 'G41 или G42' В названии

string $LEFT = "G41" //корректор слева
string $RIGHT = "G42" //корректор справа

FOREACH tp IN folder('Toolpath') {

ACTIVATE TOOLPATH $tp.Name

STRING $CutcomLeft = "D"+$tool.Number.Value+"(G41)"
STRING $CutcomRight = "D"+$tool.Number.Value+"(G42)"

// Проверка, содержит ли имя $LEFT

IF position(tp.Name, $LEFT) > 0 {

EDIT TOOLPATH ; Notes $CutcomLeft

// Проверка, содержит ли имя $RIGHT

} elseIf position(tp.Name, $RIGHT) > 0 {

EDIT TOOLPATH ; Notes $CutcomRight

}

}

 

 

Сделал это для того, чтобы добавлять информацию о номере корректора на радиус инструмента и коде (стороне - G41 или G42) смещения в карту наладки из Notes траектории, т.к. прямого способа не нашёл.

Изменено пользователем arsenev
Ссылка на сообщение
Поделиться на других сайтах
  • 4 недели спустя...

Может кому пригодиться. Макрос для вывода времени обработки в формате ЧЧ:ММ:СС . Выводит данные в текстовый файл. По каждому NC-файлу отдельно + в конце суммарное время обработки.

Время.jpg

Время обработки.zip

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

Может кому пригодиться. Макрос для вывода времени обработки в формате ЧЧ:ММ:СС . Выводит данные в текстовый файл.

А можно в сам фаил вписывать, я потом тоталлом выведу значение, только добавте например перед значением символ типа # или % или еще как.

иначе не удобно, яч вижу фаил и вижу значение все по нему, а не ищу в текстовике.

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

А можно в сам фаил вписывать, я потом тоталлом выведу значение, только добавте например перед значением символ типа # или % или еще как.

иначе не удобно, яч вижу фаил и вижу значение все по нему, а не ищу в текстовике.

Данный макрос переименовывает NC-файлы в "Имя_NC-файла %( ЧЧ:ММ:СС )"

Так Вы будете видеть файл и значение по нему

Время обработки_запись в имя NC-файла.zip

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

Всем добрый вечер! Как изменить знак переменной? Т.е. если переменная отрицательная, то нужно сделать ее положительной и наоборот...

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

Всем добрый вечер! Как изменить знак переменной? Т.е. если переменная отрицательная, то нужно сделать ее положительной и наоборот...

//переменная
INT I = 85
// смена знака переменой
$I = -($I) 
//
// вывод в сообщении
MESSAGE INFO $S

Здравствуйте. Вот, хотя бы, так

Изменено пользователем Bullet77
Ссылка на сообщение
Поделиться на других сайтах

Расскажите пожалуйста нормальным языком как объявить в макросе Функции и ими пользоваться. По руководству я понял, что должна присутствовать функция Main.

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

Расскажите пожалуйста нормальным языком как объявить в макросе Функции и ими пользоваться. По руководству я понял, что должна присутствовать функция Main.

Функция "Main", по сути, является основой исполняемого файла. Телом, так сказать. А все остальные функции, которые создаются в этом файле, могут быть использованы или не использованы в функции "Main" и остальных функциях.  Использование функций удобно тем, что Вы можете 1 раз написать код и вызывать его, как функцию, столько раз, сколько нужно, а не дублировать код в исполняемом файле. Это приводит к сокращению объема конечного файла.  Но без функции "Main" остальные функции существовать не могут. Вот пример с описанием действий русским языком:

// в этой функции исполняеться "основной" код
function Main() {

	//формируем путь для перехода	
	string path_project = $project_pathname(0) + "\DATA\" + $project.Name
	
	// путь к модели
  	string ModelPath = folder('Model')[0].Path

  	 //название модели (без формата) 
  	string ModelName = folder('model')[0].Name

    // поиск позиции $ModelName в строке $ModelPath (0-начало) 
    real Pos = position($ModelPath, $ModelName)

    //отображает строчку с позиции 0 до $Pos 	//отнимаем от пути к модели имя модели
    string path = substring($ModelPath, 0, $Pos)

	//формируем путь для перехода
	string path_model = $path + "\DATA\" + $ModelName
	
	// формируем списки которые будут записаны в соответствующие файлы
	string list s_project = {"Данные по проекту"}
	string list s_model = {"Данные по модели"}

	//передаем переменные в функцию WRITING. Где $path_project - путь для перехода, а $s_project - то что будет записано в сам файл
	CALL WRITING($path_project, $s_project)
	CALL WRITING($path_model, $s_model)
}

// в этих двух функциях, описаных ниже, исполняется "вспомогательный" код
// в данном случае функция WRITING вызывается 2 раза, а не
// дважды продублирован "кусок" кода

// принимаем переменные в функции WRITING. Где string P - $path_project - путь для перехода, а string list S - $s_project - то что будет записано в сам файл
// соблюдая при этом типы файлов
function WRITING(string P, string list S)
	
	// используем функцию внутри функции
	CALL CheckDirect($P) 
	
	// формируем название файла
	string file = "Файл для (" + $p + ").txt"

	//открытие файла, а если его нет, то создание
	FILE OPEN $file FOR WRITE AS "F"

	foreach line in S {

	// запись в файл переменной $line
	FILE WRITE $line TO "F"
	}

	FILE CLOSE "F"
}

function CheckDirect(string D) {

	//проверка наличия пути
	if dir_exists($d) {

	//если есть - переходим
	CD $d
	} else {

	//если отсутствует - создаем и переходим
	MKDIR $d
	CD $d
	}
}
	

После функции "Main" обязательно использование () "открыта-закрыта скобка". При передаче переменных, во внутрь функции или из нее, обязательно соблюдение последовательности переменных и их типа. Если требуется передать обратно значение из функции "вспомогательной" в функцию "Main" или другую, то переменную описывают как (OUTPUT "тип переменной" "сама переменная") , но без  кавычек.  "Вспомогательные" функции, так же как "Main", могут быть использованы без передачи данных, но присутствие скобок в описании и вызове такой функции - обязательно.

Изменено пользователем Bullet77
Ссылка на сообщение
Поделиться на других сайтах
  • 1 месяц спустя...

Уважаемые, форумчане. Выкладываю два макроса  для изменения начальной и конечной безопасных точек траекторий в PM2016... 

изменение конечной безопасной точки.mac изменение начальной безопасной точки.mac

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Maks Horhe
      Можно и так сказать) Пока я не выслал бэкап посмотрите пожалуйста, будет работать уп? Станок 3х фрезер, fanuc 0i mf plus. Именно в таком виде, в одном файле, может где ошибся, подскажите. Пока не пробовал. %  O0001(FREZA D40R5) G21 G0 G17 G40 G49 G80 G90 T1 M6 (D40) G0 G90 G54 X0. Y0. S800 M3 G43 H1 Z20. M8 G1 F500. X0. Y0. G66 P8888 X0. Y0. G67 G66 P8889 X0. Y0. G67 G66 P8890 X0. Y0. G67 M5 M9 M30 % O8888 #20=20(RFrezi) #21=63.7(DNach) #22=-121.0(Z) #23=4.5(Angle) #24=1(step Z) #25=0.25(step CIRC) #33=-1(G2-1 G3+1) (****************) G90 G1 Z1.0 #11=0 #12=0 #13=1.0 #26=ROUND[3.142*#21/#25](N) #27=#21/2-#20 #31=#27 #28=0 #29=#24*TAN[#23] #30=#29/#26 #32=360/#26 N1 #1=#11+#27*COS[#28] #2=#12+#27*SIN[#28] #3=#13+[#27-#31]/TAN[#23] IF [#3 LT #22] GOTO2 G1 X#1 Y#2 Z#3 #27=#27-#30 #28=#28+#32*#33(G2 or G3) IF [ABS[#28] GE 360] THEN #28=0 IF [#27 LE 0.1] GOTO3 GOTO1 N2 X#1 Y#2 G2 I[#11-#1] J[#12-#2] N3 G1 X#11 Y#12  (Z[#13+5]) X#11 Y#12 M99 % O8889 #20=20(RFrezi) #21=45(DNach) #22=-121(Z) #23=0.001(Angle) #24=0.5(step Z) #25=0.25(step CIRC) #33=-1(G2-1 G3+1) (****************) G90 G1 Z-113.0 #11=0 #12=0 #13=-113. #26=ROUND[3.142*#21/#25](N) #27=#21/2-#20 #31=#27 #28=0 #29=#24*TAN[#23] #30=#29/#26 #32=360/#26 N4 #1=#11+#27*COS[#28] #2=#12+#27*SIN[#28] #3=#13+[#27-#31]/TAN[#23] IF [#3 LT #22] GOTO5 G1 X#1 Y#2 Z#3 #27=#27-#30 #28=#28+#32*#33(G2 or G3) IF [ABS[#28] GE 360] THEN #28=0 IF [#27 LE 0.1] GOTO6 GOTO4 N5 X#1 Y#2 G2 I[#11-#1] J[#12-#2] N6 G1 X#11 Y#12  (Z[#13+5]) X#11 Y#12 M99 % O8890 #20=20(RFrezi) #21=44.969(DNach) #22=-195(Z) #23=-4.5(Angle) #24=0.5(step Z) #25=0.25(step CIRC) #33=-1(G2-1 G3+1) (****************) G90 G1 Z-121.0 #11=0 #12=0 #13=-121.0 #26=ROUND[3.142*#21/#25](N) #27=#21/2-#20 #31=#27 #28=0 #29=#24*TAN[#23] #30=#29/#26 #32=360/#26 N7 #1=#11+#27*COS[#28] #2=#12+#27*SIN[#28] #3=#13+[#27-#31]/TAN[#23] IF [#3 LT #22] GOTO8 G1 X#1 Y#2 Z#3 #27=#27-#30 #28=#28+#32*#33(G2 or G3) IF [ABS[#28] GE 360] THEN #28=0 IF [#27 LE 0.1] GOTO9 GOTO7 N8 X#1 Y#2 G2 I[#11-#1] J[#12-#2] N9 G1 X#11 Y#12  G1 Z[0+10] F2000. X#11 Y#12 M99 %  
    • Eduard99
      Заказ очень актуальный, прошу не стесняться задавать вопросы на почту и переходить к обсуждению. Количество может быть разделено на 2 партии: по 4шт каждого + остаток. Первая партия на 4шт. потребуется за 2 месяца, остальное можно попозже. Являюсь прямым заказчиком.
    • AlexArt
      Ну заниматься математикой на досуге полезно для прочистки мозга.
    • Madmax70
      какие они молодцы
    • mannul
      Вы уверены что у вас программа и подпрограмма выводятся? Оставьте галочку только на УП при записи:    
    • gudstartup
      проверяйте все что написано в руководстве. то что вы там нарезаете хоть десятками к рг  не имеет отношения она зафиксирована. или это привод активного инструмента?
    • gudstartup
      на каких блоках7 если надпись smartkey не исчезает то ключ не читается у вас он не читается по причине неправильной работы базы. можите вынуть ключ с базы и посмотреть ошибка должна остаться
    • mannul
    • FitchKrause
      Ранее на этом станке успешно запускали нарезку 5-и уплотнителей, нарезали две штуки, и в момент смены инструмента нажали reset. Посыпались ошибки, их вроде устранили, попутно сбросив нули станка(не специально) и восстановив их, после он проработал примерно час и проблем не было. Ещё ранее, его пару раз запускали и нарезали уплотнители, работал без проблем. А про разборку двигателя не известно, скорее всего как он приехал, включили, дабы проверить на работоспособность и все.
    • karlf
      Ну, интересный момент в том, что на этом бэкапе, который загружается полностью, ключ не видится и на блоках в шкафу горит красная лампочка. А на бэкапе, который не грузится полностью, на блоках загорается зелёная. То есть сам ключ физически работает
×
×
  • Создать...