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

Макросы в 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 пользователей

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




  • Сообщения

    • fenics555
      штифты разрезные- понятно, что примонтаже изменяют размер по отверстию.  Резиновое кольцо уплотнительное- оно меняет не только диаметр наружный и внутренний, но и толщину. именно долго открываются сборки, содержащие эти изделия.  можно конечно и без нее обходиться, но мы уже привыкли. Только грузятся сборки очень долго, но это врятли из-за гибкости.
    • Viktor2004
    • UkulyAlex
      Добрый день. Работаю в t-flex 16. Имеется приспособление в котором более 150 позиций деталей, спецификация сделана по структуре изделия. Возникла необходимость изменения конструкции, некоторые детали из середины списка пришлось удалить. После обновления отчёта позиции сдвигаются, как сделать чтобы оставались на месте, т.е. был пропуск позиций в середине раздела "Детали"? 
    • статист
      Спасибо за цитату, полезная для меня   Я знал до этого способ использовать атрибуты LATT для задания направления, но они применялись только к построенным линиям. Если например рассматривать созданный элемент E, 1, 2, где для задания применяются только два узла, то тут уже никак не поменяешь положение третьего узла, так как его нет. Нужно тогда создавать отдельно направляющий узел  и задавать его через EMODIF,EID, 3, NID.   Но получается без создания узла, задать направление нельзя. В настране по крайней мере так можно. А в ансисе нужно плодить лишние узлы. Грустно)
    • FROST_R6
      Есть монорельса размером 12м. Хочу проверить перемещение при нагрузке на середину в 2 тонны. Саму монорельсу фиксировать не нужно, поэтому я поставил ее на 2 призмы и зафиксировал их. Расчет не получается провести - сначала программа пишет, что "деформация в данном исследовании слишком значительная и нереалистичная, хотите остановить программу и перезапустить исследование с меньшими нагрузками или с более жесткой моделью?". Я выбираю "нет". После долгого процесса расчета появляется сообщение о том, что "Состояние равновесия не было достигнута" и "Анализ больших смещений был остановлен до сохранения результата", появляется надпись о сбое расчета. 
    • maxx2000
      подгружаются при повторном открытии сборки или при первой вставке? Ну и гибкость сначала вызвала вопрос, но я не заметил существенной задержки при выборе способа вставки с ней или без неё.
    • Ветерок
      Я не понял зачем в этих деталях задана гибкость. При том, что новые значения размеров определяются не измерением, а вводом вручную.
    • BOJIOD9I
      Добрый день! Подскажите куда внести изменения на стойке fanuc 0i, чтобы когда вводишь коррекцию в графу износа она не отображалась на координатах. Пример: Резец точит размер 100 мм, по факту получается 101мм. В графе износ вносишь -1.0 мм. В итоге по координатам будет показано что резец точит 99мм, а по факту станет 100мм как нужно было.
    • ДОБРЯК
      Это есть в документации. Может быть эта информация будет полезна не только вам. https://www.mm.bme.hu/~gyebro/files/ans_help_v182/ans_elem/Hlp_E_BEAM188.html В этом разделе подробно написано Очень подробное описание этого элемента. Это элемент Тимошенко. Это надо учитывать используя этот элемент в расчетах. Остается только один вопрос зачем менять номер узла, если сразу можно задать нужный номер и менять его координаты?  
    • fenics555
      подгружаются эти детали очень долго. возможно что конфликтует в настройках...
×
×
  • Создать...