eksodus

Макросы в Power Mill

227 сообщений в этой теме
В 22.02.2017 в 15:47, eksodus сказал:

и вот нашёл ещё один очень удобный макрос -

запускаем макрос, и выбираем по очереди сначала плоскость Z, а потом плоскость Y

и СК будет создана в центре детали

Интересный макрос. Но я использую другой, потому как СК выставляю в середине детали. А Z0 вверху. Что я делаю? Вычисляю заготовку, создаю СК по Заготовке, указываю нужную мне точку, сориентировав модель как мне удобно. После разворачиваю оси, если СК развернута не туда.

 

Cоздать СК.mac

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


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


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

Интересный макрос. Но я использую другой, потому как СК выставляю в середине детали. А Z0 вверху.

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

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

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

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

и если вдруг ошибся - там есть кнопка повернуть, которая не просто повернёт СК, а поменяет также нужную плоскость

в общем - тот макрос намного более удобен, советую использовать его

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

Как проверить, есть ли в наличии(в дереве) инструмент? А если нет, то взять его из базы... Что-то вроде:

IF Tool.Name == 'D12' {

//Если нет, то взять из базы

FORM TOOLDBSEARCH
TOOLDB RESULTS_LIST SELECT 5 NEW
TOOLDB RESULTS_LIST CREATE  5 0
TOOLDBSEARCH ACCEPT }

тут нужно получить список инструментов, и с ним уже работать

и разве в руководстве нет похожего примера ? вроде бы был

 

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


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

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

Согласен, макрос интересный. И я его сразу же попробовал, а потом стал писать о своем. Ваш макрос тоже не универсальный, вернее почти не подходит для моих целей. Он рассчитан на плоскости перпендикулярные к нормалям и осями СК. Я обрабатываю много моделей у которых нет таких поверхностей. Либо это конические поверхности, либо прямые, но под углом... В таких случаях Ваш макрос не подходит. А мой идеален...

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


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

ID: 124   Опубликовано: (изменено)

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

Ваш макрос не подходит

это не мой макрос - я просто выложил его для всеобщего пользования

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

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

А мой идеален

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

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

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


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

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

Так он и делает запрос. Вернее 2 запроса. Сперва открывается Редактор СК. Затем предлагается выбрать одну из 9-ти точек Заготовки. А потом можно указать направление осей, воспользовавшись инструментом "Поменять оси ЛСК".

Снимок.JPG

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


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

ID: 126   Опубликовано: (изменено)

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

А потом можно указать направление осей, воспользовавшись инструментом "Поменять оси ЛСК".

так в том то и дело - что в макросе что я выложил, этого делать не нужно - макрос сам поворачивает СК, правильно располагая оси

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

 

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

1) вычислить последнюю использовавшуюся заготовку

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

а если предыдущая заготовка была по активной границе ? ваш макрос тогда остановится и не сработает

а если Тип заготовки был тоже задан границей ? а мне нужен тип - Модель ?)

2) выбрать способ создания СК - По Заготовке

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

 

дальше - ваш макрос не задаёт точность вычисления заготовки

а если модель имеет радиусные края ? (см. картинку ниже)

точности по умолчанию в 0,1 мм ей будет мало, будет погрешность в 0,1-0,2 мм, а у меня это недопустимо

а в макросе что я выложил - там перед вычислением заготовки задаётся её точность - 0,001

это для радиусных граней самый раз

 

и ещё одно - а если оси в глобальной СК не перпендикулярны граням модели ? - вот пример

f8be8d7aec3ccbf88452a2800bb9b2cc.png

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

 

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

772808be2ed9735459b538b3c80108bc.png

 

дальше, текст вашего макроса содержит много мусора

FORM BLOCK
EDIT BLOCK ZMIN UNLOCK
EDIT BLOCK RESET
CREATE WORKPLANE ; EDITOR
MODE WORKPLANE_EDIT REPOSITION BLOCK
MACRO PAUSE "Выберите точку для новой СК."
MODE WORKPLANE_EDIT FINISH ACCEPT
EXPLORER SELECT Workplane "Workplane\1" NEW
ACTIVATE Workplane "1"
EXPLORER SELECT Workplane "Workplane\1" NEW
EDIT BLOCK RESET
ROTATE TRANSFORM ISO1

из 12 строк, почти половина лишняя

если убрать ненужные 5 строк, то вот аналогичный макрос всего на 7 строк

EDIT BLOCK RESET

MODE WORKPLANE_CREATE ; INTERACTIVE BLOCK
MACRO PAUSE "Выберите точку для новой СК."
MODE WORKPLANE_EDIT FINISH ACCEPT

ACTIVATE Workplane "1"
EDIT BLOCK RESET
ROTATE TRANSFORM ISO1

небольшое уточнение - я убрал строку EDIT BLOCK ZMIN UNLOCK, потому что смысла в ней нет

если СК создаётся в самом начале после импорта модели - то блокировки всё равно нет

а если была блокировка - то зачастую блокируют все оси , а не только Z

если всё-же нужно снять блокировку - тогда первой строчкой можно добавить  - EDIT BLOCK ALL UNLOCK

это разблокирует все оси, а не только Z

 

 

и ещё одно - а если уже есть СК с именем 1 ? тогда макрос не сработает как надо

поэтому при создании СК можно сразу указать имя, и потом активировать СК по этому имени

 

PS: я бы улучшил ваш макрос вот так:

   EDIT MODEL ALL DESELECT ALL
   EDIT BLOCK COORDINATE WORKPLANE
   EDIT BLOCKTYPE BOX
   EDIT BLOCK ALL UNLOCK
   EDIT BLOCK TOLERANCE ".001"
   EDIT BLOCK RESETLIMIT "0"
   EDIT BLOCK LIMITTYPE MODEL
   EDIT BLOCK RESET

   MODE WORKPLANE_CREATE ; INTERACTIVE BLOCK
   MACRO PAUSE "Выберите точку для новой СК."
   MODE WORKPLANE_EDIT FINISH ACCEPT

   ACTIVATE Workplane "1"
   EDIT BLOCK RESET
   ROTATE TRANSFORM ISO1

 

 

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

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


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

ID: 127   Опубликовано: (изменено)

Немного подкорректировал этот макрос для проверки сразу нескольких траекторий на зарезы и столкновения:

 

1. После запуска макроса появляется окно выбора траекторий для проверки (в дереве не обязательно активировать к-л. траекторию и инструмент).

2. После выбора траекторий появляется окно для задания безопасного зазора патрона, затем - безопасного зазора хвостовика.

3. Производится расчет с выводом информационных сообщений.

4. Остальное, как у Konstantin_VP. Спасибо ему.

 

Тестировалось для PM2017.

 

Selected_Toolpaths_Collision.mac

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

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


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

Ребят, помогите сделать макрос для просмотра свойств траектрии) 

Постоянно кликать ПКМ на траекторию и потом выбирать из выпадающего меню нужный пункт надоело, поэтому пытался сделать макрос всем известным способом (простой записью действий), но вот беда - в макросе прописана та траектория, свойства которой и просматривались при записи. А как сделать так, чтобы при запуске макроса показывались свойства активной траектории?

Вот что у меня получилось...

Снимок.JPG

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


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

Ребят, помогите сделать макрос для просмотра свойств траектрии) 

вот так:

SIZE TOOLPATH ;

 

24 минуты назад, k.sema сказал:

чтобы при запуске макроса показывались свойства активной траектории?

способы выполнения действий с активными элементами можно почитать в конце 2 страницы данной темы

 

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

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


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

Попробуйте так:

 

Цитата

STRING path = pathname('toolpath',Name) 
// Проверка, есть ли активная траектория 
IF path != '' { 
STRING activename = Toolpath.name 
SIZE TOOLPATH $activename
} ELSE { 
MESSAGE info "Нет активной траектории" 

RETURN

 

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

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


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

Сделал так, как сказал eksodus - стёр всё, что было в макросе и вставил лишь 

SIZE TOOLPATH ;

Затем для вызова макроса назначил удобное мне сочетание клавиш, всё отлично работает, спасибо!

Изучаю форум, в частности данную тему. Макросы - вещь, прям находка для меня)) Уже много идей как их можно применять. Очень удобно, а то заипался кликать и вводить каждый раз одно и тоже)) Кстати, заметил, что именно так, из-за постоянно вбивания одних и тех же данных в разные поля ввода и происходят ошибки....

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


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

Как вариант макроса для просмотра свойств траектории с возможностью выбора сразу нескольких траекторий, без необходимости указывать активную:

 

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

 

ENTITY LIST $Selected_Toolpaths = INPUT ENTITY MULTIPLE toolpath "Выберите траектории"

FOREACH $tp in $Selected_Toolpaths {

ACTIVATE TOOLPATH $tp.Name

SIZE TOOLPATH ;

string yesnoprompt = "Продолжить?" 
bool carryon = 0 
$carryon = query $yesnoprompt

if $carryon == 0 {

TEXTINFO ACCEPT
BREAK
}

}

 

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

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


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

ID: 133   Опубликовано: (изменено)

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

Как вариант макроса для просмотра свойств траектории с возможностью выбора сразу нескольких траекторий, без необходимости указывать активную:

классный макрос!

делать макрос на одну траекторию - даже мне лень )

а тут выбрал - и все траектории по очереди показывает

это очень удобно, спасиб)

 

PS: а есть способ как-то в обратном порядке их перелистывать ?

например - дошёл до конца - и потом назад ?

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

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


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

Ну это тебе спасибо, что перевел руководство по макросам, от туда и черпаю информацию. Ты можешь на примере показать, что значит перелистывать в обратном порядке? А то я не понимаю, что нужно сделать.

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


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

Ну это тебе спасибо, что перевел руководство по макросам, от туда и черпаю информацию. Ты можешь на примере показать, что значит перелистывать в обратном порядке? А то я не понимаю, что нужно сделать.

Где он выложен?

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


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

 

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


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

Безмерно благодарен и не только я, спасибо за доброе дело... 

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


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

ID: 138   Опубликовано: (изменено)

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

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

пример дать не могу - ибо сам бы тогда сделал

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

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

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

Ну это тебе спасибо, что перевел руководство по макросам, от туда и черпаю информацию.

тут и Кинематику тоже спасибо - без его помощи в исправлении ошибок в макросах я бы не справился

теперь там осталось всего пару ошибок, а было штук 15

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

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

 

и кстати - в оригинальном руководстве по макросам на английском, в милле 2016-2017 все ошибки так и остались

так что мы единственные кто имеет исправленную версию )

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

Где он выложен?

эх, это был квест на внимательное чтение первой страницы )

но кто-то поспешил...

30 минут назад, sssdos сказал:

Безмерно благодарен и не только я, спасибо за доброе дело... 

к сожалению, на тот момент я работал в повермилл 2012, поэтому логично что и для перевода взял 2012 версию

 

а в английском руководстве для 2016-2017 милла уже много интересных изменений есть

 

и ещё одно - очень много команд, да и других интересных нюансов, просто отсутствуют в доступе

то есть ни руководство по макросам, ни даже встроенный список команд в меню Справка не содержат то что нужно

так что только искать по форумам англоязычным, если что-то очень нужно

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

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


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

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

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

Понятно. К сожалению, не знаю как это осуществить.

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


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

ID: 140   Опубликовано: (изменено)

Помогите, пожалуйста, создать макрос записи NC-файла. 

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

Пробовал создать макрос простой записью действий, естественно всё привязалось к текущей траектории, с её именем, и на любой другой активной траектории уже не канает)) 

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

 

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

EXPLORER SELECT Toolpath "Toolpath\2" NEW
CREATE NCPROGRAM "2" EDIT NCPROGRAM "2" APPEND TOOLPATH "2" DEACTIVATE NCPROGRAM
EXPLORER SELECT NCProgram "NCProgram\2" NEW
ACTIVATE NCPROGRAM "2" KEEP NCPROGRAM ;
TEXTINFO ACCEPT


 

Изменено пользователем k.sema

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


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

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

а для отдельной в списке это сложновато будет

а почему не подходит сразу для всех траекторий ? почему именно по одному нужно ?

 

и если только по одному, то там по сути всего 2 кнопки нажать - ПКМ-Создать NC файл, и потом ПКМ на NC файле - записать, зачем для 2 кнопок ещё макрос писать ?

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


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

а почему не подходит сразу для всех траекторий ? почему именно по одному нужно ?

 

Проекты чаще всего огромные, обработка с разных сторон, несколько СК, в проводнике обычно несколько папок с кучей траекторий (часто больше 50), соответственно также много границ и инструментов, которые приходится постоянно открывать\закрывать и прокручивать вверх-вниз для того, чтобы увидеть самый верх с NC-файлами, это неудобно. А удобно было бы жмакнуть сочетание клавиш, без прокрутки проводника, и NC-файл уже залетел на флешку)).  Записать сразу все траектории нет смысла, я за смену столько не сделаю)) 

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

Снимок.JPG

 

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


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

симпатичный пуансон )

у меня получился такой вот вариант, только сначала нужно активировать траекторию

STRING activename = Toolpath.name
CREATE NCPROGRAM $activename
EDIT NCPROGRAM $activename
APPEND TOOLPATH $activename
KEEP NCPROGRAM ;

TEXTINFO ACCEPT

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

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

 

и если NC  файл с таким именем уже существует - макрос остановится с ошибкой

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

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


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

@eksodus  Спасибо огромное! Уже второй раз выручаешь) Всё отлично работает, прям то, что надо)

 

 

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

а для отдельной в списке это сложновато будет

 

эх, недооцениваешь ты себя)

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


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

ID: 145   Опубликовано: (изменено)

k.sema

 

Опять же, если хочется спостпроцессировать сразу несколько, то слегка доработав макрос с помощью цикла FOREACH, получим:

 

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

 

ENTITY LIST $Selected_Toolpaths = INPUT ENTITY MULTIPLE toolpath "Выберите траектории"

FOREACH $tp in $Selected_Toolpaths {

ACTIVATE TOOLPATH $tp.Name

STRING activename = Toolpath.name
CREATE NCPROGRAM $activename
EDIT NCPROGRAM $activename
APPEND TOOLPATH $activename
KEEP NCPROGRAM ;

TEXTINFO ACCEPT

}

 

 

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

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


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

Как округлять числа? Нужно рассчитать размер заготовки с определенным припуском.

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


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

Спасибо за помощь. Сделал сам. Но остался вопросик. А как сохранить значение переменной в буфере обмена?

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


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

Как округлять числа? Нужно рассчитать размер заготовки с определенным припуском.

 

В 10.05.2017 в 15:14, syncomp сказал:

Спасибо за помощь. Сделал сам. Но остался вопросик. А как сохранить значение переменной в буфере обмена?

Поделишься?

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


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

Конечно, только не оптимизирован, хотя работает. У меня стояла задача: Округлить заготовку до 5мм и дать припуск 10 мм на сторону по Х У. Удобнее всего было конвертировать число в строку, сделать с ней манипуляции, снова конвертировать в число и прибавить 20...

Размер заготовки.mac

Подскажите пожалуйста. Как узнать имя модели? Нужно перевернуть модель и назначить ей другую СК.  Что я делаю не так?

FOREACH md IN folder  ('model') {
String my_model = md.Name
}
Print  $my_model

 

При выполнении макроса выдается ошибка " Неправильное имя" в строке Print.

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

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


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

При выполнении макроса выдается ошибка " Неправильное имя"

Знак равно поставьте после Print

и поменяйте местами со строкой с закрывающей скобкой

 

PS: только по сути это ни к чему, вам надо модель крутить, а у вас макрос на вывод имён всех моделей получился

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


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

Не всегда правильно считает))

для своих нужд порезал до такого состояния

 

Размер заготовки2.mac

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


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

PS: только по сути это ни к чему, вам надо модель крутить, а у вас макрос на вывод имён всех моделей получился

Так и надо было имя. Чтобы закрутить модель надо знать ее имя. Операции с ней производить буду. А это только часть макроса, которая печатает имя модели. У меня в заготовке бывает по 20 моделей стоит. Но потом оказалось, что делал немного не то. Мне нужно было повернуть все на 180 градусов по оси Y. Вроде как выполнить команду Rotate. Я и сейчас не знаю, как это сделать.

20 часов назад, sssdos сказал:

Не всегда правильно считает))

Я заметил. Но считает неправильно, если нет никакой СК. Установил СК, запустил макрос. Все работает.

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

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


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

Так и надо было имя. Чтобы закрутить модель надо знать ее имя. Операции с ней производить буду. А это только часть макроса, которая печатает имя модели.

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

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

У меня в заготовке бывает по 20 моделей стоит. Но потом оказалось, что делал немного не то. Мне нужно было повернуть все на 180 градусов по оси Y. Вроде как выполнить команду Rotate. Я и сейчас не знаю, как это сделать.

как раз повернуть все модели по оси Y - это несложно оператором FOREACH

поэтому, во-вторых - опишите что вам нужно получить в результате

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

 

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

Может кто знает как передать данные в буфер обмена.

ну если бы можно было уточнить, что вы называете в PowerMILL-е буфером обмена...

я просто первый раз сталкиваюсь с таким термином в отношении PowerMILL, интересно узнать

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


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

 

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

в какой файл? , если в NC программу, то в пмпосте есть соответствующие параметры Block Max X ...

 

если просто в файл, то проще подцепиться  "vbasikom"  (VB) или "шарпом" (С#).

 

 

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


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

ID: 155   Опубликовано: (изменено)

Нашёл макрос для выведения общей статистики NC файла

 

IF (ENTITY_EXISTS('ncprogram','')) {
//Calculate ncprogram time
ENTITY tpath = entity('ncprogram','')
REAL $total_time = $tpath.statistics.leadsandlinks.times.rapid
$total_time = total_time + $tpath.statistics.leadsandlinks.times.plunge
$total_time = total_time + $tpath.statistics.leadsandlinks.times.ramp
$total_time = total_time + $tpath.statistics.leadsandlinks.times.others
$total_time = total_time + $tpath.statistics.cuttingmoves.times.linear
$total_time = total_time + $tpath.statistics.cuttingmoves.times.arcs
STRING $msg = string(round($total_time,2))
//MESSAGE INFO "Total Time $Msg mn"
$total_time = INPUT "Total Time NC Time Mn"
} ELSE {
MESSAGE INFO "NO ACTIVE ncprogram"
}

 

И ещё один макрос - выводит координаты центра отверстия.

Отверстие нужно предварительно выделить.

 

EDIT BLOCKTYPE CYLINDER
EDIT BLOCK RESET
REAL $CENTERX = $block.centre.x
REAL $CENTERY = $block.centre.y
$CENTERX = ROUND($CENTERX, 3)
$CENTERY = ROUND($CENTERY, 3)
MESSAGE INFO "CENTER X = $CENTERX" +CRLF+ "CENTER Y = $CENTERY"

 

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

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


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

Мы изготавливаем деревянные модели для литейного производства. заготовки делаем исходя из габаритных размеров модели +20мм припуска, по 10 на сторону. Толщина, высота по Z. в данном контексте не важна... Бывает так и часто, что ошибаемся в задании размеров заготовки. Вот я и решил написать макрос, чтобы он сам рассчитал размеры заготовки и выдал их в Message info. Потом пошел дальше, хочу чтобы размер заготовки не перепесывался  в ручную,а сохранялся в файле, например "Заготовка.txt". Для передачи данных, служит буфер обмена Windows, CTRL+C, а не РМ!!! Чтобы затем его можно было вставить в файл CTRL+V.

В основном у нас детали делаются за один установ. Но бывает, что и за два. Мы переворачиваем заготовку на 180 градусов и продолжаем обрабатывать с обратной стороны. Хочу сделать макрос, чтобы установил СК1,сделал нужные мне обработки, потом перевернул деталь на 180 градусов вдоль У и установил СК2 для обработки 2-й сторооны...

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


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

хорошо, теперь хоть понятно что нужно сделать

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

хочу чтобы размер заготовки не перепесывался  в ручную,а сохранялся в файле, например "Заготовка.txt".

файловые операции  - это мне надо почитать последнее руководство по макросам

в 2012 версии этого ещё не было

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

Хочу сделать макрос, чтобы установил СК1,сделал нужные мне обработки, потом перевернул деталь на 180 градусов вдоль У и установил СК2 для обработки 2-й сторооны...

а это как раз не сложно сделать

модели ж всегда у вас параллелепипедные ?

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


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

ID: 158   Опубликовано: (изменено)

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

хорошо, теперь хоть понятно что нужно сделать

Идей у меня много. Пользуюсь около 30-ти макросами. Даже создал свою панель инструментов.  Не хватает  инфы по макросам. Да и разработчики "языка", создается впечатление не сильно парятся на удобством. Строковые Функции такие бедные! Перевод числа в строку есть, даже два раза упоминается, а вот обратной ни разу...  пока сам сообразил применить ту же функцию...

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

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

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


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

ID: 159   Опубликовано: (изменено)

В 18.05.2017 в 14:23, syncomp сказал:

Хочу сделать макрос, чтобы установил СК1,сделал нужные мне обработки, потом перевернул деталь на 180 градусов вдоль У и установил СК2 для обработки 2-й сторооны...

Вот макрос, который создаёт новую СК, поворачивает её на 180 градусов по Y, задаёт ноли:

- по Z - верхняя плоскость

- по XY - середина заготовки (детали)

 

Макрос можно запускать любое количество раз, чтобы просмотреть его работу.

Единственное условие - убедиться перед запуском, что активная СК, или если её нет - Глобальная СК, - имеет ось Z  перпендикулярной к нужной плоскости XY.

 

(Так как этот макрос как раз и требуется на вторую сторону обработки - то понятно что активная СК перед его запуском уже имеет правильное расположение оси Z)

// Создание и поворот СК на 180 град по Y
STRING WP1=new_entity_name('workplane')
CREATE WORKPLANE ; EDITOR
MODE WORKPLANE_EDIT START $WP1
MODE WORKPLANE_EDIT TWIST Y
MODE WORKPLANE_EDIT TWIST "180"
WPETWIST ACCEPT
MODE WORKPLANE_EDIT FINISH ACCEPT

// Задание заготовки
ACTIVATE Workplane $WP1
EDIT MODEL ALL DESELECT ALL
EDIT BLOCK COORDINATE WORKPLANE
EDIT BLOCKTYPE BOX
EDIT BLOCK ALL UNLOCK
EDIT BLOCK TOLERANCE ".001"
EDIT BLOCK RESETLIMIT "0"
EDIT BLOCK LIMITTYPE MODEL
EDIT BLOCK RESET

// Перемещение Z0 на верхнюю плоскость, XY -  центр
REAL $x0 = ($block.limits.xmax+$block.limits.xmin)/2
REAL $y0 = ($block.limits.ymax+$block.limits.ymin)/2
REAL $z0 = $block.limits.zmax
MODE WORKPLANE_EDIT START ;
MODE WORKPLANE_EDIT POSITION
MODE POSITION CARTESIAN X $x0
MODE POSITION CARTESIAN Y $y0
MODE POSITION CARTESIAN Z $z0
POSITION APPLY
MODE WORKPLANE_EDIT FINISH ACCEPT

// Отрисовка СК, Модели и Заготовки
UNDRAW Workplane $WP1
DEACTIVATE Workplane
ACTIVATE Workplane $WP1
EDIT BLOCK RESET
DRAW BLOCK
ROTATE TRANSFORM ISO1
ZOOM DOUBLE

 

теперь примерный порядок действий такой:

1) Ваш макрос, или другой макрос, или вручную, - создаёт СК (если нужно)

2) Второй макрос на создание и просчёт траекторий

3) Третий макрос - из этого сообщения, он создаёт и поворачивает СК на 180 гр по Y

4) Последний макрос на просчёт траекторий с обратной стороны

 

Ну или всё это собрать в один макрос. Но перед сборкой в один макрос - я бы протестировал всё это как отдельные 4 макроса, и только потом всё вместе.

 

В 18.05.2017 в 14:23, syncomp сказал:

хочу чтобы размер заготовки не перепесывался  в ручную,а сохранялся в файле, например "Заготовка.txt".

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

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

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


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

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

Размер заготовки.mac

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

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


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

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

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

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

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


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

Войти

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


Войти сейчас

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

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

  • реклама

  • Реклама

  • Ближайшие события

    Предстоящих событий не найдено
  • Дни рождения сегодня

    1. Alexmaster
      Alexmaster
      (38 лет)
    2. DanChizz
      DanChizz
      (26 лет)
    3. DimitriyLadon
      DimitriyLadon
      (41 год)
    4. gals05
      gals05
      (64 года)
    5. ildarca
      ildarca
      (28 лет)
    Просмотреть все