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

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

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




  • Сообщения

    • gudstartup
    • mactepnew
      Вот я тоже так думал, пока не столкнулся с обратным) Как еще столкнусь, пришлю скриншот. Хаос еще в том, что порядок в дереве построения весьма условный. операция, которая стоит перед групой, имеет бОльший timestamp(пардон, не знаю как это в переводе), чем эта группа, и выполняется позже. При этом все операции в группе имеют timestamp на пару сотен меньше и выполняются раньше, чем две группы, стоящие перед ней. Логика?  Если в эскизе все элементы определены, то можно поставить еще один размер (хочешь переопределить эскиз - да пожалста!), изменить его - и NX самостоятельно выберет, какой размер или ограничение отпустить и весь эскиз летит к чертям. Это ли не хаос?   Назовете хоть один CAD, которым можно пользоваться так? Любой из встреченных мной имеет много неочевидных нюансов, которые конечно не проявляются при выполнении университетского или базового курса. В Creo я на протяжении 5 лет находил всё новые фишки, которые не прописаны в документации. Огромная благодарность Ruslan за пояснения тонкостей. Даже Компас и Solidworks, которые считаются самыми дружественными, оказалось непросто обуздать, когда проходил собеседования и делал тестовые. А ведь университетский курс знал на отлично!   Возвращаясь к NX - вот сегодняшний пример. Утром деталь была оранжевая, единая. Изменил пару уклонов и толщин, стала желтая с элементами оранжевого и частично твердотельной, частично листовой. Я даже не знаю, как сформулировать вопрос в поддержку. 
    • Mikhail_Podgornyj
      Добрый день, кто может поделиться SKF Bearing V1.6 (ANSYS App)? Заранее благодарен!
    • kkk
      Короче, как сделать автоматом не нашел. Раскрасил нужные грани нужными цветами. Затем на вкладке с цветом модели можно выбирать нужный цвет, тогда в модели выбираются грани, покрашенные этим цветом. Можно еще сохранить выбор этих граней, но смысла не вижу, т.к. все легко выбирается по цвету. Затем либо в инструменте Измерить смотрим площадь и как-то ее используем, либо можно макросом (что выкладывал Kir95 ) внести площадь в свойства (на вкладку Конфигурации). Можно еще внести выбранные грани в датчики, но как использовать их в свойствах не нашел.    Макрос прикрепляю.     Площадь выбранных граней в свойства.swp
    • IgnatvKudrin
      Для нашего производства требуются постоянно инструментальные пружины для штампов. Сейчас заказы обрабатываются довольно долго - до 2-х месяцев. А у нас сроки на штампы 1-2 месяца с испытанием, доработкой и т.п. Хотелось бы найти поставщика, у которого уже есть склад с данными пружинами или кто может доставить за 1 месяц.   Пружины стандартные по ISO, но на всякий случай приложил каталог. Вот список пружин, которые нужны очень срочно:   LR 32 x 44 - 1 шт. LR 25 x 51 - 2 шт. LB 63 x 89 - 7 шт. LB 32 x 102 - 10 шт. LB 32 x 89 - 20 шт. LB 32 x 76 - 12 шт. LB 32 x 51 - 6 шт. LB 25 x 127 - 9 шт.   Готов выслушать все предложения. Возможно даже есть те, кто сможет изготовить подобные пружины с такими же параметрами. 20231101.pdf
    • bubblyk
      Знатоки форума, подскажите, как смоделировать простую (на первый взгляд) задачу термомеханики в упругой постановке.   Есть брусок правильный формы ака кирпич, в котором генерируется НЕРАВНОМЕРНОЕ удельное тепловыделение (HGEN). Задняя и передняя поверхности конвективно охлаждаются с известными (но различными) коэффициентами теплоотдачи и температурами жидкости/газа. Свойства кирпича (теплофизика + механика) принимаются зависящими от температуры. Постановка - стационарная Собственно вопрос : как грамотно смоделировать температурное поле в кирпиче с учетом температурного расширения?   Исходный код приложил.     Надеюсь на коллективный разум и опыт! EPTH2D.mac p.s.   Если есть опыт решения этой задачи в Ansys WB, тоже можно сюда приложить командные вставки.
    • OutXL
      Это было давно использовал NC-Link  и данную инструкцию. The Maho.docx
    • Mikhail_Podgornyj
      Добрый день, кто может поделиться SKF Bearing V1.6 (ANSYS App)? Заранее благодарен!
    • alexqwq10
      В данных корпусах ничего лишнего быть не должно. Максимум шпильки заземления, в количестве предусмотренном для конкретного корпуса. Рассматривал очень много подобных корпусов разных производителей и данная проблема актуальна для подавляющего большинства.
    • MFS
      Коллеги, приветствую, нужно штамповать на горячую из алюминиевого сплава (АК6 или около того) заготовки размером 280*180*12. Подскажите, пожалуйста, параметры пресса для такой заготовки - размеры, усилия. А есл дадите пример такой марки и модели, более менее подходящей для этой работы (нашего или импортного), то будет и еще лучше. Заранее спасибо!
×
×
  • Создать...