Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
 Аватар для LexFoktis
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 24

Перенос Атрибутов из САПР (PDMS)

03.08.2015, 15:26. Показов 1562. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, возник такой вопрос: Создаю 3D тренажер по возникновению аварийных ситуаций, 3D модель завода есть в AVEVA PDMS, из загружаю ее в Naviswork экспортирую в fbx и импортирую в Unity, модель импортируется нормально, но она пустая, кто мне подскажет путь как можно занести атрибуты на модель (например есть насос, что бы при наведении на него мышкой отображался информация по данному насосу)
Миниатюры
Перенос Атрибутов из САПР (PDMS)  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.08.2015, 15:26
Ответы с готовыми решениями:

Перенос текста из word в richedit с сохранением атрибутов
Есть процедура: procedure TForm1.BitBtn1Click(Sender: TObject); var wdApp, wdDoc, wdRng:Variant; Od:TOpenDialog; begin Od :=...

САПР
Учусь на кафедре Системы автоматизированного проектирования машин и технологических процессов. А магистратура на кафедре по направлению...

САПР
Приветствую всех, не подскажете как в excele задать условия поика при которых при нахождении одного параметра выдавало одно значение, при...

19
211 / 201 / 63
Регистрация: 24.09.2014
Сообщений: 532
03.08.2015, 16:31
писать свой импортер, свою систему тултипов. (ну или можно попробовать достучаться к автору ролика на ютюбе).
0
 Аватар для LexFoktis
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 24
03.08.2015, 16:47  [ТС]
блин это жесть конечно, ее заколебешься писать, а по поводу видео, весь прикол что этот тренажер для нашей организации и делался))) вот только автор был наемный чел...попробую конечно выйти с ним на связь
0
 Аватар для LexFoktis
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 24
05.08.2015, 14:01  [ТС]
Все еще актуально!

Добавлено через 39 секунд
СУТЬ ВОПРОСА:
есть перечень готовых 3D моделей (их огромное количество>1000 позиций)к каждой 3D модели идет свой текстовый документ, в этом документе содержится атрибутивная информация (масса, объем, нормативные показатели, из какого материала изготовлены и т.д.)

Необходимо:
[V] 1. Загрузить 3D модели в Unity
[] 2. Написать скрипт который автоматически пробежится по именам 3D моделей и именам текстовых документов, и соотнесет их соответственно.
Что я понимаю под фразой "соотнесет их соответственно" на данный момент мне это видится следующим образом: Если скрипт в процесе работы при переборе находит совпадения в имени 3D модели и текстового документа, то он в Unity создает текстовый блок в который засовывает инфу из текстового документа и прикрепляет его к 3D модели. А дальше уже что бы выдернуть правильно этот текст, можно будет писать еще скрипты, но на данном этапе это пока не актуально

Очень прошу помощи в данном вопросе, приветствую дискуссию, и высказывание любых домыслов и предположений, мне нужно что бы меня натолкнули на правильный путь решения этого вопроса
0
211 / 201 / 63
Регистрация: 24.09.2014
Сообщений: 532
05.08.2015, 14:37
ну зависит от того что ты хочешь в итоге - если в дальнейшем использовать UnityEditor как среду работы, то достаточно пары editor скриптов, если планируешь деплоить в standalone, то все модельки лучше в бандлы завернуть сначала (сразу с описанием).

Просто не совсем понятно что тебе необходимо, по описанию задача достаточно тривиальная
0
 Аватар для LexFoktis
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 24
05.08.2015, 14:41  [ТС]
arrjj,
эти все манипуляции коксуются только редактора, я еще не приступил к самому билду, т.к. мне нужно правильно структурировать всю информацию по проекту.
Один из вопросов это при помощи каких инструментов С# обработать сравнение имен уже загруженных 3D моделей в иерархию Unity и имена текстовых документов, которые находятся в папке винды.
Ручками вбивать инфу не имею возможности, т.к. моделей больше 1000
0
211 / 201 / 63
Регистрация: 24.09.2014
Сообщений: 532
05.08.2015, 14:48
ну по всем ассетам в проекте можно пробежать так:
C#
1
foreach (var path in AssetDatabase.GetAllAssetPaths())
с текстовыми документами можно спокойно через System.IO
0
 Аватар для LexFoktis
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 24
06.08.2015, 09:58  [ТС]
Отлично, это понятно, а как теперь пробежаться по именам в иерархии? С помощью какого оператора?
C#
1
Selection.GetFiltered(GameObject, SelectionMode.Editable)
Этот подойдет?
Миниатюры
Перенос Атрибутов из САПР (PDMS)  
0
211 / 201 / 63
Регистрация: 24.09.2014
Сообщений: 532
06.08.2015, 10:43
Вполне, хотя можно и Object.FindObjectsOfType
0
 Аватар для LexFoktis
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 24
06.08.2015, 14:20  [ТС]
Получилось парализовать перебор имен в иерархии по тегу
C#
1
2
3
4
5
6
7
8
9
10
11
public class FindName : MonoBehaviour {
 
    void Start()
    {
        GameObject[] objects = GameObject.FindGameObjectsWithTag("3DModel");
        foreach (GameObject object1 in objects)
        {
            print(object1.name);
        }
    }
}
В итоге он мне выводит имена моделей которые имеют тег "3DModel"
Работаем дальше...

Добавлено через 1 час 39 минут
Вопрос теперь в другом, пытаюсь передать имя этой модели в GUI а он мне пишет OnGUI() can not take parameters.
Вот код
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using UnityEngine;
using System.Collections;
 
public class FindName : MonoBehaviour {
 
    
    public void Start()
    {
       
        GameObject[] objects = GameObject.FindGameObjectsWithTag("3DModel");
        foreach (GameObject object1 in objects)
        {
            print(object1.name);
            OnGUI(object1.name);
        }
    }
   public void OnGUI(string _name) {
        GUI.Label(new Rect(10, 10, 100, 20), _name);
    }
}
0
211 / 201 / 63
Регистрация: 24.09.2014
Сообщений: 532
06.08.2015, 14:29
Цитата Сообщение от LexFoktis Посмотреть сообщение
Вопрос теперь в другом, пытаюсь передать имя этой модели в GUI а он мне пишет OnGUI() can not take parameters.
нуда, пишет как есть. что ты хочешь то сделать с этими моделями то?
0
 Аватар для LexFoktis
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 24
06.08.2015, 15:12  [ТС]
Я пока что экспериментирую, и пытаюсь получить что то более цельное, хочу чтобы Имя модели у которой есть тег 3DModel высвечивалось на экране через GUI интерфейс, т.к. в дальнейшем вся информативная часть тренажера будет проходить через GUI интерфейс.

Добавлено через 37 минут
HELP
0
211 / 201 / 63
Регистрация: 24.09.2014
Сообщений: 532
06.08.2015, 15:48
Ну так тебе тогда надо выделить конкретную модельку. Выделенную в редакторе можно получить через Selection.activeGameObject.
Либо на каждую модель повесить скрипт, который будет отображать табличку с текстом
выделить модельку в рантайме немного сложнее.
0
 Аватар для LexFoktis
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 24
06.08.2015, 16:01  [ТС]
Это все прекрасная теория, а на практике я не могу понять какого *ера я не могу присвоить переменной _name значение object1.name; через отладчик ВизуалСтудио показывает что значение _name= null, а значение object1.name="H480.11"


Вопрос разрешился, оказывается нужно переходить на строчку дальше в отладчике
вот код, он пробегается по именам в иерархии находит имя по тегу, и выводит его в GUI на экран...банально, но может кому пригодится
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using UnityEngine;
using System.Collections;
 
public class FindName : MonoBehaviour {
 
    public string _name ;
    void Start()
    {
 
        GameObject[] objects = GameObject.FindGameObjectsWithTag("3DModel");
        foreach (GameObject object1 in objects)
        {
            //print(object1.name);
            _name = object1.name;
            print(_name);
        }
 
    }
   void OnGUI() {
       GUI.Label(new Rect(10, 10, 100, 20), _name);
    }
}
0
211 / 201 / 63
Регистрация: 24.09.2014
Сообщений: 532
06.08.2015, 16:29
ну он выведет только имя последнего найденного, а что будет если у тебя два объекта с таким тэгом?
0
 Аватар для LexFoktis
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 24
06.08.2015, 16:32  [ТС]
Цитата Сообщение от arrjj Посмотреть сообщение
ну он выведет только имя последнего найденного, а что будет если у тебя два объекта с таким тэгом?
Ахаха)) сейчас именно это и решаю...подскажи как)))
0
211 / 201 / 63
Регистрация: 24.09.2014
Сообщений: 532
06.08.2015, 17:05
ну дык а что именно то ты хочешь вывести? для каждого объекта Label с именем? или только для выделенного? или где?
0
 Аватар для LexFoktis
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 24
07.08.2015, 06:56  [ТС]
Наверное проще в видео показатьhttp://www.youtube.com/watch?v=4JPWJVlAe2Q (смотри с 42секунды) вот как здесь организован интерфейс, пользовтель кликает на 3D модель и высвечивается нужная информация по этой модели. Только мне эту всю информацию нужно забить не ручками, а как то автоматизировать этот процесс, потому что иначе на это все уйдет пару месяцев...
Но это все в перспективе, а на данный момент пока ограничусь вопросом как вывести в лейбл(необязательно в лейбл) имена ВСЕХ объектом с конкретным тегом (у меня тег "3DModel")

Добавлено через 13 часов 30 минут
Актуально как вывести в GUI Label значение переменной через цыкл, то есть если переменная в ходе цыкла преобретает 10 значений, как их вывести что бы они все отображались в Label
0
211 / 201 / 63
Регистрация: 24.09.2014
Сообщений: 532
07.08.2015, 09:26
C#
1
2
3
4
5
6
7
    void OnGUI()
    {
        foreach (var go in GameObject.FindGameObjectsWithTag("3DModel"))
        {
            GUILayout.Label(go.name);
        }
    }
1
 Аватар для LexFoktis
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 24
07.08.2015, 13:31  [ТС]
огромное спасибо, немного доработал код и вот что у меня получилось на выходу:
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
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
 
public class Передать_текст_GUI_text : MonoBehaviour {
 
    public string text1;
    public TextAsset asset1;
    public string st;
    
    void Awake() {
        asset1 = Resources.Load("Probka") as TextAsset;
       print(asset1.text);   
    }
 
    void Start()
    {
        var script = gameObject.GetComponent(typeof(Передать_текст_GUI_text)) as Передать_текст_GUI_text;
        st = script.asset1.text;
    }
 
    void OnGUI()
    {
        GUILayout.Label(st);
    }
}
Скрипт считывает весь текст в текстовом документе Probka и выводит его на экран
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.08.2015, 13:31
Помогаю со студенческими работами здесь

Облачная САПР
День добрый. Прошу заглянуть на cloud.habitek.ru/editor и дать обратную связь в произвольном формате.

VBA САПР
Уважаемые Гугу VBA, подскажите решения в сложившейся ситуации. В AutoCad по средствам VBA строиться чертеж по координатам из файла...

САПР SystemVue
Программа SystemVue 2013.08. Кто-нибудь знает?

Использование САПР
Здравствуйте, поделитесь опытом с помощью каких САПР (бесплатных) можно создавать более-менее приличные чертежи в Линуксе, чтобы можно было...

Инженер САПР
Добрый день! Не мог бы кто-нибудь подробнее рассказать о специальности инженера САПР, конкретные области деятельности. В Интернете все...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
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, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru