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

Макросы в Power Mill


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

4 часа назад, oat сказал:

День добрый. Что-то не работает у меня Ваш макрос. 

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

 Я думаю, что это потому, что ваша вторая траектория отлична от условия в макросе:

Цитата

(tp.Strategy=='pattern' or tp.Strategy=='curve_profile' OR Strategy=='curve_area_clear' OR Strategy=='chamfer')

 

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


а....да для меня эта надпись тёмный лес))) моя вторая траектория это 3-д смещение по шаблону.

а из переписки я не понял, что есть ограничения

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

День добрый. Что-то не работает у меня Ваш макрос. 

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

 

А какие там у вас траектории? По значкам не пойму

Я просто задал всего несколько стратегий, использующих шаблон. По шаблону, 2д траектории

Если у вас другая, попробуйте добавить ваш тип в эту строку(кстати да, в ней была небольшая ошибка):

if ($tp.Strategy=='pattern' or $tp.Strategy=='curve_profile' OR $tp.Strategy=='curve_area_clear' OR $tp.Strategy=='chamfer') {

 

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

И шаблон не должен называться temp, это временное имя

 

if ($tp.Strategy=='pattern' or $tp.Strategy=='curve_profile' OR $tp.Strategy=='curve_area_clear' OR $tp.Strategy=='chamfer' OR $tp.Strategy=='offset_3d')) {

 

Добавил траекторию 3д смещение. Попробуйте. Строку выше замените в макросе

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

Не все помню траектории с шаблоном, если что, добавляйте своих ещё. Посмотреть какая стратегия  можно как на картинке. Через OR (или) добавляйте свою

2024-03-25_211717.jpg

 

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

Добрый день коллеги! Нашёл макрос для сохранения инструмента в dxf:

 

FUNCTION Main ( STRING $Selected_Tool ) {
	DEACTIVATE WORKPLANE
	ACTIVATE TOOL $Selected_Tool
	REAL $tol_min = 0.0001
	REAL $tol_max = 0.001
	$powermill.Export.TriangleTolerance = $tol_min
	$Powermill.CurveEditor.SpunProfile.Tolerance = $tol_max
	STRING path = project_pathname(0)
	STRING $dirpath = project_pathname(0) + "/ExportTool"
	MKDIR $dirpath
	STRING $path_export = $dirpath + "/" + $Tool.Name + ".dxf"
	
	STRING pat = 
	CREATE PATTERN $pat
	CALL Exec_TIP($pat, $path, "TIP", 1.0, 1.0, 0.0, $tol_min, $tol_max)
	STRING $path_shank = $dirpath + "\shank.dgk"
	EXPORT TOOLSHANK ; $path_shank YES
	IF file_exists($path_shank) {
		CALL Exec_HOLDER($pat, $path_shank, 0.0, 1.0, 0.0, $Tool.Length)
	}
	STRING $path_holder = $dirpath + "\holder.dgk"
	EXPORT TOOLHOLDER ; $path_holder YES
	IF file_exists($path_holder) {
		CALL Exec_HOLDER($pat, $path_holder, 1.0, 0.0, 0.0, $Tool.Overhang)
	}
	KEEP PATTERN $pat $path_export YES
	PURGE PATTERN $pat YES
	TEXTINFO ACCEPT
}

FUNCTION Exec_TIP(STRING pat, STRING path, STRING name, REAL R, REAL G, REAL B, REAL tol_min, REAL tol_max) {
	STRING mName = $path + "\" + $name + '.stl'
	STRING $Cmd = "EDIT TOOL ; EXPORT_STL " + $name + " '" + $mName + "'"
	DOCOMMAND $Cmd
	IMPORT MODEL $mName
	CREATE PATTERN $name
	EDIT MODEL ALL DESELECT ALL
	EDIT MODEL $name SELECT ALL
	IF number_selected(entity('model',$name)) > 0 {
		EDIT PATTERN $name CURVEEDITOR NOGUI START
		CURVEEDITOR MODE SPUN_PROFILE
		CURVEEDITOR SPUN_PROFILE AXIS Z
		CURVEEDITOR SPUN_PROFILE ORIGIN X "0"
		CURVEEDITOR SPUN_PROFILE ORIGIN Y "0"
		CURVEEDITOR SPUN_PROFILE ORIGIN Z "0"
		CURVEEDITOR SPUN_PROFILE CREATE
		CURVEEDITOR SELECT ALL
		CURVEEDITOR COLOUR SELECTED $R $G $B
		CURVEEDITOR MODE FIT_POLYGONISE
		CURVEEDITOR FIT POLYGONISE $tol_min
		CURVEEDITOR MODE FIT_ARC
		CURVEEDITOR FIT ARC '$tol_max*10'
		CURVEEDITOR MODE ROTATE
		STATUS EDITING_PLANE YZ
		MODE TRANSFORM ROTATE ANGLE "-90"
		CURVEEDITOR FINISH ACCEPT
	}
	PURGE MODEL $name YES
	DELETE FILE $mName
	ACTIVATE PATTERN $pat
	EDIT PATTERN $pat INSERT Pattern $name
	EDIT PATTERN $pat DESELECT ALL
	PURGE PATTERN $name YES
}

FUNCTION Exec_HOLDER(STRING pat, STRING path_holder, REAL R, REAL G, REAL B, REAL offset) {
	EDIT PATTERN $pat INSERT FILE $path_holder
	EDIT PATTERN $pat CURVEEDITOR NOGUI START
	CURVEEDITOR COLOUR SELECTED $R $G $B
	CURVEEDITOR MODE TRANSLATE
	MODE COORDINPUT COORDINATES 0 $offset 0
	CURVEEDITOR FINISH ACCEPT
	DELETE FILE $path_holder
}

Но привыполнении выдаёт ошибку:

Capture1.JPG

 

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

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

Мне надо было просто внимательно прочитать предыдущие посты:

 

This type of macro is designed to be launch via an user menu. In this case the user menu is the menu tool. In your macro directory create a file Tool.xml with the following code :

<?xml version="1.0" ?>
<menupage>
   <button command='MACRO "ExportDXF" "%s" 0' label="Export DXF"  multiple_selection="allowed" />
</menupage>
Изменено пользователем arsenev
Ссылка на сообщение
Поделиться на других сайтах
  • 2 недели спустя...

Первый свободный номер инструмента

 

int list $toolnumblist = extract(folder('TOOL'), 'Tool.Number.Value')
int $newToolNumb = 1

while member( $toolnumblist, $newToolNumb) {
    $newToolNumb = $newToolNumb + 1
}

Message Info 'Первый свободный номер инструмента - ' + $newToolNumb

 

 

Инструменты с повторяющимися номерами

 

int list $toolnumbers = extract(folder('tool'),'Number.Value')
int $i = remove_duplicates($toolnumbers)

string $op = ''

foreach $n in $toolnumbers {
    string list $names = extract(filter(folder('tool'),'this.Number.Value == "' + $n + '"'),'Name')
    if size($names) > 1 {
        $op = $op + 'Инструменты с повторяющимся номером T ' + $n + CRLF
        foreach $name in $names {
            $op = $op + $name + CRLF
        }
        $op = $op + CRLF
    }
}

message info $op

 

 

Удаление выбранного

 

Макрос, который проверяет тип объекта, а затем позволяет выбрать один и удалять выбранные части.

Я связал это с ctrl+d.

 

string list $rootTypes = {'toolpath','featureset','pattern','boundary','model'}
string list $selectedTypes = {}

foreach $rt in $rootTypes {
    if entity_exists(entity($rt,'')) {
        entity $ent = entity($rt,'')
        if number_selected($ent.RootType, $ent.Name) > 0 {
            int $i = add_last($selectedTypes,$rt)
        }
    }
}


if size($selectedTypes) <= 0 {
    return
}
int $index = -1

if size($selectedTypes) == 1 {
    $index = 0
} else {
    $index = input choice $selectedTypes 'Wich Type to remove?'
}

if $index != -1 {
    String $cmd = 'DELETE ' + $selectedTypes[$index] + ' "' + entity($selectedTypes[$index],'').Name + '" SELECTED'    
    DoCommand $cmd
}

Изменено пользователем arsenev
Ссылка на сообщение
Поделиться на других сайтах
  • 3 недели спустя...
20.05.2024 в 13:29, arsenev сказал:

Мне надо было просто внимательно прочитать предыдущие посты:

 

This type of macro is designed to be launch via an user menu. In this case the user menu is the menu tool. In your macro directory create a file Tool.xml with the following code :


<?xml version="1.0" ?>
<menupage>
   <button command='MACRO "ExportDXF" "%s" 0' label="Export DXF"  multiple_selection="allowed" />
</menupage>

Добрый день.

Есть ли возможность сделать макрос для сохранения шаблона в dxf в папку ncprograms?

И еще можно ли сделать макрос сохраняющий техкарту в pdf файл в ту же папку? 

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

Есть ли возможность сделать макрос для сохранения шаблона в dxf в папку ncprograms?

День добрый. Похоже, что за папку назначения в макросе отвечает переменная:

STRING $dirpath = project_pathname(0) + "/ExportTool"

попробуйте заменить ExportTool на ncprograms

Ссылка на сообщение
Поделиться на других сайтах
19.06.2024 в 16:03, arsenev сказал:

День добрый. Похоже, что за папку назначения в макросе отвечает переменная:


STRING $dirpath = project_pathname(0) + "/ExportTool"

попробуйте заменить ExportTool на ncprograms

Большое спасибо!!! Очень помогли. Взял необходимые строки из вашего макроса и заменил, как вы сказали, название папки, получилось, все работает!

1 минуту назад, Cefius сказал:

Большое спасибо!!! Очень помогли. Взял необходимые строки из вашего макроса и заменил, как вы сказали, название папки, получилось, все работает!

Осталось только сохранение техкарт в пдф сделать. 

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

Симуляция сразу нескольких, выбранных в проводнике траекторий во ViewMILL (тип - Вращающийся)

За образец взят макрос с форума Autodesk (подобный здесь выкладывали ранее)

Цитата

here is a macro that turn on View MIll , and as what toolpaths to simulate, and if you want to pause in between toolpaths. ( tips: you can slow down toolpath using the slider, if the simulation errors out, and wants to go to next toolpath without the previous toolpath being finished simulated,  you can press the play button to allow it to continue and finish it before next simulation.

 

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

//DEFINE BLOCK BEFORE IT SIMULATES SELECTED TOOLAPTHS
 
RESET LOCALVARS
//UNSET MACROFIX
 
UNDRAW STOCKMODEL ALL
SIMULATE VIEWMILL SUSPEND
 
FORM RIBBON TAB "Tool"
VIEW MODEL ; SHADE OFF
VIEW MODEL ; WIREFRAME ON
UNDRAW SHADEDTOOLS
SIMULATE VIEWMILL START
SIMULATE VIEWMILL SHADING RAINBOW
SIMULATE VIEWMILL SHADING TRIANGLES
EDIT PAR 'Simulation.Speed' 100
 
//STRING LIST $COUNTY = $SELECTED_TOOLPATHS
//i = size(COUNTY)
bool carryon = ""
string yesnoprompt = "Хотели бы вы, чтобы симуляция была остановлена между траекториями?"
$carryon = query $yesnoprompt
 
IF ($carryon == 0) {
FOREACH tp IN explorer_selected_entities() {
ACTIVATE TOOLPATH $tp.Name
UNDRAW TOOLPATH $tp.Name
DEACTIVATE BOUNDARY
DEACTIVATE FEATUREGROUP
PRINT $tp.Name
SIMULATE TOOLPATH ; FORM RIBBON TAB SIMULATION
SIMULATE PLAY
    }
} ELSE {
FOREACH tp IN explorer_selected_entities() {
ACTIVATE TOOLPATH $tp.Name
UNDRAW TOOLPATH $tp.Name
DEACTIVATE BOUNDARY
DEACTIVATE FEATUREGROUP
PRINT $tp.Name
SIMULATE TOOLPATH ; FORM RIBBON TAB SIMULATION
SIMULATE PLAY
DEACTIVATE Toolpath
MACRO PAUSE "TOOLPATH SIM PAUSED"  
}
}
 
PRINT = size($COUNTY)
 
 
MACRO ABORT

 

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

Всем привет. Помогите с макросом. Нужен макрос, который в папке с моделью создает папку "NC Имя модели" и в предпочтениях сохраняет туда NC-файлы

 

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

Всем привет. Помогите с макросом. Нужен макрос, который в папке с моделью создает папку "NC Имя модели" и в предпочтениях сохраняет туда NC-файлы

 

Есть такая запись в этой теме:

Bullet77
Опубликовано: 25 марта 2020
=====
Может кому пригодиться. Макрос для вывода времени обработки в формате ЧЧ:ММ:СС . Выводит данные в текстовый файл. По каждому NC-файлу отдельно + в конце суммарное время обработки.
Время обработки.zip
=====

 

Также команды для

//Предпочтения NC файлов
    PATHSELECTOR PATHLISTS LISTCHANGE OUTPUT PATHSELECTOR PATHLISTS CLEAR PATHSELECTOR PATHLISTS ADD PROJSELECTOR "{project.path}\ncprograms"
    EDIT NCPROGRAM PREFERENCES FILEMASK "{ncprogram}.h"
    EDIT NCPROGRAM PREFERENCES TAPEOPTIONS "D:\Programs\Posts\H555.pmoptz"

 

Попробуйте подредактировать под свои задачи макрос от пользователя Bullet77 и команды "для предпочтения NC файлов" 

5 часов назад, Arhgeo сказал:

Всем привет. Помогите с макросом. Нужен макрос, который в папке с моделью создает папку "NC Имя модели" и в предпочтениях сохраняет туда NC-файлы

 

Если Вы в PM новичок..., то при первоначальной настройке PM, можно настроить предпочтения NC файлов, чтобы  вот такая запись {project.path}\ncprograms\{ncprogram}.(h ,tap, cnc.....) появлялась  в поле "Файл вывода" каждый раз при создании NC файла. При записи NC файла у вас в папке с проектом автоматически создается папка "ncprograms" и туда записываются ваши УП. Может быть и не нужен Вам макрос для такой задачи

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

Пока не получается создать нужный макрос, не могу понять какой командой макроса создавать папку. Макрос нужен именно который в папке с моделью создает папку "NC Имя модели" и в предпочтениях сохраняет туда NC-файлы.

Потому что эта папка используется людьми, которые лишь умеют копировать папку на флешку.

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

Пока не получается создать нужный макрос, не могу понять какой командой макроса создавать папку. Макрос нужен именно который в папке с моделью создает папку "NC Имя модели" и в предпочтениях сохраняет туда NC-файлы.

Потому что эта папка используется людьми, которые лишь умеют копировать папку на флешку.

 

Вот пример, быстренько "наваял". Папка создается в том месте, откуда была загружена (хранилась) модель. Когда будете создавать NC-файл (ПКМ - Создать NC файл), создадутся предпочтения в соответствующих окнах параметров NC-файла

 

Function Main() {
//проверка наличия NC-файлов
IF ( folder('NCProgram')!=0 ) {
//имя проекта
STRING proj = project.name
   STRING ModelPath = folder('Model')[0].Path
   //название модели (без формата) 
   STRING ModelName = folder('model')[0].Name
   // поиск позиции $ModelName в строке $ModelPath (0-начало) 
   REAL Pos = position($ModelPath, $ModelName)
   //отображает строчку с позиции 0 до $Pos     
   //отнимаем от пути к модели имя модели
   STRING path = substring($ModelPath, 0, $Pos)
//формируем путь для перехода    
STRING dir = $path

//проверка наличия пути
if dir_exists($dir) {
//если есть - переходим
CD $dir
} else {
//если отсутствует - создаем и переходим
MKDIR $dir
CD $dir
}

PATHSELECTOR PATHLISTS LISTCHANGE OUTPUT PATHSELECTOR PATHLISTS CLEAR PATHSELECTOR PATHLISTS ADD PROJSELECTOR $dir

EDIT NCPROGRAM PREFERENCES FILEMASK "{ncprogram}.tap"

EDIT NCPROGRAM PREFERENCES TAPEOPTIONS "D:\Programs\Posts\H555.pmoptz"
}

 

 

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

В первый раз сработал, потом что-то пошло не так

[MACRO "D:/_shared/Distr/powermill_macros/новый 1.mac"\r]


Process Command : [//проверка наличия NC-файлов\n]


Process Command : [//имя проекта\n]


Process Command : [STRING proj = project.name\n]


Process Command : [   STRING ModelPath = folder('Model')[0].Path\n]


Process Command : [   //название модели (без формата) \n]


Process Command : [   STRING ModelName = folder('model')[0].Name\n]


Process Command : [   // РїРѕРёСЃРє позиции $ModelName РІ строке $ModelPath (0-начало) \n]


Process Command : [   REAL Pos = position($ModelPath, $ModelName)\n]


Process Command : [   //отображает строчку СЃ позиции 0 РґРѕ $Pos     \n]


Process Command : [   //отнимаем РѕС‚ пути Рє модели РёРјСЏ модели\n]


Process Command : [   STRING path = substring($ModelPath, 0, $Pos)\n]


Process Command : [//формируем путь для перехода    \n]


Process Command : [STRING dir = $path\n]


Process Command : [\n]


Process Command : [//проверка наличия пути\n]


Process Command : [//если есть - переходим\n]


Process Command : [CD $dir\n]


Process Command : [\n]


Process Command : [PATHSELECTOR PATHLISTS LISTCHANGE OUTPUT PATHSELECTOR PATHLISTS CLEAR PATHSELECTOR PATHLISTS ADD PROJSELECTOR $dir\n]


Process Command : [\n]


Process Command : [EDIT NCPROGRAM PREFERENCES FILEMASK "{ncprogram}.tap"\n]


Process Command : [\n]


Process Command : [EDIT NCPROGRAM PREFERENCES TAPEOPTIONS "D:\Programs\Posts\H555.pmoptz"\n]

PowerMill > .

 

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

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

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

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

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

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

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

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

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

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

    • Павел1
  • Сообщения

    • Guhl
      То есть, например, в FS0i mate D поможет только образ памяти? Или можно загрузиться с дефолтными данными?  
    • jtok
      Из моего опыта: для полипропилена напряжения от термических расширений - это не самое главное. У него маленький модуль упругости, соответственно при температурных деформациях напряжения будут малы.   И при увеличении температуры этот модуль падает:   В расчете нижней части нужно брать модуль упругости и предел прочности PP для 90 градусов и смотреть перемещения и напряжения.   Т.е. у вас мах. напряжения не должны превышать в зоне нагрева 3,25МПа (в 4 раза меньше, чем при 20град.С), а это очень мало я вам скажу: И еще - вы считаете аппарат солидами. Это неправильно, напряжения и всё остальное у вас не будут не верными.   Солидами можно считать только в том случае, когда перемещения узлов (вершин треугольничков) много меньше размера конечного элемента (ребро треугольника). Иллюстрация ниже: На рисунке красным показан размер конечного элемента в деформированном состоянии (т.е. там, где он окажется после приложения нагрузки). Синим - его первоначальное положение для незагруженной модели. Если перемещения (черным цветом) больше или близки к размеру конечного элемента (ребро треугольника), то результаты (перемещения и напряжения) сильно приблизительные. Эти перемещения должны быть как минимум раз в 10 меньше размера конечного элемента, только в этом случае солидами считать нормально.   Можно конечно включать галку "Большие перемещения", но это полумеры. Изменение размера конечного элемента тоже не особо помогает, т.к. он ограничен толщиной стенки.   Для решения этой проблемы придумали другой конечный элемент - оболочки (шеллы, Shells), об этом вам писал выше @vik_q . Перемещения этого конечного элемента могут быть много больше его размера, результаты (перемещения и напряжения) близки к экспериментальным.   PS: Вообще, первичны перемещения. Напряжения вычисляются потом, после определения перемещений, т.к. напряжения связаны с перемещением через модуль упругости. Поэтому важно получить достоверные перемещения, а остальное приложиться.
    • Viktor2004
      В новых системах чпу загрузится с дефолтными данными
    • Guhl
      Когда я отформатировал память reset+del, я получил такую картинку. В старых системах после этой комбинации системное ПО загружалось и была возможность загрузки с RS232. А в этом случае получилось бы загрузиться с RS232?  
    • ANT0N1DZE
      А может у кого есть документация на данную резьбу? Как-то искал и нигде не нашел.
    • Viktor2004
      READ (читать из PMC в USB)
    • Guhl
      READ? Может PUNCH или что там для вывода?
    • Viktor2004
      Тогда его можно самому сбросить SYSTEM ---) PMC MAINTE ----) IO -----) Там выбрать USB далее READ далее SEQENCE PROGRAM далее NEW NAME и скачать
    • tangous
      Вообще то модель представляет собой не твердое тело, а поверхность. Да. С одной стороны серое с другой коричневое. Но по другому и быть не может для поверхности.   Большое спасибо. Проверю часа через три - отпишусь обязательно.  Не совсем понятно про 45 градусов. Фреза не в состоянии быть перпендикулярной такой плоскости. Максимальный угол наклона только 60 градусов.  
    • Павел1
      Нужно макрос сохранить с кодировкой ANSI
×
×
  • Создать...