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

Макросы в Power Mill


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



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

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

У инструмента заданы режимы резания в его параметрах. Необходимо чтобы у траекторий, в которых есть имя "Correction", скорость шпинделя прибавлялась на 1 от скорости шпинделя инструмента. Необходимо, чтобы скорость шпинделя бралась от инструмента, который привязан к данной траектории. Понимаю, что надо использовать цикл внутри цикла, но не могу что-то реализовать данный момент. Результат чего я хочу добиться указан на картинке. Макрос и проект для примера прилагаю.

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

проект.rar 126 \u041a\u0431 · 1 скачивание

Создаешь переменную счетчик. Пробегаешься по папке траекторий  циклом foreach. Если toolpatch.name  содержит  Correction активируешь траекторию. Получаешь значение toolpath.SpindleSpeed.Value. Прибавляешь счетчик к этом значению, устанавливаешь новую скорость, пересчитываешь траекторию, счетчик увеличиваешь на единицу

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

Создаешь переменную счетчик. Пробегаешься по папке траекторий  циклом foreach. Если toolpatch.name  содержит  Correction активируешь траекторию. Получаешь значение toolpath.SpindleSpeed.Value. Прибавляешь счетчик к этом значению, устанавливаешь новую скорость, пересчитываешь траекторию, счетчик увеличиваешь на единицу

Спасибо за помощь. Вот наваял макрос по вашей схемке

REAL chet = 1

FOREACH tp IN folder('Toolpath') {
IF position(tp.Name, "Correction") >= 0 { 
ACTIVATE TOOLPATH $tp.Name
EDIT DATAFROMTOOL ;
RESET TOOLPATH FEEDRATE
REAL nmb = tp.SpindleSpeed.Value + $chet
$tp.SpindleSpeed.Value = nmb
$chet = chet + 1
}
}

Вычисления данного макроса меня устраивают, но в идеале, хотелось бы чтобы скорость шпинделя прибавлялась +1 после каждого "нового" инструмента. Т.е. у фрезы 16R0.5 стандартный режим 3000 об., а траектории "Correction" с этим инструментом были бы 3001 об, 3002 об, 3003 об. и т.д.; у фрезы 6 стандартный режим 4500 об., а траектории "Correction" с этим инструментом были бы 4501 об, 4502 об, 4503 об. и т.д. Данный макрос работает немного по другому. Но это уже совсем другая история. Попробую еще покумекать над идеальным вариантом. А так спасибо за направление.

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

Спасибо за помощь. Вот наваял макрос по вашей схемке

REAL chet = 1

FOREACH tp IN folder('Toolpath') {
IF position(tp.Name, "Correction") >= 0 { 
ACTIVATE TOOLPATH $tp.Name
EDIT DATAFROMTOOL ;
RESET TOOLPATH FEEDRATE
REAL nmb = tp.SpindleSpeed.Value + $chet
$tp.SpindleSpeed.Value = nmb
$chet = chet + 1
}
}

Вычисления данного макроса меня устраивают, но в идеале, хотелось бы чтобы скорость шпинделя прибавлялась +1 после каждого "нового" инструмента. Т.е. у фрезы 16R0.5 стандартный режим 3000 об., а траектории "Correction" с этим инструментом были бы 3001 об, 3002 об, 3003 об. и т.д.; у фрезы 6 стандартный режим 4500 об., а траектории "Correction" с этим инструментом были бы 4501 об, 4502 об, 4503 об. и т.д. Данный макрос работает немного по другому. Но это уже совсем другая история. Попробую еще покумекать над идеальным вариантом. А так спасибо за направление.

тогда вариант такой. Пробегаешься циклом по инструментам ,Создаешь словарь dictionary , где в качестве ключа вставляешь имя инструмента, а в значение ставишь счетчик по каждому инструменту( ну или либо обороты шпинделя) . 

Потом используешь вышеприведенный макрос. По имени инструменту( он же ключ словаря) вызываешь значение счетчика, правишь траекторию, значение value словаря увеличиваешь на единицу

Насколько я помню словарь не очень любит некоторые символы, такие как точки, слэши и прочее.

И вообще использование точек в именах инструмента и траекториях, нцэшках( везде вообщем) плохая идея, -потом вылезет. Лучше сделать replace  на запятую

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

@Павел1 

Вариант без активации каждой траектории. Явный минус: Значения скорости резания и подачи на зуб берутся из вкладки режимы резания выбранного инструмента. Минус в несоответствии подачи на зуб и  рабочей подачи. В проекте в 16R0.5 подача на зуб 0,00625 (соответствует 37,0 рабочей подачи),  а рабочая подача 600 (соответствует 0,1 подачи на зуб) 

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



int $K = 1
Real $Tool = 0

FOREACH tp IN folder('Toolpath') {

IF position(tp.Name, "Correction") >= 0 {

EDIT DATAFROMTOOL $tp.Tool.Name

int $spindlespeed = ($tp.Tool.CuttingSpeed.finishing.general * 1000) / (PI*$tp.Tool.Diameter)
$tp.spindlespeed.Value  = $spindlespeed

int $Cutting = $tp.Tool.FeedPerTooth.finishing.general * $tp.spindlespeed.Value * $tp.Tool.NumberOfFlutes
$tp.FeedRate.Cutting.Value = $Cutting

If $Tool == 0 {

$Tool = $tp.Tool.Diameter

}

If $Tool != $tp.Tool.Diameter {

$Tool = $tp.Tool.Diameter
$K = 1

}

$tp.SpindleSpeed.Value = $tp.SpindleSpeed.Value + $K
$K = $K+1

}

}

RESET LOCALVARS // очистить временные переменные

 

 

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

image.pngimage.png

 

Изменено пользователем Konstantin_VP
добавил скриншот
Ссылка на сообщение
Поделиться на других сайтах
30.04.2021 в 14:49, Konstantin_VP сказал:

@Павел1 

Вариант без активации каждой траектории. Явный минус: Значения скорости резания и подачи на зуб берутся из вкладки режимы резания выбранного инструмента. Минус в несоответствии подачи на зуб и  рабочей подачи. В проекте в 16R0.5 подача на зуб 0,00625 (соответствует 37,0 рабочей подачи),  а рабочая подача 600 (соответствует 0,1 подачи на зуб) 

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


int $K = 1
Real $Tool = 0

FOREACH tp IN folder('Toolpath') {

IF position(tp.Name, "Correction") >= 0 {

EDIT DATAFROMTOOL $tp.Tool.Name

int $spindlespeed = ($tp.Tool.CuttingSpeed.finishing.general * 1000) / (PI*$tp.Tool.Diameter)
$tp.spindlespeed.Value  = $spindlespeed

int $Cutting = $tp.Tool.FeedPerTooth.finishing.general * $tp.spindlespeed.Value * $tp.Tool.NumberOfFlutes
$tp.FeedRate.Cutting.Value = $Cutting

If $Tool == 0 {

$Tool = $tp.Tool.Diameter

}

If $Tool != $tp.Tool.Diameter {

$Tool = $tp.Tool.Diameter
$K = 1

}

$tp.SpindleSpeed.Value = $tp.SpindleSpeed.Value + $K
$K = $K+1

}

}

RESET LOCALVARS // очистить временные переменные

 

 

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

image.pngimage.png

 

Спасибо огромное за помощь. Подкорректировал немного ваш макрос. По поводу, что "в проекте в 16R0.5 подача на зуб 0,00625" это значение меняется галочкой "Показать Ае и Fz в Диаметрах фрезы" (см. рис.1), у меня такая галка по умолчанию не стоит, наверно у вас она стоит по умолчанию, поэтому и выводится такая подача на зуб. Но при работе макроса все равно рабочая подача менялась на маленькое значение. Тогда я изменил две переменные в макросе (подчеркнуто красным в рис.2), чтобы значения брались непосредственно из свойств инструмента. И еще после того как данный макрос прогоняешь второй раз (повторно) то скорость шпинделя уже не совсем верно записывалась. Я счетчик "поднял" выше (указано на рис.2). Вот теперь меня прям устраивает данный макрос.

int $K = 1
Real $Tool = 0

FOREACH tp IN folder('Toolpath') {

IF position(tp.Name, "Correction") >= 0 {

EDIT DATAFROMTOOL $tp.Tool.Name

int $spindlespeed = ($tp.FeedRate.CuttingSpeed.Value * 1000) / (PI*$tp.Tool.Diameter)
$tp.spindlespeed.Value  = $spindlespeed

int $Cutting = $tp.FeedRate.FeedPerTooth.Value * $tp.spindlespeed.Value * $tp.Tool.NumberOfFlutes
$tp.FeedRate.Cutting.Value = $Cutting

If $Tool == 0 {

$Tool = $tp.Tool.Diameter

}

If $Tool != $tp.Tool.Diameter {

$Tool = $tp.Tool.Diameter
$K = 1

}

$K = $K+1
$tp.SpindleSpeed.Value = $tp.SpindleSpeed.Value + $K

}

}

RESET LOCALVARS // очистить временные переменные

 

рис.1.jpg

рис.2.jpg

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

Доброго времени суток) Подскажите, можно ли с помощью выражения выводить на панель состояния активный инструмент? Т.е. нужно, чтобы при активации траектории там внизу, помимо радиуса и диметра, выводилось также название инструмента) изображение.png

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

Очень маленькое поле для выведения имени инструмента. У меня, например, название "гравер пятка 0,2 15градусов" ну никак не помещается. Кто как выходит из положения в таком случае?

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

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

варианта всего два:

1) сделать имя инструмента короче (и как он у вас в карту наладки помещается ?)

2) отредактировать файл ресурсов

 

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

в карту наладки то запросто)))

за ответ благодарю. даже не знаю что такое файл рессурсов. так что будем резать имя

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

даже не знаю что такое файл рессурсо

находится здесь - C:\Program Files\Delcam\PowerMILL 20.0.10\sys\exec64\resource.dll

ну это для 2016 милла

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

Всем привет. Хочу переименовывать траектории, чтобы в их названии присутствовал диаметр инструмента. Как это осуществить?

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

Прошу прощения. Нашел сам. Не знал, что к папкам в дереве можно обращаться на прямую.

real diam =Toolpath.tool.diameter
Message info diam

Правда это действует на активную траекторию

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

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

int a=1
FOREACH tp IN folder('Toolpath') {
string name=$tp.tool.name
string new='('+a+')'+name
//Message info new
RENAME TOOLPATH $tp.name $new
$a=a+1
}


Команда вывода сообщения использовал для отладки макроса

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

Доброго дня!

Извиняюсь, что не в тему, но все же. А возможно ли в PowerShape на кнопку повесить выполнение определенного макроса??? Так и не смог это сделать

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

Всем добрый вечер! У меня такой вопрос: можно ли автоматически подтверждать запросы от PowerMill при слиянии траекторий?

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

6.PNG

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

Всем добрый вечер! У меня такой вопрос: можно ли автоматически подтверждать запросы от PowerMill при слиянии траекторий?

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

 

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

EDIT TOOLPATH <toolpath1> APPEND CONFIRM <toolpath2>

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

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

EDIT TOOLPATH <toolpath1> APPEND CONFIRM <toolpath2>

Огромное спасибо!

Есть еще вопрос...

Не могу получить значение подходов и переходов для вычисления новых значений и их записи. Как записывать знаю, а получить? Из SWLeadIn и SWLeadOut

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

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

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

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

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

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

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

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

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

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

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



  • Сообщения

    • Snake 60
      Скорее всего исправляли в конкретной сборке, для конкретных тел. Насколько я помню, надо в самом эскизе профиля заполнить свойство Description
    • Snake 60
      Делаете дырку в свае - вставляете в нее трубу и 2 человеко-силы крутят сваю ) Дёшево и сердито и не нужен никакой планетарный редуктор ))
    • gudstartup
      вы всегда ищите свой путь или будете делать то что вам советуют? с самого начала прежде чем приступать к экспериментам вам нужно было вынуть носитель и сделать образ. diskcopy делает копию гибкого диска на другой а вам надо сделать образ жесткого диска или карты памяти. делайте как советует @Viktor2004 иначе еще чего нибудь сломаете или вам станок не нужен и вы его приобрели для экспериментов ? вот а печатной машинке из прошлого нельзя а вот на синумерике можно - удивительные вещи в настоящем происходят!! на 100 % уверен что там не модуль а либо писимиси ай либо жд @mircomax81 хотите работать в дос почитайте помощь по командам 
    • PuKoLLleT
      Доброго дня всем. Поделитесь опытом,раньше такое не доводилось делать. На торце фланца нужно сделать  восемь отверстий ф17H7 на токарно-фрезерном станке с осью Y ,имеется ManualGuide.В моем понимании нужно просверлить,а затем торцевой фрезой расточить нужный диаметр.Получится такой фокус,или надо разверткой доводить нужный размер?  Стойка Fanuc 0i-Tf.
    • Snake 60
      Всё верно, я даже русификатор делал для него (ушло на это где-то около года). Хороший софт был, я всех знакомых на него подсадил в свое время :) У меня даже где-то образ на виртуалке лежит с SW2014+MechSoft, Жаль, что автодеск его поглотил, а не DS :( А по сути вопроса, проектировал двухступенчатый планетарный редуктор в свое время. Что было нужно: Справочник по планетаркам (автора не помню, если надо поищу), из софта MathCAD + GearTeq (софтина идет вместе с GearTrax, только рассчитывает и моделирует несколько зацеплений согласно выбранной схеме, в том числе планетарки) Ой и ошибаетесь. Звездочки - не равно зубчатые колеса в планетарке) Мы намучились с малой точностью изготовления на эл.эрозии, а Вы лазером ))) Был собран опытный образец редуктора с незакаленными деталями, чисто проверить геометрию, отладить сборку. Так потом начальство этот редуктор сказало испытать в бою, как я не противился)) Помер за пару дней интенсивных нагрузок ))) Материал, термообработка и точности изготовления решают )
    • Snake 60
      @Тихоход  Ещё один вариант - изучать программирование и писать свою программу/макрос. Вот пример конфигуратора двери: https://www.youtube.com/watch?v=wv4HryWQBSk
    • mircomax81
      Посредством Diskcopy можно сделать адекватную копию на флоппи диск?
    • Andrey_kzn
      Да, ведь советовали автору вытащить жёсткий диск и сделать образ. Неужели самому не интересно, как устроен этот старый промкомпьютер? Там может стоять как жёсткий диск, так и CF-карта, или же Disc-on-chip или Disc-on-module.  Как-то очень давно, на подобном промышленном оборудовании (большая печатная машина) я не смог перенести  ПО с родной CF - карты на другую, такого же размера но другой фирмы. Была также станочная оболочка под досом.  Образ я делал Нортон гостом, развернул его на другую CF-карту без проблем. Машина загрузилась нормально и работала ровно 2 дня, на неродной CF-карте,  потом зависла, и отказалась загружаться. Пришлось вызывать сервисника. От него мы узнали, что нельзя просто так взять и заменить карту  - носитель системного ПО, на другую. А полезли мы туда, так как руководство захотело печатать отчёты по работе машины. В станочном ПО такая функция была. Вот только принтер надо было купить у фирмы - производителя этой самой машины. В попытках заставить работать другой принтер мы редактировали файл  AUTOEXEС.BAT, на предмет загрузки драйвера принтера, ничего не получилось, зато перестали открываться некоторые страницы станочного ПО.  Образ у нас был давно снят, и мы развернули его на другую карту памяти. Родную карту я трогать не стал (как чувствовал, что нельзя ). Сервисник восстановил ПО с архивной дискеты на родную карту памяти, и всё заработало. Дискеты с архивами ПО шли вместе с документацией к машине.  Там были дискеты с Досом, станочной оболочкой, параметрами приводов, программой ПЛК. Он же и предупредил нас о предельно аккуратном обращении с родной картой памяти, и посоветовал немедленно сделать образы с архивных дискет, что мы сразу и проделали.. Вот такой сюрприз от машины эпохи Дос.
    • Борман
    • gudstartup
      а ведь все работало...
×
×
  • Создать...