Jump to content

Макросы в Power Mill


eksodus

Recommended Posts

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

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

 

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

 

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

)))

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

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

Link to post
Share on other sites


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

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

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

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

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

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

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

 

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

  • Нравится 1
Link to post
Share on other sites
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 (выбор движением курсора)

  • Нравится 2
Link to post
Share on other sites

@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 (выбор движением курсора)

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

 

Link to post
Share on other sites
  • 1 month later...
scorpion1007

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

Edited by scorpion1007
Link to post
Share on other sites
mannul
9 часов назад, scorpion1007 сказал:

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

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

 

 

Link to post
Share on other sites
  • 2 weeks later...
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)

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

 

Link to post
Share on other sites
Wazilin
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

 

Link to post
Share on other sites
eksodus
Posted (edited)
08.04.2022 в 14:33, Wazilin сказал:

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

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

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

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

CREATE PATTERN ;
EDIT PATTERN  ; CURVEEDITOR START

 

 

Edited by eksodus
Link to post
Share on other sites
scorpion1007
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

Link to post
Share on other sites
syncomp
14.02.2022 в 09:20, Konstantin_VP сказал:

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

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

Link to post
Share on other sites
  • 2 months later...
Konstantin_VP

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

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

//получение списка инструмента
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
}
}

 

Описание:

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

  • Нравится 1
Link to post
Share on other sites
Konstantin_VP

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

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

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

//получение списка инструмента
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
}

 

 

  • Нравится 2
Link to post
Share on other sites
  • 3 weeks later...
Konstantin_VP
03.12.2019 в 13:49, Konstantin_VP сказал:

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

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

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



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

 

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

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

image.png

 

Edited by Konstantin_VP
добавил screenshot
  • Нравится 1
Link to post
Share on other sites
  • 1 month later...
scorpion1007

Привет всем.

Милл 2019

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

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

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

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

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

Link to post
Share on other sites
Konstantin_VP
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

 

 

Link to post
Share on other sites
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

Link to post
Share on other sites
scorpion1007
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

Link to post
Share on other sites
syncomp
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

  • Нравится 1
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.




  • Сообщения

    • Snake 60
      @AKLion эта функция появляется, когда в поле ввода значения размера первым символом ставишь знак равно "="
    • заМКАДыш
      Всем добрый день! Подскажите, пожалуйста, имеющуюся в свободном доступе литературу по оформлению чертежей по стандартам ISO, ANSI и DIN. Заранее благодарю.
    • статист
      А если учесть, что метод отклика - это максимальный отлик маятника на данной частоте, то берем производную по маятнику на определенной частоте получаем то что хотели. Я так понял есть хитровывернутые преобразования для разных хитровывернутых кодов, но самый простой способ этот.   0207.pdf
    • gudstartup
      @Евгений05 Вот почитайте но это для MMC100.2 Какой у вас не знаю.   Инструкция по вводу в эксплуатацию.pdf
    • Krusty
      ....\plugins\configuration_########### \ customer.properties    release_status_list.YouFuckingStatus.ICON=images/prerelease_16.png release_statuses.YouFuckingStatus.ICON=images/prerelease_16.png   But you have to specify the “Display Name” of the status and not the actual system name in the customer.properties file.
    • Jesse
      мужик, ты честно сказать хорошо воздух гоняешь - из тебя бы вышел отличный современный политикан ну серьеёзно .. вот как всё это что ты пишешь , вывод спектров ответа и всё такое, поможет понять можно ли получать спектры ускорений из спектров перемещений по формуле   азы мы итак знаем)
    • AKLion
      @Андрей67 Если до сих пор не разобрался то могу объяснить всё в скайпе. Там есть тонкости. грубо так, создаёшь контур по центру ремня, измеряешь длину пути с помощи инструмента длинна пути и делаешь её управляемой, теперь ты можешь после передвижения привода узнать длину пути, так же можно сделать наоборот, задать длину пути и искать положение привода... заработался и совсем из головы выскочило подскажите как включить эту функцию, как её задать то?
    • bnickl
    • warlord
      Станок новый, первый запуск. Заходил на первую страницу, ставил галочку напротив Х-а, ничего не изменилось. таже ошибка. В модальном списке "висит"  G69, однако при запуске этой команды выскакивает таже ошибка как и при применении G68.
    • mrvcf1
      спасибо, М28 проверю с щупом поменяет значение или нет. М71 тоже подходит - транспортера нет.
×
×
  • Create New...