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

Макросы в 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
Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

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

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

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

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




×
×
  • Создать...