eksodus

Макросы в Power Mill

367 сообщений в этой теме

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

 

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

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

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

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


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

@Konstantin_VP  - спасибо большое !

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


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

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

Показать содержимое  
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  
1 пользователю понравилось это

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


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

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

 

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

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


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

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

 

 

macro.zip

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

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


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

 

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

 

 

 

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

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


Ссылка на сообщение
Поделиться на других сайтах
В 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  
1 пользователю понравилось это

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


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

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

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

строчку:

$C = SIZE($DMIN_ARR)

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

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

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


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

Всем добрый вечер. Подскажите пожалуйста как пользоваться командой 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  
1 пользователю понравилось это

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


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

@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
		}
	}
}

 

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


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

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

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

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

 

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

H1.png.a0d889d7e8ce4147b7fed9eb6557d988.png

 

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

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

 

H2.png.f6cbf7b5205d42011d49dcf20ab83be1.png

 

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

 

H3.png.67f1582acbaec704d3bdd10481bacd06.png

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

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


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

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

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

 

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

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

 

 

 

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

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


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

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

Жизнь вот заставила изучать макросы. Работы навалилось, хочу автоматизировать процесс.

Вроде курю форумы, хелпы, но споткнулся на элементарном. Макрос ругается и выдается ошибку. Не могу понять синтаксис. Я в программировании ноль пока

Суть в том, создаю переменную, создаю папку траекторий, переименовываю её по имени переменной, пытаюсь активировать, но выскакивает ошибка, хотя папка переименована.

Поможите))

 

 

STRING Mess = $dlinaX + " - " + $dlinaY + " _" + $nomer_zakaza + " - " + $Model_name

CREATE FOLDER "Toolpath" ; 
RENAME FOLDER "Toolpath\Папка 1" $Mess
ACTIVATE FOLDER $Mess

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


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

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

Жизнь вот заставила изучать макросы. Работы навалилось, хочу автоматизировать процесс.

Доброго

у меня всё также начиналось )

10 часов назад, scorpion1007 сказал:

Суть в том, создаю переменную, создаю папку траекторий, переименовываю её по имени переменной, пытаюсь активировать, но выскакивает ошибка, хотя папка переименована.

Поможите))

у меня ваш макрос на 4 строки вообще ничего не создаёт - сразу ошибка

это полная версия вашего макроса ?

и версия повермилла какая ?

 

и вы создаёте не одну а 4 переменные

первые 2 вроде бы размеры заготовки, верно ? а последняя имя модели

откуда же брать значение переменной $nomer_zakaza  ? как её вычислять собираетесь ?

 

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


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

RESET LOCALVARS
//Вычисление размеров
EDIT MODEL ALL DESELECT ALL
EDIT BLOCK RESET

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)


//***** Вычисление пути ****это кусок кода с нэта не совсем понимаю, что он делает
STRING ModelPath = folder('Model')[0].Path
STRING Model_name=folder('Model')[0].Name
INT Pos = Position($ModelPath,"Фрез\")
$ModelPath=substring($ModelPath,0,$pos+5)

string scname = " Введите номер заказа"
STRING $nomer_zakaza = input $scname
//$err = ERROR nomer_zakaza

 

//**********  Запись в файл размера заготовки ***********
STRING Mess = $dlinaX + " - " + $dlinaY + " _" + $nomer_zakaza + " - " + $Model_name
STRING Patt = $nomer_zakaza + " - " + $Model_name

CREATE FOLDER "Toolpath" ; 
RENAME FOLDER "Toolpath\Папка 1" $Mess

CREATE FOLDER "Pattern" ; 
RENAME FOLDER "Pattern\Папка 1" $Patt

 
//***** Вычисление фрезы 20 мм ****

ACTIVATE FOLDER $Mess
FORM STRATEGYSELECTOR
STRATEGYSELECTOR STRATEGY "C:/Users/Sergey/AppData/Local/Autodesk/PowerMill/My-Strategies/20end_neapol.ptf" NEW

IMPORT TEMPLATE ENTITY TOOLPATH TMPLTSELECTORGUI "C:/Users/Sergey/AppData/Local/Autodesk/PowerMill/My-Strategies/20end_neapol.ptf"
EDIT BLOCK RESET
ACTIVATE FOLDER $Patt
CREATE PATTERN ;

STRING Patt20 =  " 20endmill- " + $Model_name
RENAME Pattern "1" $Patt20
EDIT LEVEL "2.0" SELECT ALL
EDIT PATTERN ; INSERT MODEL
EDIT MODEL ALL DESELECT ALL
EDIT TOOLPATH "1" CALCULATE


//***** Вычисление фрезы 60 градусов ****
ACTIVATE FOLDER $Mess


.......итд по аналогии все четыре траектории 

 

//***** Создание и запись NC ****

EXPLORER SELECT FOLDER $Mess NEW
ACTIVATE FOLDER $Mess
EDIT FOLDER $Mess NCPROGRAM
ACTIVATE NCPROGRAM $Mess KEEP NCPROGRAM ;

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

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


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

ACTIVATE FOLDER $Mess

ошибка в этой строке

у вас переменная Mess - содержит только ИМЯ папки

а вы пытаетесь обратиться к папке просто по имени - БЕЗ пути папки, отсюда и ошибка

 

то есть вам нужно задать ещё одну переменную, содержащую ПУТЬ к папке, и потом имя папки

и уже активировать папку по этой новой переменной

 

например вот так:

STRING FolderPath = "Toolpath\$Mess"
ACTIVATE FOLDER  $FolderPath

 

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

А иначе милл не будет знать к какой папке обращаться

 

PS: проделав тоже самое к папке траекторий и шаблонов - макрос всё равно выдаёт ошибку - он не может найти слой 2,0

откуда вы его взяли ? он же в макросе никак не задаётся

 

и что за шаблон 20end_neapol.ptf  ? какая это траектория в милле?

 

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

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


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

 

например вот так:

STRING FolderPath = "Toolpath\$Mess"
ACTIVATE FOLDER  $FolderPath

 

 

@eksodus  Спасибо большое. Надеюсь Вам:angel: уготовано место в раю за то, что помогаете новичкам:worthy: Сколько раз вы меня уже выручали. 

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

PS: проделав тоже самое к папке траекторий и шаблонов - макрос всё равно выдаёт ошибку - он не может найти слой 2,0

откуда вы его взяли ? он же в макросе никак не задаётся

 

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

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


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

Люди добрые.

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

Выскакивает ошибка до того,  как импортировалась модель и до того пока записывается NC-шка.

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

Строки кода в которых выскакивает ошибка:

IMPORT MODEL FILEOPEN

RESET LOCALVARS
DELETE WORKPLANE ALL

.....

 

и

....

ACTIVATE NCPROGRAM $Mess KEEP NCPROGRAM ;
TEXTINFO ACCEPT

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

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


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

IMPORT MODEL FILEOPEN

STRING path = ""
$path = FILESELECT "Import model file"
IMPORT MODEL $path

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


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

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

Он скорее идёт как дополнение к основному макросу сверления, чуть выше в сообщениях.

Но можно использовать и сам по себе.

 

Сам макрос:  RenameTP.zip

 

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

После запуска будет запрос -

 

555.png.ceb809ef06eced0b562391bdfefff657.png

 

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

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

 

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


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

Прошу помощи в переделке макроса от милла 2017-2018-2019, для милла 2016 !

если такое конечно возможно

 

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

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

 

1) клацаем F2, появляется окно ориентирования, потом выбираем мышкой любую поверхность и опять клацаем F2

результат будет вот такой:

 

201.png.7df67037e1127a424aea66eb9d5704d9.png

 

 

Если нажать Нет - можно опять выбрать другую поверхность, и опять нажать F2 - макрос покажет тогда уклон для другой поверхности, и тд

Если нажать Да - макрос закроется.

 

Для милла 2017-2018-2019 макрос работает отлично.

А вот в милле 2016 выдаёт вот такую ошибку -

 

202.png.41a0504100af91eb741c4d3ff14f70b1.png

 

 

Может кто-нибудь знает - можно ли этот макрос адаптировать для милла 2016 ?

Буду благодарен за помощь.

 

Спасибо.

 

Макрос вот тут: Draft_Angle.zip

 

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

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


Ссылка на сообщение
Поделиться на других сайтах
В 24.04.2018 в 08:07, impact сказал:

STRING path = ""
$path = FILESELECT "Import model file"
IMPORT MODEL $path

Спасибо большое:good:

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


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

можно ли этот макрос адаптировать для милла 2016

Нет. $widget ввели в PM2017.

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

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


Ссылка на сообщение
Поделиться на других сайтах
В 27.04.2018 в 00:58, impact сказал:

$widget ввели в PM2017.

ясно

В 27.04.2018 в 00:58, impact сказал:

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

вот что нашёл на сайте автодеска -

If anyone need a widget value in a old version you can do this...


real $XYangle = "" // your store variable


//create a temp file to record 

tracefile open c:\temp\widget_temp.txt
print formvalue Calc.Shell.LineTab.MeasureDiffXY // your widget
tracefile close


// read temp file
FILE OPEN "c:\temp\widget_temp.txt" FOR READ AS GetValue
FILE READ $XYangle FROM GetValue
FILE CLOSE GetValue

 

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

 

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

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


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

можно это как-то прикрутить к макросу

Но есть несущественное ограничение, опция "Включить эхо" (Echo Commands) должна быть отключена. В макросе я добавил отключение, но нужно иметь ввиду эту особенность.

Draft_Angle.mac

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

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


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

Но есть несущественное ограничение, опция "Включить эхо" (Echo Commands) должна быть отключена. В макросе я добавил отключение, но нужно иметь ввиду эту особенность.

ух, работает теперь и в 2016 милле, спасибо большое !

 

PS: хорошо что тут на форуме есть звуковые оповещения о новых сообщениях или ответах

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

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


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

@eksodus , поправил немного макрос от @impact . Добавил паузу после появления окна "Направление", убрал лишние строчки, весь код поместил в подфункцию и зациклил её через Диалоговое сообщение показа угла (да-продолжить, нет- прекратить).

Показать содержимое  
FUNCTION MAIN {

FUNCTION Measure {

	MEASURE CLEAR_ALL MODE VECTOR START MEASURE DIRECTION
	MODE DIRECTION ALIGN GEOM
	VIEW MODEL ; SHADE UNDERCUT //Закраска модели: Проверка поднутрений
	
	MACRO PAUSE "Нажмите 'Продолжить' после выбора"

//объявление переменных
REAL $V_I= 0
REAL $V_J= 0
REAL $V_K= 0

string $path = macro_path(0) + "\Measure.txt" //путь

ECHO OFF DCPDEBUG UNTRACE COMMAND ACCEPT

tracefile open $path  //открытие файла Measure.txt для записи
print formvalue DirectionInput.DirectionFrame.I // I
print formvalue DirectionInput.DirectionFrame.J // J
print formvalue DirectionInput.DirectionFrame.K // K
tracefile close      //закрытие файла Measure.txt для записи

//открытие файла GetValue для чтения
FILE OPEN $path FOR READ AS GetValue
FILE READ $V_I FROM GetValue
FILE READ $V_J FROM GetValue
FILE READ $V_K FROM GetValue
FILE CLOSE GetValue  // Закрытие $GetValue

REAL Calc =0

IF $V_K == 0 {
	$Calc=90
} ELSE {
	$Calc=sqrt(($V_I*$V_I)+($V_J*$V_J))
	// PRINT $Calc
	$Calc = Atan($Calc/$V_K)
    if $Calc > 180 {
		$Calc=$Calc-180
	}
}

STRING $Qry = "Draft angle : " + $round($Calc,3) +crlf+ "Продолжить измерения?"
BOOL Ret = 0
$Ret = QUERY $Qry

IF $Ret  {

	//Вызов функции
CALL Measure()

} ELSE {

	DIRECTION ACCEPT
  VIEW MODEL ; SHADE NORMAL //Обычная закраска
}

} // Func Measure close

} // // Func Main close

 

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

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


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

поправил немного макрос от @impact .

спасибо !

тоже хороший вариант для 2016 милла

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

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


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

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

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

Нужно вычислить размер кармана, чтоб загрузить соответствующий инструмент. К примеру, если карман шириной больше 20 мм, то загрузить фрезу диаметром 20 мм. Если меньше, то фрезу диаметром 10. Если меньше 10, то диаметр фрезы 4 мм.

Карманы могут быть разные, от двух метров до 5 мм. Нужно делать их выборку.

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


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

И ещё вдогонку вопрос. Как можно передать данные из имени слоя в переменные? Слой с именем 71300050 к примеру. Нужно, со слоя, начинающего с цифры 7 сделать две переменные xSize =1300 и ySize=50. Размеры  кратны 1 мм.

Я не силен, честно сказать, в VB

 

 

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


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

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

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


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

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

17 часов назад, scorpion1007 сказал:

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

заготовка в милле считается по всей модели

если выделены какие=то поверхности - то по крайним точкам этих поверхностей по всем осям

 

В 19.05.2018 в 01:28, scorpion1007 сказал:

Нужно вычислить размер кармана, чтоб загрузить соответствующий инструмент. К примеру, если карман шириной больше 20 мм, то загрузить фрезу диаметром 20 мм.

проще в макрос ввести команды по созданию нужного инструмента

или макрос будет работать не у всех (названия инструментов у всех разные)

 

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

 

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

REAL $WidthY = ($block.limits.ymax-$block.limits.ymin)

так можно получить размер ширины паза по Y

и потом переменную WidthY использовать далее в макросе через оператор IF-ELSE

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

 

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

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

 

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

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


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

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

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

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

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


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

Войти

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


Войти сейчас

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

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



  • Сообщения

    • TBC
      Эти люди готовы были перечислить 1000 долларов в начале и в середине 2017г. Зарегистрировались как инвесторы, но я им написал, что приму от них деньги, только после того, как таких желающих будет столько, чтобы сумма была бы 50 000 долларов и больше. Для того, чтобы я мог ее вложить в туристическую недвижимость за рубежом. Но больше желающих не нашлось, поэтому и деньги я у них не взял. А теперь вот уже думаю, а стоит ли вообще инвестиции привлекать? Решил пока довести до рабочего состояния проект, а там посмотрим. Регистрируйтесь по почте: turta@narod.ru 1. ФИО 2. Город 3. Где и кем работаете. Ну и какую сумму хотели бы вложить. А там посмотрим. Все равно ничем не рискуете.  
    • Fedor
      Так вложите в себя и свои идеи если это не лохотрон :)
    • jtok
      Простите, а мою долю тоже можете зарезервировать?
    • TBC
      Был бы конечно, если бы получил грант от государства, или частные инвестиции в размере, которые позволили бы мне привлечь специалистов для создания облачной CAD/CAM. Хирштик начал привлекать инвестиции в конце 2012г., а уже в 2015г. его капиталиазация оценивалась под миллиард. А проект СПИ, куда как круче! Дык никто не вложил. Платить то кому? Есть два человека, пожелавшие инвестировать по 1000 долларов, но я у них эти деньги пока не взял, но доли за ними зарезервировал. Я чего с ними делать то буду? Я и сам могу 2000 долларов вложить, только не в лохотрон. Уже наелся.  
    • karachun
      Все ходы записаны. Для несимметричных тел с уравновешенными нагрузками (давление, температура) смотри здесь: https://www.digitalengineering247.com/article/free-floating-fea-models/
    • Fedor
      Главное чтобы было к кому идти домой http://www.urod.ru/news/92002/  . Им еще скоро ИИ приделают и можно будет в подкидного играть. И даже шахматы. А еще лекции читать. Например по алгебре  :)
    • Kelny
      Можно наследовать из сборки в модель. Можно использовать, например инструмент ПОЛОСТЬ. Можно использовать эскизы/геометрию одной детали для изменений в другой детали при редактировании детали в контексте сборки. Вариантов масса.   Начните с меню Справка(?)-Учебные пособия Solidworks
    • sssdos
    • jtok
      Конечно нет! Не барское это дело, тем более, что их целых шесть штук! Попросите кого-нибудь, кто там мимо вас проходит вот сейчас. Ну или на форуме вот например.   А вы представьте, что оно все-таки есть, чтобы не моделировать воду. И закрепите свой куб за вершинку.   А если все же захочется без крепления - то воду придется моделировать. И закреплять. Блин - и у воды его нет - но есть у водоема, в котором вода! Так, водоем ограничен дном и берегами - может у них есть? Да, это же планета Земля! А есть закрепление у планеты??! И у планеты нет, если подумать - она летает вокруг Солнца, а оно - вокруг черной дыры во Млечном пути, а Млечный путь с дырой вообще куда-то расширяется уже 14,5млрд.лет(((
    • Blurp
      Да, там угол и некрасивый переход. И странно, что ты не видишь этот шлак. Точно! Спутал тебя с @Angels.Lexx