eksodus

Макросы в Power Mill

377 сообщений в этой теме
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
1 пользователю понравилось это

Поделиться сообщением


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

Поделиться сообщением


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

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

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

Поделиться сообщением


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

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

такое можно попробовать сделать через изменение файла ресурсов

я точно не уверен - но вероятность положительного результата есть

 

к макросам это никаким боком не относится

Изменено пользователем eksodus

Поделиться сообщением


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

такое можно попробовать сделать через изменение файла ресурсов

я точно не уверен - но вероятность положительного результата есть

 

к макросам это никаким боком не относится

@eksodus А ты же менял файл ресурсов. Помнится, еще окно настроек переходов в PM2017 по-человечески сделал, я долго пользовался. На тебя вся надежда в этом вопросе.

Я только до конца не понимаю, в чем преимущество окна открытия модели перед окном открытия проекта. В первом случае - это окно с указанием типа файлов, второе - окно на выбор директории. Вроде, в этом все отличие.

Поделиться сообщением


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

Помнится, еще окно настроек переходов в PM2017 по-человечески сделал, я долго пользовался.

да я и в 2016 для себя подредактировал файл ресурсов - окна заголовков, менюшки, названия и тд

всё что не умещалось в рамки границы текста

просто не люблю когда фраза обрывается на полуслове

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

Я только до конца не понимаю, в чем преимущество окна открытия модели перед окном открытия проекта. В первом случае - это окно с указанием типа файлов, второе - окно на выбор директории. Вроде, в этом все отличие.

окно выбора модели и типа файлов - это виндовское окно со своими настройками на верхней панели

а окно открытия проекта = это повермилловское окно, которое обрабатывает вызовы винды

 

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

 

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

 

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

но в экзешник милла я точно не полезу - там всё покриптовано по самое нехочу

 

так что если через ресурсы не получится - то я дальше пасс

 

Поделиться сообщением


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

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

string filename = ""
$filename = fileselect "Open project"
project recovery open ${dirname(filename)}

Сохраняем этот макрос, в такое место чтобы путь не содержал пробелов.

 

Потом редактируем в файлах Powemill\sys\hci\powermill.ndb\source\table\menu и Powemill\sys\hci\powermill.ndb\source\table\form

ищем текст "PROJECT RECOVERY OPEN PROJSELECTOR"

и заменяем на "MACRO ВАШ\ПУТЬ\ДО\МАКРОСА.mac".

Рекомендую сделать резервные копии этих файлов.

 

Чтобы открыть проект выбираем любой файл в папке проекта.

Поделиться сообщением


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

impact огромное спасибо. Все получилось. Единственное, что приходится открывать папку проекта. Но это мелочи

Изменено пользователем syncomp

Поделиться сообщением


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

 Уважаемы Eksodus На Рутрекере увидел ваши посты о РМ2018. Что скажете? Есть уже нормальная версия для уверенной установки на комп?

Поделиться сообщением


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

Так если ты читал там всю необходимую информацию про Mill 2018, то и ответ на свой вопрос должен был найти. Такие вещи там и обсуждают.

Поделиться сообщением


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

Не получается перебирать в папке моделей модели для того чтобы сделать эту геометрию справочной. Перебор по аналогии с папкой траекторий не идёт

DIALOGS ERROR OFF
DIALOGS MESSAGE OFF

STRING $FolderName = dirname(pathname(entity('Toolpath',''))) //определяет путь по активной траектории
//определяет путь по активной траектории
INT $nmb =1

FOREACH t IN folder ($FolderName) {

ACTIVATE TOOLPATH $t.Name

 


}
RESET LOCALVARS // очистить временные переменные

DIALOGS ERROR On
DIALOGS MESSAGE On

может знает кто как перебирать?

 

Операции с файлами моделей.7z

Безымяацанный.png

Изменено пользователем sssdos

Поделиться сообщением


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

Не получается перебирать в папке моделей модели для того чтобы сделать эту геометрию справочной. Перебор по аналогии с папкой траекторий не идёт

DIALOGS ERROR OFF
DIALOGS MESSAGE OFF

STRING $FolderName = dirname(pathname(entity('Toolpath',''))) //определяет путь по активной траектории
//определяет путь по активной траектории
INT $nmb =1

FOREACH t IN folder ($FolderName) {

ACTIVATE TOOLPATH $t.Name

 


}
RESET LOCALVARS // очистить временные переменные

DIALOGS ERROR On
DIALOGS MESSAGE On

может знает кто как перебирать?

Перебор объектов в активной папке.

FOREACH ob IN folder(active_folder()) {
// делаем что необходимо
}

Поделиться сообщением


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

FOREACH ob IN folder(active_folder())

Не получается, как?

Поделиться сообщением


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

Не получается, как?

Надо активировать папку как у вас на скриншоте выше.

Поделиться сообщением


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

Подскажите, как извлечь диаметр отверстия и создать сверло с диаметром, соответствующим этому отверстию ?

Поделиться сообщением


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

 

16 часов назад, eksodus сказал:

Подскажите, как извлечь диаметр отверстия и создать сверло с диаметром, соответствующим этому отверстию ?

String[] para11 = new String[999];
                      para11 = pm11.GetEntityParameterInfo(PowerSolutionDOTNetOLE.clsPowerMILLOLE.enumPowerMILLEntityType.pmFeatureSet, ss29[ii11]);

 

if (para11[ii12].IndexOf("DIAMETER")>-1)
                          {
                              ss31[ii30] = para11[ii12].Substring(para11[ii12].IndexOf(":") + 1).Trim();
                              ii14++;
                              ss39[ii30] = Convert.ToString(ii14);

 

 

 pm11.Execute("CREATE TOOL ; DRILL FORM TOOL");
                        pm11.Execute("RENAME TOOL ; sverlo" + ss43[ii11] + "_otv_" + ss47[ii11] + "_" + ss46[ii11]);
                        pm11.Execute("EDIT TOOL ; DIAMETER '" + ss43[ii11] + "'");

Поделиться сообщением


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

 

String[] para11 = new String[999];
                      para11 = pm11.GetEntityParameterInfo(PowerSolutionDOTNetOLE.clsPowerMILLOLE.enumPowerMILLEntityType.pmFeatureSet, ss29[ii11]);

 

if (para11[ii12].IndexOf("DIAMETER")>-1)
                          {
                              ss31[ii30] = para11[ii12].Substring(para11[ii12].IndexOf(":") + 1).Trim();
                              ii14++;
                              ss39[ii30] = Convert.ToString(ii14);

 

 

 pm11.Execute("CREATE TOOL ; DRILL FORM TOOL");
                        pm11.Execute("RENAME TOOL ; sverlo" + ss43[ii11] + "_otv_" + ss47[ii11] + "_" + ss46[ii11]);
                        pm11.Execute("EDIT TOOL ; DIAMETER '" + ss43[ii11] + "'");

На синтаксис ругня

Поделиться сообщением


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

@dd22  - макрос выдаёт ошибку в первой же строке в ПМ2016.

 

Я уже нашёл другое решение данной проблемы, но хотелось бы увидеть и Ваш вариант и сравнить.

Можете подкорректировать, пожалуйста, если не сложно ?

Поделиться сообщением


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

Я выставил выше  выдержку из кода написанную на с#, там  содержались команды подходящие для макросов для создания инструмента, я думал чем то поможет.

если расшифровать, то примерно так

 

"CREATE TOOL ; DRILL FORM TOOL"
"RENAME TOOL ; "sverlo5"
"EDIT TOOL ; DIAMETER '5'

 

вместо 5 какая-то переменная должна быть извлеченная ранее.

 

Макросы конечно удобная вещь, но гораздо комфортней создавать приложения используя тот же Vb или С#, подключив их к Powermill

Поделиться сообщением


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

Я выставил выше  выдержку из кода написанную на с#, там  содержались команды подходящие для макросов для создания инструмента, я думал чем то поможет.

я в институте учил только QBasic - на химических специальностях тогда другого не было, так что код C# для меня непонятен будет

суть то понятна по именам команд и переменных, но синтаксис не очень

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

гораздо комфортней создавать приложения используя тот же Vb или С#, подключив их к Powermill

ну я понял, что это Vb или что-то вроде, - ведь PowerSolutionDOTNetOLE  используется при написании своих плагинов к миллу

но - есть же тут на форуме HTML шаблоны, которые используют похожий синтаксис (например для 4-х осевой черновой обработки),

вот я и подумал - может это что-то такого же типа

 

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

вместо 5 какая-то переменная должна быть извлеченная ранее.

да, там через переменные и функции

 

ИТОГ:

Макрос для быстрого создания центрования и сверления, где все сверла соответствуют диаметрам отверстий.

 

Сам макрос, по сути, состоит из нескольких макросов, соединённых в один:

- Макрос для создания 2D Элементов строго для 3-осей. Для PM2016.

Для 2017-2018 милла будут ошибки, или неправильное создание отверстий (поэтому чуть изменить для себя нужно).

- Макрос для разбивания 2D Элементов на группы по Диаметру

- Макросы для создания инструментов, центрования и сверления

- Макрос для переименования траекторий по номеру и имени инструмента

 

Что делает этот макрос:

1) Создаёт 2D Элементы для ВСЕХ отверстий

2) Создаёт инструмент "Центровка" и центрует ВСЕ отверстия

3) Разбивает 2D Элементы на группы по Диаметру

4) Создаёт сверла для каждой группы с соответствующим диаметром

5) Для каждого сверла выбирается 2D Элемент с соответствующим отверстием и создаётся и считается траектория сверления

6) В процессе создания 2D Элементов, инструментов и траекторий - эти группы раскрываются в Проводнике милла для наглядности

7) В конце все траектории переименовываются по порядковому номеру и инструменту

8) Также в макросе происходит проверка наличия инструмента "Сверло" с нужным диаметром.

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

 

Результат - ниже на скриншоте:

Holes.png.e9a80f0e9f1f7195aa9d5a928d212647.png

 

PS: конечно - макрос ещё нуждается  в улучшении, например:

- добавить режимы в зависимости от диаметра сверла

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

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

 

А пока - такой вот (не?)-простой макрос для однократного использования в одной Системе Координат.

 

Holes.zip

3 пользователям понравилось это

Поделиться сообщением


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

В 18 работает, хороший макрос

Безымянный.png

1 пользователю понравилось это

Поделиться сообщением


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

В 18 работает, хороший макрос

хорошо )

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

а с этим макросом так не сделаешь, его преимущество - относительная простота

Изменено пользователем eksodus

Поделиться сообщением


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

Новый макрос для сверления. Поддерживает сколько угодно установов (это достигается сортировкой элементов по папкам).

 

Что изменилось:

- теперь все отверстия сортируются от меньшего к большему

- можно делать сверление со многих установов

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

- можно сверлить не все отверстия, - путём выбора нужных (в случаях, например, если они сквозные и были просверлены с 1 установа, то со 2 установа их уже не нужно сверлить)

- теперь не нужно задавать отдельно шаблон траектории - все параметры сверления задаются через макрос

- добавил комментарии на русском

 

Работа макроса:

1) Импортируем модель Holes2 и активируем СК1

2) Запускаем макрос Holes2 и на первый вопрос (Есть ли составные отверстия) отвечаем ДА

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

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

 

011.png.6d60b9bed0031b1200ee28233add4274.png

 

4) Когда макрос создаст инструменты и траектории, он станет спрашивать для каждого размера отверстий -
сверлить насквозь ? В данном примере для первых трёх типов отверстий надо выбрать НЕТ,

 

012.png.c5387d033e4b54846f0a4cb7db53dfda.png

 

а для последнего 2D Элемента справа, с двумя отверстиями 12,5 - ДА

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

 

5) Активируем СК 2 и опять запускаем макрос

6) На вопрос "Есть ли составные отверстия" отвечаем ДА (чтобы не сверлить отверстия 12,5 просверленные насквозь уже с другой стороны)

и выбираем два отверстия по центру

 

013.thumb.png.e8a04055ba92e04bb70c1cbcad9bdc03.png

 

7) Эти два отверстия - меньшего диаметра, чем с обратной стороны, поэтому сверлим их насквозь, нажимая ДА.

 

014.thumb.png.4233661cda7380ba1cf51909927e0398.png

 

8) Активируем СК 3 и опять запускаем макрос

9) Тут всего одно глухое отверстие, поэтому на вопрос "Есть ли составные отверстия" отвечаем НЕТ

По сути - теперь срабатывает старый макрос, который выбирает ВСЕ отверстия и создаёт по ним 2D Элементы.

 

015.png.0872253add5c507a2ff378e7fc49c791.png

 

10) Когда спросит сверлить насквозь - отвечаем НЕТ. (или, если нужно сделать чуть глубже с зарезом - отвечаем ДА)

 

Всё, работа макроса закончена.

В каждом установе будут созданы траектории центрования и сверления для выбранных отверстий.

 

Сам макрос с тестовой моделькой: Holes2.zip

 

 

4 пользователям понравилось это

Поделиться сообщением


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

Создайте аккаунт или войдите для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

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

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



  • Сообщения

    • argest41
      Какие ж смалики. Для когото сложно такие сообщения состовлять "поучительные"
    • Кровососс
      Явно, можно Александру повторить благодарность  за соучастие в "старой" версии FV.  Буду сливать. Звук в корме: явно слышна циркуляция воды и воздуха по днищу - кавитация на винте или у винта, или в винте . При сравнении скорости с записью на диктофоне, не забываем прибавлять скорость течения к скорости кора-бля. На пароходе ДВС = 240 л.с. - от Краза.   Скорость.m4a Звук.m4a     Хватило 66 000 выделенных ячеек.
    • Евгений Федченко
      Добрый день. Подскажите есть ли возможность построить многотельную деталь по конусной спирали, да так чтобы нижняя плоскоть у всех элементов массива была параллельной плоскости основания конуса?? А то  у меня выходит какая то лажа, все детали в разные стороны завалены....
    • Alex1986
      (аплодирую стоя) Можете прочитать разъяснения от генерального директора: Генеральный директор Группы компаний SWR Ирина Новикова: об истории SolidWorks Russia, о смене бизнеса и о нынешней работе ООО СолидВоркс Р.   Не понимаю, в каком контексте Вы используете термин "актив". Да и все целиком- как-то не понятно... Если привести к простому примеру, то получается, что фермер, который от своих коров получает молоко должен быть недоволен деятельностью продавца из лавки, который в соседней деревне продает молоко в своей упаковке и не забывает отдавать часть выручки...   Ну что же Вы?! Не "вдруг", а обязательно сопрут! Они же русские хакеры!!!
          Тогда к Вам будут вопросы от компетентных органов, как к Вам попала в руки эта запись, и вообще на каком оборудовании была произведена...
          Хм, скорее всего они-то точно знают, что прокуратура не придет :) 
      Там, где Вы работаете, должны даже понимать, почему.
        Да ладно?
        Они отвечают на вопросы по SolidWorks или только тех, кто у них лицензии купил?
        Имел удовольствие получить техническую консультацию от их представителя. Теперь Всегда есть чем поднять настроение в курилке.
        И неужели Вам не объяснили почему так произошло. Прошлой осенью у нас письмо с разъяснениями ситуации получили в конторе...
        Каждый раз, когда начинается волна импортозамещения у айтишников, прошу поставить мне на комп отечественную операционную систему :)
    • Alex1986
      тогда как Вы пришли к выводу, что:   ?
    • lobzik
      А что тут сверхестественоого? Да и обучится этому барахлу - говно вопрос.  Солид берется за неделю занятий. 
    • KsunReh
      Вод здесь признаю, погорячился, при конструкциях как у Вас на картинке действительно можно вводить стержни на раскрытой форме, а затем ее закрывать... почему то вспомнилась более сложная деталь... что впрочем не снижает требований к точности обработки ФОД при производстве формы и крайне желательную совместную обработку двух половинок.   По материалу - ПП не думаю, что хорош будет. А вот ПОМ очень даже и по прочности и по усадке и по коэффициенту трения. Можно еще в сторону ПЭ посмотреть.
    • Jesse
      быстро ехать и не падать это закон сохранения момента импульса аля гироскоп!))
    • Dr.Moro
      Материал всего один :))   Я понимал что в Entity нужно вводить лэйбл из MP, типа dens :)) где же тогда указать что мне нужна именно плотность? Или в описании temp это не значение температуры при которой выводится параметр, а просто пример этого параметра? Тогда верный вариант будет *get,X,MPlab,N,dens?  В любом случае раз @Борман даже проверил, завтра ещё попробую разные вариации, а то совсем как-то глупо выходит :)) ну а если и завтра не получится, тогда видимо что-то не то в самой вставке, придется приложить и её :))    Всем добра и ещё раз спасибо :)
    • soklakov
      @Fedor , так работает система активной виброзащиты)