Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
4 / 4 / 0
Регистрация: 19.01.2014
Сообщений: 24

Создание цикла, для блочного построения 3D модели

16.05.2017, 22:26. Показов 1140. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создал программу которая строит кухню из 5 блоков (и 5 разных процедур на создание разных 3D моделей, каждый блок строится и перемещается по координатам относительно оси x, y, z)
Нужно сделать так, чтобы строить она могла неограниченное количество блоков, проблема возникла в том, что каждая маленькая деталь содержат переменные orig1, matr1, instance1, error_status1.
Для неограниченного построения, данные переменные необходимо изменять имя +1 например. Т.е orig(1,2,3... n)
Как создать цикл который бы это делал или какой ещё есть способ в данном случае?

Небольшой кусок программы которая рисует в Siemens NX
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//Сборка
        Tag UFPart999;
        string name16 = "Кухня";
        int units = 1;
        theUfSession.Part.New(name16, units, out UFPart999);
        /*В переменную parent_part, записывается результат возвращаемый функцией AskDisplayPart. В свою очередь данная функция возвращает tag текущей модели. Для не сборочной модели это рабочая модель. Если в настоящее время нет рабочей модели, то возвращается NULL_TAG. */
        Tag parent_part = theUfSession.Part.AskDisplayPart();
        //переменные error_status, в которые будет записываться статус загрузки моделей
        UFPart.LoadStatus error_status1, error_status2, error_status3, error_status4, error_status5, error_status6, error_status7, error_status8, error_status9, error_status10, error_status11, error01, error02, error03, error04, error05, error06, error07, error08; //объявление переменных в которые происходит запись tag-а нового объекта модели
        Tag instance1, instance2, instance3, instance4, instance5, instance6, instance7, instance8, instance9, instance10, instance11, instan01, instan02, instan03, instan04, instan05, instan06, instan07, instan08;
 
        /*Объявление и запись значений в переменные. Переменные origin содержат позиции каждой из моделей в родительской сборочной модели.
        Переменные matrix определяют ориентацию каждой из моделей в системе координат родительской сборочной модели.
 
        поочередное добавление моделей деталей фильтра, которые входят в сборочную модель конструкции
 
        Структура параметров функции AddPartToAssembly:
        1) parent_part – tag модели для добавления деталей;
        2) part – имя добавляемой модели;
        3) refset_name – наименование множества частей модели для добавления;
        4) instance_name - Name of new instance;
        5) origin [ 3 ] – позиция в родительской модели;
        6) csys_matrix [ 6 ] – ориентация в родительской модели;
        7) layer – слой (0) – текущий слой;
        8) instance – tag новой детали в сборке;
        9) error_status – статус ошибки добавления.
        */
        
        double[] orig1 = { 0, -20, 0 }; //Вертикальная стенка(Левая)
        double[] matr1 = { -1, 0, 0, 0, 0, 1 };
        theUfSession.Assem.AddPartToAssembly(parent_part, "Вертикальная стенка", null, null, orig1, matr1, 0, out instance1, out error_status1);
 
        double[] orig2 = { 20, -20, height1 - 20 }; //Крышка
        double[] matr2 = { 0, 1, 0, -1, 0, 0 };
        theUfSession.Assem.AddPartToAssembly(parent_part, "Крышка", null, null, orig2, matr2, 0, out instance2, out error_status2);
 
        double[] orig3 = { 0, width1 - 40, 0 }; //Вертикальная стенка(Правая)
        double[] matr3 = { -1, 0, 0, 0, 0, 1 };
        theUfSession.Assem.AddPartToAssembly(parent_part, "Вертикальная стенка", null, null, orig3, matr3, 0, out instance3, out error_status3);
 
        double[] orig4 = { 0, 0, 0 }; //Основная полка (Нижнее основание)
        double[] matr4 = { 0, 1, 0, -1, 0, 0 };
        theUfSession.Assem.AddPartToAssembly(parent_part, "Основная полка", null, null, orig4, matr4, 0, out instance4, out error_status4);
 
        double[] orig5 = { -depth1 + 20, 0, 0 }; //Задняя стенка
        double[] matr5 = { 0, 1, 0, 0, 0, 1 };
        theUfSession.Assem.AddPartToAssembly(parent_part, "Задняя стенка", null, null, orig5, matr5, 0, out instance5, out error_status5);
Добавлено через 4 часа 34 минуты
Если по простому, нужно в цикл записать построение блока и сделать чтобы переменные меняли своё имя на единицу. (т.к. каждая деталь должна содержать отдельную переменную)
Подскажите пожалуйста

Добавлено через 1 час 5 минут
Или можно изменить имя переменной?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.05.2017, 22:26
Ответы с готовыми решениями:

Создание цикла для построения нормалей по контуру
Здравствуйте, форумчане! Хочу решить вот какую задачку: Имеется функция y=f(x), описывающая кривую с некоторым шагом по x. В каждой...

Определение модели и элементов для её построения из Симулинк
Добрый всем день! Можете помочь. Дано задание: "Откройте новое окно для программы моделирования. Сформируйте модель, позволяющую изучить...

Найти наименьшее количество спичек для построения модели из N кубиков (С++ -> Pascal)
Спичечная модель Профессор Самоделкин решил изготовить объемную модель кубиков из спичек, используя спички для рёбер кубиков. Длина...

1
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
17.05.2017, 04:54
Цитата Сообщение от LexaVRN Посмотреть сообщение
Нужно сделать так, чтобы строить она могла неограниченное количество блоков, проблема возникла в том, что каждая маленькая деталь содержат переменные orig1, matr1, instance1, error_status1.
Создайте класс Part с полями orig, matr и т.д. и список List<Part>. Тогда можно будет к этим переменным обращаться в цикле по индексам.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.05.2017, 04:54
Помогаю со студенческими работами здесь

Какое наименьшее количество спичек нужно Самоделкину для построения модели из N кубиков?
Спичечная модель Профессор Самоделкин решил изготовить объемную модель кубиков из спичек, используя спички для рёбер кубиков. Длина...

Создание программы для автоматического построения деталей в Си для компаса
Здравствуйте форумчане. Тут интересный вопрос. Видел что в компасе есть функции, которые в паре с кодом в си могут строить твердотел сами...

Создание макроса для построения графиков
Суть проблемы: В строчке 5 значений, по ним необходимо построить график, но таких строчек 200 и для каждой строчки нужен график. Для...

Создание программы для построения графика функции
Как в Visual Basic написать программу, которая строит графики функции и сама функция задается в textbox на форме?

Создание программы для построения графика функции
Составить программу построения графика функции : y = 3*(cos(x/5))3 Пределы построения: -20&lt;x&lt;20


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru