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

Макросы в Power Mill


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

1 час назад, syncomp сказал:

Другими словами мне нужно в команде открытия файла заменить путь и имя файла своей переменной, рассчитанной заранее.

Откуда должен взяться путь и название файла?

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


1 час назад, Konstantin_VP сказал:

Откуда должен взяться путь и название файла?

В принципе откуда угодно! Из пути проекта, модели...

Задача такая. Все мои проекты, не Повермилла, а по работе состоят из строгой структуры. Например,

"Корневая папка"

Корпус№123.00.04

Подпапки

NC

Исходники

Фрез (в этой папке находятся файлы)

Заготовка.тхт

Общее время.тхт

----------------------

Я хочу написать макрос, чтобы после импорта модели и установки СК , рассчитался размер заготовки для модели и записался в файл Заготовка.тхт , в папку Фрез этого проекта(Кропус№123...)

В другом проекте Например,Корпус №98765.00.56.001 путь файла Заготовка.тхт будет другим. Макрос и должен вычислить путь, у меня по модели, отсекая в пути все что до "Фрез\" и добавляя Заготовка .тхт

Этот путь в виде переменной подставляю в команду открытия файла и записываю данные. В макросе же у меня записан постоянный путь для файла -"D:\Заготовка.тхт". Оттуда и беру данные.Не совсем удобно , согласитесь...

Вот сам макрос

//***** Вычисление пути ****
STRING ModelPath = folder('Model')[0].Path
 INT Pos = Position($ModelPath,"Фрез\")
$ModelPath=substring($ModelPath,0,$pos+5)
//Message info ModelPath

//**********  Запись в файл размера заготовки ***********
string file_name=ModelPath+"Заготовка.txt"
Message info file_name

//здесь вставляем путь файла
FILE OPEN "D:\Заготовка.txt/" FOR APPEND AS Razmer
FILE WRITE $file_name to Razmer
FILE CLOSE Razmer

 

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

Я хочу написать макрос, чтобы после импорта модели и установки СК , рассчитался размер заготовки для модели и записался в файл Заготовка.тхт , в папку Фрез этого проекта(Кропус№123...)

такой макрос самому несложно собрать как конструктор из имеющихся вариантов в этой теме

вот доработал свой вариант :

STRING Dirbase = project_pathname(0)
CD $Dirbase
MKDIR "Фрез"
CD Фрез

FILE OPEN "Заготовка.txt" FOR WRITE AS Zagotovka 

// Считаем длину заготовки по X,Y и Z
REAL DlinaX=Block.Limits.XMax-Block.Limits.XMin
REAL DlinaY=Block.Limits.YMax-Block.Limits.YMin
REAL DlinaZ=Block.Limits.ZMax-Block.Limits.ZMin

// Добавляем имя оси и знак равенства
STRING RezX=" X=" + $DlinaX
STRING RezY=" Y=" + $DlinaY
STRING RezZ=" Z=" + $DlinaZ

// Записываем значения трёх переменных
FILE WRITE $RezX TO Zagotovka
FILE WRITE $RezY TO Zagotovka
FILE WRITE $RezZ TO Zagotovka

// Закрываем файл с идентификатором Zagotovka 
FILE CLOSE Zagotovka

только проект сначала должен быть сохранён

(но такой макрос у Вас уже есть, как я понимаю)

ну и заготовка тоже должна быть вычислена ДО этого макроса

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

такой макрос самому несложно собрать как конструктор из имеющихся вариантов в этой теме

вот доработал свой вариант :


STRING Dirbase = project_pathname(0)
CD $Dirbase
MKDIR "Фрез"
CD Фрез

FILE OPEN "Заготовка.txt" FOR WRITE AS Zagotovka 

// Считаем длину заготовки по X,Y и Z
REAL DlinaX=Block.Limits.XMax-Block.Limits.XMin
REAL DlinaY=Block.Limits.YMax-Block.Limits.YMin
REAL DlinaZ=Block.Limits.ZMax-Block.Limits.ZMin

// Добавляем имя оси и знак равенства
STRING RezX=" X=" + $DlinaX
STRING RezY=" Y=" + $DlinaY
STRING RezZ=" Z=" + $DlinaZ

// Записываем значения трёх переменных
FILE WRITE $RezX TO Zagotovka
FILE WRITE $RezY TO Zagotovka
FILE WRITE $RezZ TO Zagotovka

// Закрываем файл с идентификатором Zagotovka 
FILE CLOSE Zagotovka

 

Вопрос не стоит в том, чтобы в команду WRITE записать переменную. Вопрос в том как в команду FILE OPEN вместо "D:\Заготовка.txt" поставить переменную с путем файла. $file_name, например. Типа

FILE OPEN $file_name .Или синтаксис команды FILE OPEN это не позволяет?Нужен конкретный путь, заключенный в кавычки?

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

Или синтаксис команды FILE OPEN это не позволяет?Нужен конкретный путь, заключенный в кавычки?

а какая разница ? макрос то работает

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

Вопрос не стоит в том, чтобы в команду WRITE записать переменную. Вопрос в том как в команду FILE OPEN вместо "D:\Заготовка.txt" поставить переменную с путем файла. $file_name, например. Типа

FILE OPEN $file_name .Или синтаксис команды FILE OPEN это не позволяет?Нужен конкретный путь, заключенный в кавычки?

 

Все, увидел как это делать! DOS-команды CD, MRDIR используются! Большое спасибо

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

Все, увидел как это делать! DOS-команды CD, MRDIR используются!

ну как бы да

7 минут назад, syncomp сказал:

Вопрос в том как в команду FILE OPEN вместо "D:\Заготовка.txt" поставить переменную с путем файла. $file_name, например.

что-то вроде

STRING Dirbase = project_pathname(0)
MKDIR "$Dirbase/Фрез"

FILE OPEN "$Dirbase/Фрез/Заготовка.txt" FOR WRITE AS Zagotovka 

только синтаксис нужно правильный прописать - в таком виде оно не работает

может кто поможет - не хочу сейчас заморачиваться, если вопрос решён слегка по другому

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

ну как бы да

что-то вроде


STRING Dirbase = project_pathname(0)
MKDIR "$Dirbase/Фрез"

FILE OPEN "$Dirbase/Фрез/Заготовка.txt" FOR WRITE AS Zagotovka 

только синтаксис нужно правильный прописать - в таком виде оно не работает

может кто поможет - не хочу сейчас заморачиваться, если вопрос решён слегка по другому

Я уже вижу как сделать Главное установить базовую директорию. В моем макросе переменная ModelPath  и открываем файл "Заготовка.тхт". Как отработаю макрос , выложу....

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

В моем макросе переменная ModelPath  и открываем файл "Заготовка.тхт".

в твоём макросе нет строки на создание папки Фрез

ты сразу пишешь "  INT Pos = Position($ModelPath,"Фрез\") "

а нужно перед этим или

CD $Dirbase
MKDIR "Фрез"

или исправить вот это:

MKDIR "$Dirbase/Фрез"

ну и задать конечно переменную $Dirbase перед этим

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

Доброго времени! Подскажите можно ли макросом удалить из границы внутренние контуры, ну или чтоб остался только наружный.

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

Доброго времени! Подскажите можно ли макросом удалить из границы внутренние контуры, ну или чтоб остался только наружный.

Можно. Но смысл. Выделяешь любой контур границы, хоть внутренний, хоть внешний и копируешь как выбранный

В 07.10.2017 в 17:15, eksodus сказал:

в твоём макросе нет строки на создание папки Фрез

ты сразу пишешь "  INT Pos = Position($ModelPath,"Фрез\") "

а нужно перед этим или

Никак не пойму зачем создавать папку? Тем более Фрез. Мне достаточно открыть папку Фрез проекта и в нем создать или открыть  файл Заготовка.

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

STRING Dirbase = project_pathname(0)
MKDIR "$Dirbase/Фрез"

FILE OPEN "$Dirbase/Фрез/Заготовка.txt" FOR WRITE AS Zagotovka 

только синтаксис нужно правильный прописать - в таком виде оно не работает

может кто поможет - не хочу сейчас заморачиваться, если вопрос решён слегка по другому

Вот как раз это я и хочу узнать! Точный синтаксис  этой команды

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

Никак не пойму зачем создавать папку?

если сохранять файл в несуществующую папку - макрос выдаст ошибку

15 часов назад, syncomp сказал:

Мне достаточно открыть папку Фрез проекта и в нем создать или открыть  файл Заготовка.

Вы себе противоречите

ранее написано было так:

В 07.10.2017 в 16:12, syncomp сказал:

Я хочу написать макрос, чтобы после импорта модели и установки СК , рассчитался размер заготовки для модели и записался в файл Заготовка.тхт , в папку Фрез этого проекта(Кропус№123...)

сразу после создания проекта папка "Фрез" в нём НЕ существует!

значит, если вам нужна эта папка - её нужно создать, что я и предложил в макросе

если же Вы хочете создавать эту папку вручную, или другим способом - то Вы этого не указали

я всего лишь в точности повторил Вашу просьбу, которая оказалась, получается, не совсем точно была выражена

13 часа назад, syncomp сказал:

Вот как раз это я и хочу узнать! Точный синтаксис  этой команды

и чем не устраивает вариант, что я давал выше ?

 

в любом случае - посмотрите вторую страницу этой темы

там @Konstantin_VP выкладывал несколько макросов

синтаксис можно взять оттуда

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

Можно. Но смысл. Выделяешь любой контур границы, хоть внутренний, хоть внешний и копируешь как выбранный

Так не работает, вернее работает для одного проекта, в макрос считываются координаты контура через PICK, здесь уже обсуждалось что этот вариант не из лучших... Может как то можно через редактор кривых-упорядочить сегменты, как вот только удалить все сегменты кроме "0"?

Ссылка на сообщение
Поделиться на других сайтах
В 10.10.2017 в 10:53, eksodus сказал:

если сохранять файл в несуществующую папку - макрос выдаст ошибку

В 09.10.2017 в 19:49, syncomp сказал:

Мне достаточно открыть папку Фрез проекта и в нем создать или открыть  файл Заготовка.

Вы неправильно поняли структуру  папок моих проектов, поэтому думаю, вся замороченность. Ну да и ладно. Я наконец написал макрос, который полностью удовлетворяет всем моим задачам и теперь я его активно использую . Попутно я полностью закончил макрос расчета заготовки, который округляет ее до десятков миллиметров задает припуск 10мм на сторону. Он полностью оперирует числами, а не переводит их в строки для округления... Оказывается существует функция округления round и никто из знатоков мне не ответил, что такая есть. Короче, вот макрос расчета  заготовки и записью его в файл "Заготовка"

//***** Вычисление  размеров заготовки *****
FORM BLOCK
EDIT BLOCK ALL UNLOCK
EDIT BLOCK RESET
BLOCK ACCEPT

//Вычисление размеров
int dlinaX=round(Block.Limits.XMax-Block.Limits.XMin,0)
int  dlinaY=round(Block.Limits.YMax-Block.Limits.YMin,0)
int  dlinaZ=round(Block.Limits.ZMax-Block.Limits.ZMin,0)
//-----------------------------------------------------------------------
//**** округление размера по X до 10 *****
int ostX=dlinaX % 10
int delX=dlinaX / 10
$dlinaX= delX*10
IF ostX>=5 {
$dlinaX=dlinaX+10
}
//**** округление размера по Y до 10 *****
int ostY=dlinaY % 10
int delY=dlinaY / 10
$dlinaY= delY*10
IF ostY>=5 {
$dlinaY=dlinaY+10
}
$dlinaX=dlinaX+20
$dlinaY=dlinaY+20
string Mess=dlinaX+" x "+dlinaY+" x "+"("+dlinaZ+")"
IF dlinaX<dlinaY {
$Mess=dlinaY+" x "+dlinaX+" x "+"("+dlinaZ+")"
}
Message info Mess

 

//***** Вычисление пути ****
STRING ModelPath = folder('Model')[0].Path
STRING Model_name=folder('Model')[0].Name
 INT Pos = Position($ModelPath,"Фрез\")
$ModelPath=substring($ModelPath,0,$pos+5)

//**********  Запись в файл размера заготовки ***********

$Mess= Model_name+" - "+Mess
STRING Dirbase=ModelPath
CD $Dirbase
FILE OPEN "Заготовка.txt" FOR APPEND AS Razmer
FILE WRITE $Mess To Razmer
FILE CLOSE Razmer

 

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

Вы неправильно поняли структуру  папок моих проектов,

та понятно, кто же ещё виноват

не доучился я на экстрасенса )

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

та понятно, кто же ещё виноват

Я не собираюсь никого обвинять. Но представленная мной структура моих рабочих проектов, как не понять?

 

В 07.10.2017 в 16:12, syncomp сказал:

Корпус№123.00.04

Подпапки

NC

Исходники

Фрез (в этой папке находятся файлы)

Заготовка.тхт

Общее время.тхт

----------------------

Единственно не указал, что в папке Фрез также находятся проекты ПоверМилла. Ну да ладно. В любом случае этот форум мне сильно помог и помогает. И всем спасибо за помощь. Час назад написал макрос проверки наличия инструмента .... Может кому пригодится По этому принципу я думаю можно использовать проверку наличия элементов в других папках.

 

STRING path = pathname('tool', 'D 12')
IF path=="" {
TOOLDB RESULTS_LIST SELECT 3 NEW
TOOLDB RESULTS_LIST CREATE  3 0
}

 

Я сам программист. И Pascal знаю и С++. Принципы макропрограммирования в РМ немного отличаются от классических... Мне не очень нравится подход к циклу FOREACH, активация элемента и уж потом действия над ним. Тем более создание промежуточных элементов , каких-либо действий, а потом удаление их. Как в примере с суммой статистики траекторий. Мне не понятно зачем создавать NC-файл, записать в нем инфу, а потом удалить?

Ну да ладно.

Сейчас я задумал написать макрос который бы создавал NC-файлы, которые вставляли бы траектории по инструменту. Например, я использую 3 инструмента: D12(концевая,D10R(сфера) и сверло ф8 D12 выполняю 3 обработки(траектории).D10R 2траектории, сверло ф8 2 траектории. Таким образом у меня должны быть 3 NC-файла, каждый содержит все траектории одного инструмента. Смены инструмента у нас нет...

Может есть идеи у кого?

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

Еще один немаловажный для меня вопрос. Открытие  проекта сопровождается открытием окна в виде дерева. На мой взгляд это окно неудобно. А вот окно Импорта модели - самое то. Можно как- заменить эти окна?Чтобы при выполнении команды открытия проекта для его выбора открывалось окно вида импорта модели?

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

Сейчас я задумал написать макрос который бы создавал NC-файлы, которые вставляли бы траектории по инструменту. Например, я использую 3 инструмента: D12(концевая,D10R(сфера) и сверло ф8 D12 выполняю 3 обработки(траектории).D10R 2траектории, сверло ф8 2 траектории. Таким образом у меня должны быть 3 NC-файла, каждый содержит все траектории одного инструмента. Смены инструмента у нас нет...

Может есть идеи у кого?

entity list toolp = sort(folder("Toolpath"),'Tool.Name')
string prevtool = ""
string ncname = ""
foreach tp in toolp {

if prevtool != $tp.tool.name {
  $ncname = $tp.tool.name +"_"+ $tp.strategy
  if entity_exists('toolpath',$ncname)  {
    $ncname = new_entity_name('toolpath',string($ncname))
  }
create ncprogram $ncname
$prevtool = tp.tool.name
}
edit ncprogram $ncname insert toolpath $tp.name last
}

Ссылка на сообщение
Поделиться на других сайтах
  • 3 недели спустя...
В 16.10.2017 в 01:40, syncomp сказал:

ще один немаловажный для меня вопрос. Открытие  проекта сопровождается открытием окна в виде дерева. На мой взгляд это окно неудобно. А вот окно Импорта модели - самое то. Можно как- заменить эти окна?Чтобы при выполнении команды открытия проекта для его выбора открывалось окно вида импорта модели?

Похоже никто не знает как это сделать...

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

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

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

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

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

  Разрешено не более 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. Подскажите, пожалуйста, параметры пресса для такой заготовки - размеры, усилия. А есл дадите пример такой марки и модели, более менее подходящей для этой работы (нашего или импортного), то будет и еще лучше. Заранее спасибо!
×
×
  • Создать...