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

Макросы в Power Mill


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

Доброго времени суток !

 

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

Чтобы макрос, например, делал проверку примерно так:

активировать траекторию, потом - если D сверла 3,6-4,5  - то V=xxx1, F=yyy1

если D сверла 4,6-5,5  - то V=xxx2, F=yyy2 и тд

 

может кто подсказать хоть примерно, через что такое можно реализовать ?

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


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

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

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

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

Не знаю, возможно ли такое, но как вариант.

конечно возможно

но ! макрос тогда не будет универсальным - свёрла то у всех по разному называются

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

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

Показать содержимое 
FOREACH t IN folder ('toolpath') {

ENTITY CurrentTP = t
STRING $ToolpathName = $CurrentTP.Name

IF t.Tool.Type == 'drill' {

ACTIVATE TOOLPATH $ToolpathName

If Tool.diameter >= 4 AND Tool.diameter <= 6 {

EDIT RPM "1500"
EDIT FRATE "50"
EDIT PRATE "50"
RESET TOOLPATH FEEDRATE

}
}


}

 

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

Я бы сделал так.

Показать содержимое  
FUNCTION GETVFVALUES(REAL DIA, OUTPUT REAL VVAL, OUTPUT REAL FVAL){
  // ДИАППАЗОНЫ ДИАМЕТРОВ
  REAL ARRAY DMIN_ARR[] = {1.0,     2.0,     3.0     } // МИНИМАЛЬНЫЙ
  REAL ARRAY DMAX_ARR[] = {2.0,     3.0,     4.0     } // МАКСИМАЛЬНЫЙ
  REAL ARRAY V_ARR[] =    {100.0,   200.0,   300.0   } // ЗНАЧЕНИЯ V
  REAL ARRAY F_ARR[] =    {1000.0,  2000.0,  3000.0  }  // ЗНАЧЕНИЯ F

  INT C = 0
  WHILE ($C < SIZE($DMIN_ARR)) {
    REAL DMIN = DMIN_ARR[$C]
    REAL DMAX = DMAX_ARR[$C]
    IF ($DIA > $DMIN) AND ($DIA < $DMAX) {
      $VVAL = V_ARR[$C]
      $FVAL = F_ARR[$C]
      RETURN
    }
    $C = $C + 1
  }
}

function main(){
  foreach t in folder ('toolpath') {
      real d = $t.tool.diameter
      real v = 1.1 // значение по умолчанию
      real f = 1000.1 
      call getvfvalues(d,v,f)
      $t.spindlespeed.userdefined = true
      $t.spindlespeed.value = $v
      $t.feedrate.cutting.userdefined = true
      $t.feedrate.cutting.value = $f
  }
}

 

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

@impact и тебе спасибо !

 

на выходных буду пробовать вставить всё это в макрос

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

Вариант с внешним файлом настроек.

я так и не понял как его прикрутить к уже существующей функции Main (которая может быть всего одна)

поэтому пока взял макрос от @Konstantin_VP

 

 

на сейчас сделал уже 3 редактирования макроса:

- в макросе Holes2 есть ошибка - там надо изменить в строке EDIT FEATURECREATE HOLES COMPOUND OFF  на EDIT FEATURECREATE HOLES COMPOUND ON

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

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

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

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

 

теперь составное отверстие будет всегда сверлиться по меньшему диаметру, как на скриншоте ниже, от самого верха Большего компонента отверстия

 

666.png.cf374be25079e2b8ff2c85d6755ed198.png

 

- вставил подачи, проверил на всех 3 установах  - всё работает без ошибок

 

 

но у меня чёт руки опустились...

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

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

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

 

или - сначала посверлить все отверстия, и потом фрезеровать

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

- или при создании отверстий задать верх отверстий - верх заготовки

- или в траектории сверления задать - верх отверстий как верх заготовки

 

какой вариант будет удобнее, трудно сказать

 

 

А в идеале ещё бы хотелось, чтобы макрос:

- определял глухие отверстия по их типу (Blind), и на основании этого сам делал глухие траектории сверления

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

- определял сквозные отверстия по их типу (Through), и на основании этого сам делал сквозные траектории сверления

Но! - эти два пункта по сути заменены мной вопросами в макросе - Сверлить насквозь или нет, так что опустим их пока.

 

- спрашивал - "Есть ли классные отверстия", и если ответить ДА - то предлагал бы сделать выбор и уменьшал бы диаметр сверла (или отверстий в 2D элементах) на 1 мм для этих отверстий

Это могу реализовать сам только наполовину (знаю как создать выбор и потом набор действий для выбранных элементов), а вот как изменить диаметр инструмента на 1 мм пока под вопросом.

 

А пока думаю перебрать сам принцип работы макроса.

 

 

 

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

я так и не понял как его прикрутить к уже существующей функции Main

Показать содержимое  
  // ДИАППАЗОНЫ ДИАМЕТРОВ
  REAL ARRAY DMIN_ARR[] = {6.0,     7.0,     8.0     } // МИНИМАЛЬНЫЙ
  REAL ARRAY DMAX_ARR[] = {7.0,     8.0,     9.0     } // МАКСИМАЛЬНЫЙ
  REAL ARRAY S_ARR[] =    {2000.0,   2000.0,   2000.0   } // ЗНАЧЕНИЯ s (обороты)
  REAL ARRAY F_ARR[] =    {65.0,  75.0,  85.0  }  // ЗНАЧЕНИЯ F (подача)

  // значение по умолчанию
  real $S = 1
  real $F = 1

  foreach t in folder ('toolpath') {
  
  IF t.Tool.Type == 'drill' {
  
    real $d = $t.tool.diameter
 
  INT $C = 0
  WHILE ($C < SIZE($DMIN_ARR)) {
    REAL DMIN = DMIN_ARR[$C]
    REAL DMAX = DMAX_ARR[$C]
    IF (d > $DMIN) AND (d < $DMAX) {
      $S = S_ARR[$C]
      $F = F_ARR[$C]
      
      $t.feedrate.cutting.userdefined = true
      $t.feedrate.cutting.value = $F
      
      $t.spindlespeed.userdefined = true
      $t.spindlespeed.value = $S
    }
    $C = $C + 1
  }
    
  }
  
  }

 

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

Для ускорения макроса можно добавить после:

      $t.feedrate.cutting.userdefined = true
      $t.feedrate.cutting.value = $F
      
      $t.spindlespeed.userdefined = true
      $t.spindlespeed.value = $S

строчку:

$C = SIZE($DMIN_ARR)

Данная строчка завершает цикл While после подмены режимов в траектории

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

Всем добрый вечер. Подскажите пожалуйста как пользоваться командой PICK? Она выдает строчку  непонятных цифр. Мне нужно узнать координаты центра окружностей, которые я строю в редакторе кривых. В режиме "эхо", при указании мышкой места для окружности выдается это команда. Я понимаю, что выдаются координаты, но не пойму какие.

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

Всего доброго. Помогите с макросом, почему-то всегда предлагает список с первым вариантом (CASE 12), хотя по макросы должен предложить выбор по второму варианту (CASE 20).Сам макрос:

 

REAL s = 15
REAL Q = 1

If $s < 11,9 {
 $Q = 12
} ELSEIF $s > 12,1 AND $s < 19,9 {
 $Q = 20
} ELSE {
 $Q = 100
}

    SWITCH $Q {

    CASE 12


          INT I=1
        STRING LIST St={'12','35','40','50'}
           WHILE $i !=0 {
              $I=INPUT CHOICE $St ' Выберите значение'
              SWITCH $I {

                 CASE 0
            REAL a = block.limits.zmin+30

            MODE WORKPLANE_EDIT START "СК"
            MODE WORKPLANE_EDIT POSITION
            MODE POSITION CARTESIAN Z "0,0+a"
            POSITION APPLY
            MODE WORKPLANE_EDIT FINISH ACCEPT
            FORM BLOCK
                EDIT BLOCK ZMIN "block.limits.zmin-a"
                BLOCK ACCEPT
            BREAK

    }


    CASE 20


          INT I=1
        STRING LIST St={'20','50','60'}
           WHILE $i !=0 {
              $I=INPUT CHOICE $St ' Выберите значение'
              SWITCH $I {

                 CASE 0
            REAL c = block.limits.zmin+30

            MODE WORKPLANE_EDIT START "СК"
            MODE WORKPLANE_EDIT POSITION
            MODE POSITION CARTESIAN Z "0,0+c"
            POSITION APPLY
            MODE WORKPLANE_EDIT FINISH ACCEPT
            FORM BLOCK
                EDIT BLOCK ZMIN "block.limits.zmin-c"
                BLOCK ACCEPT
            BREAK
}
}
    }

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

If $s < 11,9 {
 $Q = 12
} ELSEIF $s > 12,1 AND $s < 19,9 {
 $Q = 20
} ELSE {
 $Q = 100
}

Замените запятые на точки.

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

Всем добрый вечер. Подскажите пожалуйста как пользоваться командой PICK? Она выдает строчку  непонятных цифр. Мне нужно узнать координаты центра окружностей, которые я строю в редакторе кривых. В режиме "эхо", при указании мышкой места для окружности выдается это команда. Я понимаю, что выдаются координаты, но не пойму какие.

С командой pick невозможно ничего сделать. Координаты можно узнать дважды нажав на дугу, появится окно с координатами центра. Чтобы извлекать это все автоматически нужно записывать в отдельный файл эти координаты и затем извлекать в переменные.

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

Всё же хочется доработать макрос до более удобного состояния.

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

(эт я недоперевёл справку к постпроцессору - и самому вот недавно надо было почитать более подробно

и самое смешное - перевёл как раз до того момента, который был нужен)))  )

 

В общем, - подскажите, как в следующей части макроса задать текущий диаметр отверстий через переменную ?

 

ACTIVATE FEATURESET "Отверстия D6,0" FORM EDITHOLE
EDIT FEATURESET ; SELECT ALL
EDIT FEATURESET ; FEATURE SELECTED COMPONENT SELECTED UPPERDIA "6,0-1"
EDIT FEATURESET ; FEATURE SELECTED APPLYAXIS
FORM CANCEL EDITHOLE

 

Эта часть макроса уменьшает текущий диаметр отверстий активного 2D Элемента на 1мм

А хотелось бы, чтобы вместо цифры 6 - была переменная, равная выбранному диаметру.

 

Спасибо )

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

Всё же хочется доработать макрос до более удобного состояния.

Показать содержимое  
Real $Diameter = 1
Real $NewDiameter = 1

ACTIVATE FEATURESET ;
EDIT FEATURESET ; DESELECT ALL

FOREACH $f in components(entity('featureset','')) {

$Diameter = $f.Diameter
$NewDiameter = $Diameter - 1

EDIT FEATURESET ; SELECT $f.name
EDIT FEATURESET ; FEATURE SELECTED COMPONENT SELECTED UPPERDIA $NewDiameter
EDIT FEATURESET ; DESELECT ALL

}

 

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

@Konstantin_VP  спасибо, всё работает !

 

Теперь эта часть макроса выглядит вот так:

// Уменьшение диаметра 2D-Элементов (и потом инструментов) для Посадочных (классных) Отверстий на 1 мм
Real $Diameter = 1
Real $NewDiameter = 1
BOOL option7 = FALSE
$option7 = QUERY "Имеются ли Посадочные (классные) Отверстия?"
IF $option7 {
	ENTITY LIST $Selected_Featuresets = INPUT ENTITY MULTIPLE FEATURESET "Выберите нужные 2D Элементы"
	FOREACH $fs in $Selected_Featuresets {
		ACTIVATE FEATURESET $fs.Name
		FOREACH $feat in components($fs) {
			$Diameter = $feat.Diameter
			$NewDiameter = $Diameter - 1
			EDIT FEATURESET ; SELECT $feat.name
			EDIT FEATURESET ; FEATURE SELECTED COMPONENT SELECTED UPPERDIA $NewDiameter
			EDIT FEATURESET ; DESELECT ALL
		}
	}
}

 

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

Проверил полный макрос - всё работает теперь как надо. Как и задумывалось изначально и как хотелось.

Только при наличии большого кол-ва отверстий разных диаметров - постоянные вопросы "Сверлить эти отверстия насквозь?" немного утомляют )

 

Может есть какой-то способ использовать параметр отверстий "Depth_Type" ?

H1.png.a0d889d7e8ce4147b7fed9eb6557d988.png

 

Чтобы макрос определял тип отверстий Through (сквозное), Blind (глухое)

это ещё можно выбрать вот здесь:

 

H2.png.f6cbf7b5205d42011d49dcf20ab83be1.png

 

и на основании этого сам выбирал нужный тип операции в траектории сверления ?

 

H3.png.67f1582acbaec704d3bdd10481bacd06.png

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

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

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

 

Сначала спрашивает - обработать Все отверстия ?

1.png.885087e0ba0bd1ec60d96c737f3bcfec.png

 

Соглашаемся,чтобы обработать все отверстия.

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

то нажимаем Нет,  и вручную выбираем внутренние поверхности отверстий.

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

 

2.png.a58119f32fb2d719480aab23d408d718.png

 

 

Потом макрос спросит -

3.png.ac7660a3d874e651e6276d20a64f47da.png

 

Если ответить Да - появится окно с выбором 2D Элементов, которые нужно уменьшить в диаметре на 1 мм

 

4.png.652c45b8f5034ac989b23745a7708e69.png

 

Это для последующей расточки.

Если таких отверстий нет - тогда нажать Нет при запросе.

 

 

И потом появится последний Вопрос -

 

5.png.b67bad587ce753eda64e897cb3eb043a.png

 

Если нажать Да - все отверстия будут просверлены насквозь по имеющимся в папке для данной СК 2D-элементам.

Больше никаких запросов появляться не будет.

 

Также можно нажать Да, если есть, например, 10 видов разных отверстий - и только один какой-то диаметр

нужно сверлить не насквозь - проще изменить после макроса одну траекторию, чем нажимать 10 раз подтверждение сверления насквозь.

 

Если нажать Нет - то для каждого диаметра отверстий будет появляться такой запрос:

 

6.png.81aa496530728d7a5ef76ba410dcc8ae.png

 

 

В конце макроса все траектории во всех папках переименуются  по порядковому номеру и по имени инструмента.

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

 

PS: у макроса есть один минус - он преобразует составные отверстия в простые, только если отверстие имеет всего 2 элемента.

Например - если есть цековка, или фаска.

Если составных элементов отверстия больше двух - тогда удалите абзац в макросе с именем

Цитата

// Преобразование составных отверстий в простые

 

И сам макрос:  Holes3.zip

 

 

 

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • lem_on
      ну с дуру известно что сломать можно.
    • Viktor2004
      руку привязки так сломать легко
    • lem_on
      По моему вполне логично если станок вывалится в ошибку если рука не доехала до места. У меня так же если кулачки или деталь на пути, просто пихаеш ее до места и станок опять активен. Но нынешние пановья даже не могут написать модель станка.
    • Viktor2004
      Я согласен что скорее всего проблема механическая Но если логика прописана криво и возможно не предусмотрела остановку в промежуточном состоянии, разве не логично будет попробовать принудительно подав напряжение дернуть эту руку вверх-вниз? Возможно то что туда попало выпадет  
    • Guhl
      Если оставить за скобками вопрото том, что до м19 работает нормально, а после нет, то вы не считали сколько у него реально импульсов на оборот? с помощью стороннего плк, например  А если ориентацию м5 снимать, а не м20?
    • lem_on
      Что это за станок такой в котором сразу ладер ковырять надо, даже не смотря на возможность механической проблемы? Или профдеформация?
    • Viktor2004
      не сразу я понял в чем вопрос. Долго соображал что такое режим управления скоростью. При завершении ориентации PMC снимает сигнал G70.6 ? И если он после снятия сигнала продолжает удерживать шпиндель, при каких условиях эта ориентация все же снимается? После нажатия аварийного грибка или еще как?
    • Viktor2004
      Ладдер пришлите. Будем принудительно пробовать поднимать и опускать
    • streamdown
      Коллеги приветствую! IPS 8. Подскажите пожалуйста, кто какое серверное железо использует? Интересуют параметры при одновременной работе, ну например, 400 пользователей онлайн
    • gudstartup
      так он так и позиционируется по m19 pmc выдает g70.6 а чпу отвечает f45.7 но ориентацию и смещение в 4077 он отрабатывает нормально шпиндель встает ровно и смена происходит хорошо. вопрос почему после ввода команды управления скоростью он все еще продолжает контролировать число импульсов между нуль метками хотя в принципе уже должен отменить позиционный контроль и просто считать обороты по 0 метке как он это делает без М19? это все понятно но почему оно продолжает проверять это после завершения ориентации мне непонятно
×
×
  • Создать...