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

Как создать массив?


IBV

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

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

Правда на каждую "позицию" (шаг) необходимо сделать

по 3 дополнительных операции.

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


Что-то не получилось у меня, на пункте

Выдал: The specified string contains a syntax error

Syntax error between here (List modifable) pts: For and here $a From 0 To n: By 1;

Скопировал не полностью

Вот примерно такой формат у цикла

Loop {

For $a From 0 To n: By 2;

Append $a;

}

Первую строку я пропустил

А вообще там создании аттрибута есть кнопка (Extended Text Entry)

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

Тот вариант цикла что я привел соосветствует пункту

Loop a specified number of times

Да по поводу поворота через равные углы

Я бы решил эту задачу просто интерполяцией

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

Соответственно обратной интерполяцией по углу можно получить парамер

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

Построения Фракталей с помощью KBE

1)Создайте текстовый файл например kox_poligon.dfa

2) Скопируйте туда следующий код

#! NX/KF 4.0



DefClass: kox_polygon(ug_base_part);



(Integer Modifiable Parameter) num_iter: 3;

(Number Modifiable Parameter [mm]) rad: 17;



(Vector) v_norm: Vector(0,0,1);



(List Modifiable) start_pt_list: vertex_pts:(3);

(List Modifiable) start_pp_list: Loop{ For $p From 1 To length(start_pt_list:);

									   collect

										 If($p<length(start_pt_list:))

										 Then { nth($p, start_pt_list:), nth(1+$p, start_pt_list:) }

										 Else { nth($p, start_pt_list:), nth(1,	start_pt_list:) };

									 };





(List Uncached Modifiable) list_pt: recursive_vertex_pts:(start_pp_list:, num_iter:);







(List Uncached Modifiable) lines: loop{

					for $p in list_pt:;

					for $l is ug_createInstance( { class, ug_line, Start_point, nth(1, $p), End_point, nth(2, $p) } );

					collect $l;

									  };



(List Uncached Modifiable Parameter) demandValue:  { lines: };









######################



(list method) vertex_pts:(Integer $npt)

@{

  $dfi << 360/$npt;

  $data << loop{

				for $i from 1 to $npt;

				collect Point(rad:*sin($i*$dfi),rad:*cos($i*$dfi),0);

			   };



  $data;

};







(vector method) cross:(vector $v1, vector $v2)

@{

 $vx<<LocalY($v1)*LocalZ($v2)-LocalY($v2)*LocalZ($v1);

 $vy<<LocalX($v2)*LocalZ($v1)-LocalX($v1)*LocalZ($v2); 

 $vz<<LocalX($v1)*LocalY($v2)-LocalX($v2)*LocalY($v1); 

Vector($vx, $vy, $vz);

};







(list method) recursive_vertex_pts:(List $ppt, Integer $depth)

@{ 

  $data<<If($depth<=0 || length($ppt)=0)

	Then $ppt

	Else

		 Loop{

			 For $p In $ppt;

			 For $pt1 Is nth(1,$p);

			 For $pt2 Is nth(2,$p);

			 For $v   Is $pt2-$pt1;

			 For $vn  Is cross:(V_norm:, $v);

			  

			 append @{ $ptm1<<$pt1+1/3*$v; $ptm2<<$pt2-1/3*$v; $ptm<<$pt1+1/2*$v+sqrt(5)/6*$vn;





						$ll1<<recursive_vertex_pts:({{$pt1, $ptm1}}, $depth-1);

						$ll2<<recursive_vertex_pts:({{$ptm1, $ptm}}, $depth-1);

						$ll3<<recursive_vertex_pts:({{$ptm, $ptm2}}, $depth-1);

						$ll4<<recursive_vertex_pts:({{$ptm2, $pt2}}, $depth-1);

						$ll1+$ll2+$ll3+$ll4;

					  };

			 };





  $data;

};

3) В UG запустите Tools->KF->DFA Manager

4) В пункте New Dir дабавте директорий где лежит файл dfa

5) В правом списке (Choose Files For Syntax Check) появится список dfa файлов лежащих в выбранной директории

6) Выберете созданный dfa файл и добавте в нижний список (Collect of files for Syntax Check)

7) Нажмите Apply

8) Gthtqlbnt d yfdbufnjh KBE , встаньте на узел root и нажмите правую кнопку мыши , из списка выберете Add child Rule

9) Ввведите что-нибудь в поле name а в поле Name Filetr наберите k*

10) Из списка выберете kox_poligon

11) Apply

Аттрибуты созданного класса rad и num_iter можно редактировать

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

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

Не хватает файла det1.prt, по крайней мере я его в архиве не нашёл.

Да и не решение это. И так понятно, что тело нужно повернуть и перенести вдоль оси X. Вы это делаете в сборке ручками перенося тело каждый раз в новую точку.

Хлопотно, очень хлопотно. И очень долго.

4 витка, т.е. 120*4 = 480 точек

На каждое новое тело 3 операции сопряжения - 1440 операций и это при дикой загруженности дисплея картинкой.

Не дай бог где ошибка - или устанешь искать или всё по новой?

Не, несерьёзно. Нужен автоматический вариант.

Да по поводу поворота через равные углы

Я бы решил эту задачу просто интерполяцией

Очень нежелательно т.к. на шнеке получатся не равномерные поверхности. Да и потом, кривые заданы формулой т.е. найти точки через определённый градус не трудно.

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

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

Очень нежелательно т.к. на шнеке получатся не равномерные поверхности. Да и потом, кривые заданы формулой т.е. найти точки через определённый градус не трудно.

Отчего же

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

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

Если кривая строится по закону то и строить ее целесообразно в KF - если она вообще там нужна

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

Хлопотно, очень хлопотно.

4 витка, т.е. 120*4 = 480 точек

Да, согласен. НО !!!

если всегда будут 4 витка (или меньше) (или один раз сделать на большее кол-во витков)

в моём варианте от IgP всё параметризовано и ассоциативно и в одном файле

и файле Shnek_V01.ZIP - один единственный файл

(не путайте с вариантом от avd !) и никакого файла det1 не требуется

сам же массив создаётся одной операцией, и его можно редактировать,

в том числе и заменять тело-инструмент (размножаемое тело)

ХЛОПОТНО только создавать CSYS для каждого местоположения.

исключение этой хлопотности, можно получить двумя путями:

- написанием спец. программы для создания CSYS

- воспользоваться предложением от nut888 с использованием KBE

PS.

Насчёт долго создавать по 3 дополнительных объекта -

это можно и нужно делать с помощью "Сору Feature"

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

У меня возник вопрос, а почему не описать поверхность шнека математикой. Может у кого есть знакомые математики?

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

а вообще возможно построить это в UG не испорльзуя програмирование?....уж больно все както замудренно получается. Неужели нельзя наложить на геометрию ограничения, которые будут выполняться в других фичерах.......

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

а вообще возможно построить это в UG не испорльзуя програмирование?....уж больно все както замудренно получается. Неужели нельзя наложить на геометрию ограничения, которые будут выполняться в других фичерах.......

Скорее всего (насколько я понял задачу) нет

или это будет достаточно трудоемко

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

Скорее всего (насколько я понял задачу) нет

или это будет достаточно трудоемко

Я думаю можно. Алгоритм я представляю, но вот инструментом не владею.

У нас на форуме раньше "жил" человек под ником FFF. Я как-то попросил его сделать не менее замороченную задачку и он сделал. Я поучаствовал только на уровне постановки задачи. Он классненько программку написал, я потом его долго добрым словом поминал. Жалко только он давненько на форуме не замечен.

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

nut888 :

" Скорее всего (насколько я понял задачу) нет

или это будет достаточно трудоемко "

Я думаю можно. Он классненько программку написал

IBV ! извините, но сейчас у меня голова взорвётся.

Вы говорите что, думаете что можно без программирования, а в пример приводите

Он программку написал

to IBV

Вашу задачку в разделе PROE в теме PROE и Сколково

как я понимаю решили.

Посмотрите.

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

Слушал я вас долго и внимательно, и наконец понял - пора внести свой вклад в дискуссию... 

Картинка с видео-роликом (в Opera - крутится, в IE - нет, у меня, во всяком случае.. )

Шаг - через 3 градуса, как просили. Изображение

ДА! Для уменьшения объема файла сделал 20% длины кривой. 

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

ДА! То что нужно, невооружённым глазом вижу. :)

А как?

Это частное решение или общее?

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

ДА! То что нужно, невооружённым глазом вижу. :)

А как?

Это частное решение или общее?

Общее не бывает...  :clap_1:

Как? Тривиальная программка на UGOPEN. Могу выложить DLL. 

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

Общее не бывает...  :clap_1:

Как? Тривиальная программка на UGOPEN. Могу выложить DLL. 

э-э-э-э с исходниками можно... :blush:

2 IBV

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

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

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

avd

Тоже красиво, но похоже, что шаг по углу не постоянный. Видны странные скачки. Нет?

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

А причем тут постоянный шаг по углу, если требеутся просто выбрать канавку?

Будем считать, что я капризничаю. :)

А вообще, нужно чтоб было правильно и красиво, тогда ни у кого не будет вопросов. И обработка будет лучше.

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Максим604
      В мануале написано что подача при Резьбофрезеровании считается по центру инструмента. Ок. Тогда почему когда пишешь в кам системе, то выдает подачу для движение  по траектории.      Перефразирую.  Нужно нарезать внутреннюю резьбу М20х2.  Фреза 3 зуба ∅12. Скорость резания 50. (Оборотов 1326)  Подача на зуб 0.05   Когда пишу в джи кодах, то выдаётся подача 198.9 мм/мин. С этой подачей станок и режет.    А если написать через шопмилл, то при тех же условиях( скорость резания и подача на зуб), он подачу пересчитывает для центра фрезы.  И выходит подача 80 мм/мин.   И выходит что при одних и тех же условиях меняется время обработки.    Когда пишешь через кам, то подача считается по траектории, а шопмилл считает для центра.    И я не понимаю как правильно считать. И почему именно так.  И в мануалах не нашёл ответа. 
    • maxx2000
      Да вот так ему хочется. Вот такие гады разработчики. Небось и в мануале всё это описали. Я негодую вместе с тобой.
    • Максим604
      Поэтому и вопрос. почему шопмилл подачу меняет, когда пишешь через него(макропеременые), а когда через G код не меняется. как шопмилл просчитывает новую подачу я понимаю, но не понимаю как прравильно и почему именно так правильно, а не наоброт. почему шопмилл переводит подачу с движения по траектории на движение по центру?     
    • Snake 60
      Так а зачем, если вот эта кнопка  сохраняет все детали и подсборки входящие в нее: При желании можно повесить на горячую кнопку через Настройка-Клавиатура Или пересохранить имеется ввиду создать копию с новым именем? Если да, то для этих целей я бы посоветовал крутой макрос с именем Коперник от @tompsongun См. пост выше.
    • maxx2000
      ну хотя бы то что одна написана через макропеременные, вторая в джи кодах. Ты считаешь что при одинаковом результате у них одинаковые алгоритмы?  
    • Максим604
      А что должно смущать?
    • maxx2000
      Ничего не смущает?
    • Максим604
      разные уп, но смысл одинаковый. в первом варианте подача меняется, во втором сохраняется.   Это то что не устраивает   M0 E_MI_TR(1,0,0,"REZBA_D11.9_P2_VARGUS","",1,0.05,2,50,2,1297,-16.2,91,2,10,14,1.0826,1.083,0.1,0,3,0.03937,0.31831,,,,1,0,"ISO_METRIC","M14");*RO* E_MI_TR(1,0,0,"REZBA_D11.9_P2_VARGUS","",1,0.05,2,50,2,1298,-16.2,91,2,10,14,1.0826,1.083,0.1,0,3,0.07874,0.63662,,,,-1,0,"ISO_METRIC","M14");*RO* _E_P002: E_PS_CIR(1,0,0,-14,90,0,,0,,102.5,12.857,30,8,10,0,,);*RO* CALL "END.SPF";#SM;*RO* E_END(0,1,0);*RO* M30 ;#SM;*RO* _____________________________________________   это устраивает N104 T=" ФРЕЗ. РЕЗЬБЫ - 12" N106 M6 N108 G0 X0. Y0. S1326 M3 D1 N110 Z50. N112 Z5. N114 G1 Z-25. F198.9 N116 G41 Y-4.95 N118 G3 X9.95 Y0. Z-24.5 I3.74372 J4.95 N120 Z-22.5 I-9.95 J0. N122 Z-20.5 I-9.95 J0. N124 Z-18.5 I-9.95 J0. N126 Z-16.5 I-9.95 J0. N128 Z-14.5 I-9.95 J0. N130 Z-12.5 I-9.95 J0. N132 Z-10.5 I-9.95 J0. N134 Z-8.5 I-9.95 J0. N136 Z-6.5 I-9.95 J0. N138 Z-4.5 I-9.95 J0. N140 Z-2.5 I-9.95 J0. N142 Z-.5 I-9.95 J0. N144 X0. Y9.95 Z0. I-9.95 J0. N146 X-4.95 Y0. Z.5 I0. J-6.20628 N148 G1 G40 X0.
    • sklide008
      Да точно, подзабыл уже все. а можно ли горячими клавишами открыть деталь из сборки и пересохранить не открывая деталь?
    • maxx2000
      наверное пришло время выложить программу которая устраивает и которая не устраивает
×
×
  • Создать...