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

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

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



  • Сообщения

    • Snake 60
      Скорее всего исправляли в конкретной сборке, для конкретных тел. Насколько я помню, надо в самом эскизе профиля заполнить свойство Description
    • Snake 60
      Делаете дырку в свае - вставляете в нее трубу и 2 человеко-силы крутят сваю ) Дёшево и сердито и не нужен никакой планетарный редуктор ))
    • gudstartup
      вы всегда ищите свой путь или будете делать то что вам советуют? с самого начала прежде чем приступать к экспериментам вам нужно было вынуть носитель и сделать образ. diskcopy делает копию гибкого диска на другой а вам надо сделать образ жесткого диска или карты памяти. делайте как советует @Viktor2004 иначе еще чего нибудь сломаете или вам станок не нужен и вы его приобрели для экспериментов ? вот а печатной машинке из прошлого нельзя а вот на синумерике можно - удивительные вещи в настоящем происходят!! на 100 % уверен что там не модуль а либо писимиси ай либо жд @mircomax81 хотите работать в дос почитайте помощь по командам 
    • PuKoLLleT
      Доброго дня всем. Поделитесь опытом,раньше такое не доводилось делать. На торце фланца нужно сделать  восемь отверстий ф17H7 на токарно-фрезерном станке с осью Y ,имеется ManualGuide.В моем понимании нужно просверлить,а затем торцевой фрезой расточить нужный диаметр.Получится такой фокус,или надо разверткой доводить нужный размер?  Стойка Fanuc 0i-Tf.
    • Snake 60
      Всё верно, я даже русификатор делал для него (ушло на это где-то около года). Хороший софт был, я всех знакомых на него подсадил в свое время :) У меня даже где-то образ на виртуалке лежит с SW2014+MechSoft, Жаль, что автодеск его поглотил, а не DS :( А по сути вопроса, проектировал двухступенчатый планетарный редуктор в свое время. Что было нужно: Справочник по планетаркам (автора не помню, если надо поищу), из софта MathCAD + GearTeq (софтина идет вместе с GearTrax, только рассчитывает и моделирует несколько зацеплений согласно выбранной схеме, в том числе планетарки) Ой и ошибаетесь. Звездочки - не равно зубчатые колеса в планетарке) Мы намучились с малой точностью изготовления на эл.эрозии, а Вы лазером ))) Был собран опытный образец редуктора с незакаленными деталями, чисто проверить геометрию, отладить сборку. Так потом начальство этот редуктор сказало испытать в бою, как я не противился)) Помер за пару дней интенсивных нагрузок ))) Материал, термообработка и точности изготовления решают )
    • Snake 60
      @Тихоход  Ещё один вариант - изучать программирование и писать свою программу/макрос. Вот пример конфигуратора двери: https://www.youtube.com/watch?v=wv4HryWQBSk
    • mircomax81
      Посредством Diskcopy можно сделать адекватную копию на флоппи диск?
    • Andrey_kzn
      Да, ведь советовали автору вытащить жёсткий диск и сделать образ. Неужели самому не интересно, как устроен этот старый промкомпьютер? Там может стоять как жёсткий диск, так и CF-карта, или же Disc-on-chip или Disc-on-module.  Как-то очень давно, на подобном промышленном оборудовании (большая печатная машина) я не смог перенести  ПО с родной CF - карты на другую, такого же размера но другой фирмы. Была также станочная оболочка под досом.  Образ я делал Нортон гостом, развернул его на другую CF-карту без проблем. Машина загрузилась нормально и работала ровно 2 дня, на неродной CF-карте,  потом зависла, и отказалась загружаться. Пришлось вызывать сервисника. От него мы узнали, что нельзя просто так взять и заменить карту  - носитель системного ПО, на другую. А полезли мы туда, так как руководство захотело печатать отчёты по работе машины. В станочном ПО такая функция была. Вот только принтер надо было купить у фирмы - производителя этой самой машины. В попытках заставить работать другой принтер мы редактировали файл  AUTOEXEС.BAT, на предмет загрузки драйвера принтера, ничего не получилось, зато перестали открываться некоторые страницы станочного ПО.  Образ у нас был давно снят, и мы развернули его на другую карту памяти. Родную карту я трогать не стал (как чувствовал, что нельзя ). Сервисник восстановил ПО с архивной дискеты на родную карту памяти, и всё заработало. Дискеты с архивами ПО шли вместе с документацией к машине.  Там были дискеты с Досом, станочной оболочкой, параметрами приводов, программой ПЛК. Он же и предупредил нас о предельно аккуратном обращении с родной картой памяти, и посоветовал немедленно сделать образы с архивных дискет, что мы сразу и проделали.. Вот такой сюрприз от машины эпохи Дос.
    • Борман
    • gudstartup
      а ведь все работало...
×
×
  • Создать...