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

Макросы в Power Mill


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

04.02.2022 в 08:53, k.sema сказал:

Всем доброго дня! PowerMill 2019. Я часто пользуюсь переключением выбора объектов рамкой или курсором. Переключение осуществляется, как мы знаем, в панели инструментов. Но вот что бесит, нельзя просто навести и сразу кликнуть для смены выбора, нужно обязательно выждать секунду времени, пока слева выпадет окошечко с двумя ярлыками. Это неимоверно раздражает))

 

изображение.png

 

Поэтому я записью действий сделал 2 макроса, один из которых включает выбор рамкой, а второй включает выбор курсором. И забиндил на всё это 2 горячие клавиши. Вопрос: как сделать макрос, при запуске которого происходило бы переключение режима с одного на другой, и обратно. Т.е. чтобы можно было использовать всего одну горячую клавишу. Для чего мне это нужно? Всё просто - все удобные места для сочетаний клавиш с Ctrl уже заняты, а до других клавиш тянуться далеко и не удобно)))

)))

Я уже сколько лет пользуюсь миллом, но эти кнопки не юзаю от слова совсем.  Не понимаю, чем неудобно пользование shift  и ctrl и ЛКМ при выборе объектов? Если много нужно объектов выделил все рамкой зажал ctrl и удалил ненужные. Если мало объектов, зажал шифт и накликал мышкой нужные объекты)

Зачем так заморачивать с макросами, кнопками, скриптами))

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


04.02.2022 в 07:53, k.sema сказал:

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

Приветствую !

Я тоже очень часто пользуюсь сменой функции выбора рамкой или курсором.

Открою Вам секрет  - полусекундная задержка срабатывает только если навести указатель мышки и ждать!

Если же вам надо чтобы сразу выбрать - наведите мышку и нажмите ПРАВУЮ кнопку мыши - у вас сразу появится панелька выбора, и можно сразу клацнуть нужный вариант

и ждать не надо и никаких макросов не требуется )

 

PS: у меня повермилл 2016, поэтому я точно не уверен  как это будет срабатывать в милле 2019, но можете попробовать.

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

@k.sema

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

FUNCTION MAIN {

ECHO OFF DCPDEBUG UNTRACE COMMAND ACCEPT 

string list $cursor={}
$cursor[0] = "0"

string $path = macro_path(0) + "\cursor_switch.txt"
File Open $path for read as infile
File Read $cursor from infile
File close infile

//__________________________


File Open $path for write as outputfile

If $cursor[0] == "" {
$cursor[0] = "0"
}

If $cursor[0] == "1" {
CALL cursor_DRAG()
File write ${"0"} to outputfile
}

If $cursor[0] == "0" {
CALL cursor_BOX()
File write ${"1"} to outputfile
}

File close outputfile

}

FUNCTION cursor_BOX () {
PICK MODE DRAG
}

FUNCTION cursor_DRAG () {
PICK MODE BOX
}

 

нужно создать в папке с макросами текстовик cursor_switch.txt. При запуске изначально курсор должен быть в режиме "выбор рамкой". При активации макроса переключится режим на "выбор движением курсора", при повторном нажатии на "выбор рамкой" и т.д. В текстовик записывается текущий режим либо 0 (выбор рамкой) либо 1 (выбор движением курсора)

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

@eksodus

10.02.2022 в 23:05, eksodus сказал:

Если же вам надо чтобы сразу выбрать - наведите мышку и нажмите ПРАВУЮ кнопку мыши

Естественно, я так пробовал)) в 2019 милле, если нажать ПКМ, то выпадает меню настройки пользовательского интерфейса. 

 

 

14.02.2022 в 11:20, Konstantin_VP сказал:

@k.sema

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


FUNCTION MAIN {

ECHO OFF DCPDEBUG UNTRACE COMMAND ACCEPT 

string list $cursor={}
$cursor[0] = "0"

string $path = macro_path(0) + "\cursor_switch.txt"
File Open $path for read as infile
File Read $cursor from infile
File close infile

//__________________________


File Open $path for write as outputfile

If $cursor[0] == "" {
$cursor[0] = "0"
}

If $cursor[0] == "1" {
CALL cursor_DRAG()
File write ${"0"} to outputfile
}

If $cursor[0] == "0" {
CALL cursor_BOX()
File write ${"1"} to outputfile
}

File close outputfile

}

FUNCTION cursor_BOX () {
PICK MODE DRAG
}

FUNCTION cursor_DRAG () {
PICK MODE BOX
}

 

нужно создать в папке с макросами текстовик cursor_switch.txt. При запуске изначально курсор должен быть в режиме "выбор рамкой". При активации макроса переключится режим на "выбор движением курсора", при повторном нажатии на "выбор рамкой" и т.д. В текстовик записывается текущий режим либо 0 (выбор рамкой) либо 1 (выбор движением курсора)

Большое спасибо, всё работает)

 

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

Привет парни. Подскажите, хочу прописать кнопку, которая отрывает папку с нц-файлами текущего проекта. Как можно макросом открыть папку с файлами в обычном браузере?

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

Привет парни. Подскажите, хочу прописать кнопку, которая отрывает папку с нц-файлами текущего проекта. Как можно макросом открыть папку с файлами в обычном браузере?

Вот тут похоже то что вам нужно, самый последний пост:

 

 

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

Всех приветствую. 

Мил 2022
Ни как не могу решить одну проблему.

Имеется следующий набор команд:
 

// Инизиируем создание траектории
IMPORT TEMPLATE ENTITY TOOLPATH TMPLTSELECTORGUI "Finishing/Pattern-Finishing.ptf"

// Узнаем имя свежесозданной траектории
STRING $TP_Name = string(toolpath.name)
STRING $M_1st_TP = $TP_Name
// Назначаем выбранный шаблон
EDIT PAR 'Pattern' $M_1st_Pt

 

И тут вроде все хорошо и работает, но в аналогичной ситуации, когда я хочу выяснить имя только что созданного шаблона, а не траектории мил выдает ошибку

 

// Рисуем первый ряд валиков
CREATE PATTERN ;
STRING $Pt_Name = string(pattern.name)
STRING $M_1st_Pt = $Pt_Name
EDIT PATTERN $M_1st_Pt CURVEEDITOR START


 

Ошибка говорит, что не может вычислить выражение string(pattern.name)

 в чем может быть проблема?

 

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

Всех приветствую. 

Мил 2022
Ни как не могу решить одну проблему.

Имеется следующий набор команд:
 


// Инизиируем создание траектории
IMPORT TEMPLATE ENTITY TOOLPATH TMPLTSELECTORGUI "Finishing/Pattern-Finishing.ptf"

// Узнаем имя свежесозданной траектории
STRING $TP_Name = string(toolpath.name)
STRING $M_1st_TP = $TP_Name
// Назначаем выбранный шаблон
EDIT PAR 'Pattern' $M_1st_Pt

 

И тут вроде все хорошо и работает, но в аналогичной ситуации, когда я хочу выяснить имя только что созданного шаблона, а не траектории мил выдает ошибку

 


// Рисуем первый ряд валиков
CREATE PATTERN ;
STRING $Pt_Name = string(pattern.name)
STRING $M_1st_Pt = $Pt_Name
EDIT PATTERN $M_1st_Pt CURVEEDITOR START


 

Ошибка говорит, что не может вычислить выражение string(pattern.name)

 в чем может быть проблема?

 

Решил через задание известного имени шаблона и цикл проверки и изменения имени если такое уже существует.

// Задаем переменные для имен шаблонов
int $i1 = 0
int $i2 = 0
int $i3 = 0
STRING $M_1st_Pt = 'M_1st_Pt'
STRING $M_inner_Pt = 'M_inner_Pt'
STRING $M_last_Pt = 'M_last_Pt'

// Проверяем наличие шаблонов и меняем имя если такие уже есть
WHILE entity_exists('pattern', $M_1st_Pt) {
$i1 = $i1+1
$M_1st_Pt = 'M_1st_Pt' +'_'+ $i1
}
WHILE entity_exists('pattern', $M_inner_Pt) {
$i2 = $i2+1
$M_inner_Pt = 'M_inner_Pt' +'_'+ $i2
}
WHILE entity_exists('pattern', $M_last_Pt) {
$i3 = $i3+1
$M_last_Pt = 'M_last_Pt' +'_'+ $i3
}

// Рисуем первый ряд валиков
CREATE PATTERN $M_1st_Pt

 

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

Ошибка говорит, что не может вычислить выражение string(pattern.name)

 в чем может быть проблема?

да слишком замысловатый макрос у вас

все делается намного проще -

CREATE PATTERN ;
EDIT PATTERN  ; CURVEEDITOR START

 

 

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

 

 

И тут вроде все хорошо и работает, но в аналогичной ситуации, когда я хочу выяснить имя только что созданного шаблона, а не траектории мил выдает ошибку

 


// Рисуем первый ряд валиков
CREATE PATTERN ;
STRING $Pt_Name = string(pattern.name)
STRING $M_1st_Pt = $Pt_Name
EDIT PATTERN $M_1st_Pt CURVEEDITOR START


 

Ошибка говорит, что не может вычислить выражение string(pattern.name)

 в чем может быть проблема?

 

 

 

По сути, у вас переменная pattern не инициализирована( пустая), поэтому pattern.name выдает ошибку

 

1) Как правило имя первого созданного шаблона "1". Далее можно его переименовать через rename по например имени траектории

2) Если шаблон активный. то имя можно получить через entity

PRINT =entity('pattern','').Name

 

3)Новое имя . которое назначит система новому созданному шаблону

 

PRINT = new_entity_name('pattern')

4) Если шаблон не активен, тогда только через пeребор циклом foreach

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

нужно создать в папке с макросами текстовик cursor_switch.txt. При запуске изначально курсор должен быть в режиме "выбор рамкой". При активации макроса переключится режим на "выбор движением курсора", при повторном нажатии на "выбор рамкой" и т.д. В текстовик записывается текущий режим либо 0 (выбор рамкой) либо 1 (выбор движением курсора)

Возвращаюсь снова к теме переключения режимов выбора объектов, потому как сам часто пользуюсь этим. Хочу создать макрос который нажатием одной и той же кнопкой переключал бы режим на противоположный. Но проблема состоит в том, что я не знаю как узнать какой режим работает в данный момент. Вариант с текстовиком интересен, хотя я лично в startup-макрос заведомо заношу выбор отдельных элементов и это могу использовать. Но бывают моменты, когда удобнее воспользоваться переключением на боковой панели и таким образом можно потерять актуальный режим. Поэтому, считаю лучшим вариантом опрос режима системой и выдача результат в булеву переменную.

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

Макрос для сортировки инструмента:

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

//получение списка инструмента
ENTITY LIST $tools = folder('tool')

//Список всех типов инструмента
STRING LIST $Ttypes = {'end_mill', 'ball_nosed', 'tip_radiused', 'taper_spherical', 'taper_tipped', 'drill', 'tipped_disc', 'off_centre_tip_rad', 'tap', 'thread_mill', 'barrel', 'dovetail', 'form', 'routing'}

//сортировка списка инструмента
FOREACH $t IN $Ttypes {
  STRING $expr = "Type == '"+ $t +"'"
  ENTITY LIST $tools_of_type = filter(tools,expr)

//сортировка инструмента в проекте
FOREACH tt IN tools_of_type {
STRING $Folder_name = dirname(pathname($tt))
STRING Cmd='EDIT FOLDER "'+$Folder_name+'" INSERT "'+pathname($tt)+'" Last'
DoCommand $Cmd
}
}

 

Описание:

Создаётся список текущего инструмента и сортируется через список всех типов инструмента (список создан вручную, что ускоряет макрос и сортирует всегда в одинаковом порядке). Если инструмент содержится в папках, то сортировка происходит в каждой папке.

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

Дополнил предыдущий макрос.

Сделал сортировку по диаметру и типу инструмента

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

//получение списка инструмента
ENTITY LIST $tools = folder('tool')

//получение списка диаметров инструмента
Real LIST $TDia = extract($tools,'Diameter')
//список диаметров инструмента без повторов
Real duplicate = remove_duplicates(TDia)

//сортировка списка диаметров инструмента
Real LIST $TDiaS = {}
FOREACH tl IN reverse(sort($TDia)) {
  Real I=add_last($TDiaS,$tl)
}

//Список всех типов инструмента
STRING LIST $Ttypes = {'end_mill', 'ball_nosed', 'tip_radiused', 'taper_spherical', 'taper_tipped', 'drill', 'tipped_disc', 'off_centre_tip_rad', 'tap', 'thread_mill', 'barrel', 'dovetail', 'form', 'routing'}

//сортировка списка инструмента по диаметру 
ENTITY LIST $tools_of_diam = {}
FOREACH $t IN $TDiaS {
  STRING $expr = "Diameter == '"+ $t +"'"
  $tools_of_diam = $tools_of_diam + filter(tools,expr)
}

//сортировка списка инструмента по типу
ENTITY LIST $tools_of_type = {}
FOREACH $t IN $Ttypes {
  STRING $expr = "Type == '"+ $t +"'"
  $tools_of_type = $tools_of_type + filter(tools_of_diam,expr)
}

//сортировка инструмента в проекте
FOREACH tt IN tools_of_type {
STRING $Folder_name = dirname(pathname($tt))
STRING Cmd='EDIT FOLDER "'+$Folder_name+'" INSERT "'+pathname($tt)+'" Last'
DoCommand $Cmd
}

 

 

Ссылка на сообщение
Поделиться на других сайтах
  • 3 недели спустя...
03.12.2019 в 13:49, Konstantin_VP сказал:

Добрый день. Хотел бы узнать как удалять элементы без перемещения в корзину?

Отвечу на свой вопрос.

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



PURGE Featureset ; YES //удаление без перемещения в корзину

 

В PowerMill это работает через зажатие кнопки Shift при удалении элементов.

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

image.png

 

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

Привет всем.

Милл 2019

Подскажите пожалуйста. Нужно две кнопки, одна включает уведомления DIALOGS MESSAGE ON , другая выключает DIALOGS MESSAGE OFF.

Делаю два макроса, вешаю их на кнопки. Не работает.

Запускаю из командной строки,-работает. Из макроса,-нет

С листа материала выходит куча деталей, приходится вручную править как и порядок обработки, так и точки врезания. Задалбывает постоянно ОКать по месседж боксу. Нужен переключатель который включает/выключает сообщения милла на время ручной коррекции.

Как можно победить сие горе?

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

Нужно две кнопки, одна включает уведомления DIALOGS MESSAGE ON , другая выключает DIALOGS MESSAGE OFF.

Могу предложить вариант с VBS-скриптом

 

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

Public PowerMill
'-----------------------------------------------------------------------------------
'|            Main
'-----------------------------------------------------------------------------------

Set PowerMill = GetObject(, "PMILL.Document")

Dim RetVal

Execute "DIALOGS MESSAGE OFF"

'-----------------------------------------------------------------------------------
'|            Functions
'-----------------------------------------------------------------------------------

Sub Execute(Command)
   PowerMill.DoCommand Command
End Sub

 

 

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

Всем привет! У меня схожая с Wazilin проблема. Траектория - " По профилю 2D кривой". При выполнении макроса в параметрах траектории не хочет вставлять выбранный мной шаблон. При выполнении выдает ошибку, что не может вычислить имя шаблона.
STRING PatternName = ''
$PatternName = INPUT ENTITY PATTERN "Выберите рабочий шаблон:."
Activate Pattern $PatternName
IMPORT TEMPLATE ENTITY TOOLPATH TMPLTSELECTORGUI "Curve-Machining/2D-Curve-Profile.003.ptf"
EDIT TPPAGE SWCurveProfile
EDIT PAR 'Pattern' $PatternName

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

Всем привет! У меня схожая с Wazilin проблема. Траектория - " По профилю 2D кривой". При выполнении макроса в параметрах траектории не хочет вставлять выбранный мной шаблон. При выполнении выдает ошибку, что не может вычислить имя шаблона.
STRING PatternName = ''
$PatternName = INPUT ENTITY PATTERN "Выберите рабочий шаблон:."
Activate Pattern $PatternName
IMPORT TEMPLATE ENTITY TOOLPATH TMPLTSELECTORGUI "Curve-Machining/2D-Curve-Profile.003.ptf"
EDIT TPPAGE SWCurveProfile
EDIT PAR 'Pattern' $PatternName

Попробуй

string mycmd = "EDIT PAR 'Pattern' " +" '" + $PatternName +"'"
    DoCommand $mycmd

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

Попробуй

string mycmd = "EDIT PAR 'Pattern' " +" '" + $PatternName +"'"
    DoCommand $mycmd

Огромное спасибо. Получилось! Немного изменил определение переменных string... В конечном итоге макрос такой:

DEACTIVATE PATTERN
STRING PatternName = INPUT ENTITY PATTERN "Выберите рабочий шаблон:."
Activate Pattern $PatternName
IMPORT TEMPLATE ENTITY TOOLPATH TMPLTSELECTORGUI "Curve-Machining/2D-Curve-Profile.003.ptf"
EDIT TPPAGE SWCurveProfile
string mycmd = "EDIT PAR 'Pattern' " +" '" + $PatternName +"'"
DoCommand $mycmd

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

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

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

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

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

  Разрешено не более 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
      а ведь все работало...
×
×
  • Создать...