Jump to content

Макросы в Power Mill


eksodus

Recommended Posts

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

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

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

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

Цитата

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

 

Link to post
Share on other sites


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

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

Link to post
Share on other sites
scorpion1007
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д смещение. Попробуйте. Строку выше замените в макросе

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

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

2024-03-25_211717.jpg

 

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

Добрый день коллеги! Нашёл макрос для сохранения инструмента в 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

 

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

Edited by arsenev
  • Нравится 1
Link to post
Share on other sites
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>
Edited by arsenev
  • Нравится 1
Link to post
Share on other sites
  • 2 weeks later...
arsenev

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

 

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
}

Edited by arsenev
  • Нравится 2
Link to post
Share on other sites
  • 3 weeks later...
Cefius
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 файл в ту же папку? 

Link to post
Share on other sites
arsenev
2 часа назад, Cefius сказал:

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

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

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

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

  • Нравится 1
Link to post
Share on other sites
Cefius
19.06.2024 в 16:03, arsenev сказал:

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


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

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

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

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

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

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

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

Симуляция сразу нескольких, выбранных в проводнике траекторий во 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

 

Edited by arsenev
  • Нравится 1
Link to post
Share on other sites
  • 4 weeks later...
Arhgeo

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

 

Link to post
Share on other sites
Павел1
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" и туда записываются ваши УП. Может быть и не нужен Вам макрос для такой задачи

Link to post
Share on other sites
Arhgeo

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

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

Link to post
Share on other sites
Павел1
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"
}

 

 

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

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

[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 > .

 

Link to post
Share on other sites
Павел1

Нужно макрос сохранить с кодировкой ANSI

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

Спасибо большое, после небольшого исправления макрос работает. Была проблема с выбором пути сохранения Nc папки - сохранял рандомно в любое место. Заменил строчку STRING dir = $path на

STRING dir = $path + "\\NC_" + $ModelName

 ну и прописал свой постпроцессор.

Теперь макрос такой:

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)
        // отнимаем от пути к модели имя модели
        STRING path = substring($ModelPath, 0, $Pos)

        // формируем путь для перехода    
        STRING dir = $path + "\\NC_" + $ModelName

        // проверка наличия пути
        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 "C:\Users\Admin\Desktop\Houfek\постпроцессор рабочий\Fanuc Houfek.pmoptz"
    }

  • Нравится 1
Link to post
Share on other sites
Arhgeo
2 часа назад, Arhgeo сказал:

// проверка наличия NC-файлов
    if (folder('NCProgram')!=0) {

Удалил строчку, чтобы не создавать NC перед запуском макроса, иначе всё равно приходилось его потом удалять, т.к. настройки макроса не действуют на NC, созданные раньше запущенного макроса. Всё работает прекрасно. Спасибо Павел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.



  • Сообщения

    • Клиент
      Ага, и пост сварганить под другой кам. Первая мысль, какая приходит в голову- это не соответствующе расположена деталь в кам и на станке. Но, ведь, 2 другие стороны ровные, на что вы и обратили внимание. Разгадку не знаю, но, все-таки, предполагаю, что дело не в программе. Контроль rtcp происходит на станке или в кам?
    • Ветерок
      очередная фигня. Не могу вставить в заметку символы. Пишет, что нет файла gtol.sym. А такого файла действительно нету. Есть gtol97.sym. Скопировал его в достпную папку, переименовал. Путь к папке прописан. Всё равно ругается.  А недавно проблемы не было.
    • Viktor2004
      это специально для теста 5-тиосевой обработки сделано   самодельные я туда поставил
    • lem_on
      Какой конченый программист, деталь простая как лапоть, а делается через одновременную обработку. Зачем там 5 осей, непонятно.  Цикл обкатки шарика на станке то есть?  Если там все норм, то пинать программиста с особой жестокостью. 
    • ak762
      глядя на ваше видео, впечатление что проблемма в программе а не в станке, почему там такие паузы вместо движения по простому контуру давным давно что то подобное делал на 5х микроне так все было плавно если НЦ код сгенерирован правильно и фрезу не отжимало на заготовке с HRC55       Mikron_5_axis_clip_1.MOV
    • Viktor2004
      к сожалению политику определяю не я. Мне моими политиками указано не сопротивляться.
    • fantom.ul
    • Ветерок
      Разобрался с помощью Ютуба. Оказывается в этой таблице всё не так. Там это не над столбцом, а слева, где дерево. Я туда и не смотрел (дисплей слишком большой ). И сортировка этой таблицы возможна только по одному столбцу, а не разным, как в спецификации.
    • Ветерок
      Вот про то и речь. Не кликается, не выбирается. И иконка выбора свойств неактивна.   Насколько я понял, в таблицу идет по умолчанию (и только так) значение Desription. И надо каким-то образом связать его с Наименованием чтобы не вводить вручную.
    • gudstartup
      тогда езжайте спокойно на следующий объект и думайте в поезде под стук колес а они пусть работают в 3+2 если план горит!!
×
×
  • Create New...