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

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

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




  • Сообщения

    • streamdown
      Коллеги приветствую! IPS 8. Подскажите пожалуйста, кто какое серверное железо использует? Интересуют параметры при одновременной работе, ну например, 400 пользователей онлайн
    • gudstartup
      так он так и позиционируется по m19 pmc выдает g70.6 а чпу отвечает f45.7 но ориентацию и смещение в 4077 он отрабатывает нормально шпиндель встает ровно и смена происходит хорошо. вопрос почему после ввода команды управления скоростью он все еще продолжает контролировать число импульсов между нуль метками хотя в принципе уже должен отменить позиционный контроль и просто считать обороты по 0 метке как он это делает без М19? это все понятно но почему оно продолжает проверять это после завершения ориентации мне непонятно
    • Александр1979
      SP9047 SSPA:47 ILLEGAL SIGNAL OF POSITION CODER "The relationship between the A/B phase and 1-rotation signal is incorrect (Pulse interval mismatch)." "Неправильное значение счетчика импульсов сигнала на энкодере ALPHAi. На фазах A и B энкодера за один оборот шпинделя насчитывается 4096 импульсов обратной связи. Программное обеспечение по управлению шпинделем проверяет количество импульсов на фазах A и B, соответствующее энкодеру, при каждой генерации сигнала одного оборота. Данный аварийный сигнал срабатывает, если регистрируется число импульсов, нарушающее заданный диапазон."
    • vs3dpro
      Добрый день! У нас на есть SLA принтер 600х600х400мм. Можно напечатать мастер- модели, и можно приехать посмотреть. mail@iges.space
    • gudstartup
      после ввода 789 в edit mod надо перейти в режим ручное упр. нажать mod а потом помощь и откроется wzw.hlp  с возможностью выполнения команд управления atc. если не появляется содержимое wzw.hlp то возможно что у вас другой код хотя 789 'это стандарт для dmg в этом случае надо смотреть ваш plc раздел у меня пароль прописан в файле wzw_rett.mod
    • Anat2015
      SERVO TURRET AMP ALARM - переводить не пробовали, учитывая, что AMP - это и есть сервопривод? Что тут не ясного, язык не знаком?
    • Viktor2004
      я бы попробовал позиционировать шпиндель сигналом G70.6 Ответный сигнал, шпиндель сориентирован F45.7
    • gudstartup
      Здравствуйте уважаемые участники форума попрошу вас поделится мнениями. Имеется фрезерный шпиндель с позиционным кодером (зубчатое колесо и считывающая головка). Ошибку 9047 выдает после того отрабатывает M19 c последующим включением оборотов Sxxx M3 причем обороты могут быть любыми от 100-макс. Если задавать обороты без предварительной ориентации то 9047 не возникает и шпиндель нормально вращается на любой скорости при этом обороты не гуляют точность поддержания +-1 об\мин. Кабель заменен заменить сам датчик нет возможности. Мой вопрос в следующем почему шпиндель после M19 и включении управления скоростью Sxxx M3 остается в режиме позиционирования а не сразу переходит врежим управления скоростью и даже явная отмена ориентации кодом M20 ничего не меняет ведь режим позиционного управления должен быть отменен или он остается и отменяется не сразу после подачи команды M3 и кода скорости? Станок достаточно старый 2009 года плату управления шпинделем меняли на соседний ничего не изменилось. Это может быть логика PMC или скорее всего это датчик?   PMC-SB.001
    • Killerchik
      А мы-то думали, что пропорциональный гидравлический.....
    • Grig75
×
×
  • Создать...