1C.Net:Предприятие + DirectX = 3D-графика на формах 1С:Предприятие

10.11.14

Разработка - Работа с интерфейсом

Представленный пример для 1С:Предприятие 8.1 посвящен трехмерной графике. Информации по использованию 3d в 1С Интернет не предоставляет. Пример будет полезен 1С-разработчикам, программирующим для души. Так как пока сложно представить бухгалтеров, как в игре, гуляющих внутри 1С по виртуальным 3д-складам, листающих виртуальные 3д-журналы документов. Хотя почему бы и нет. Кто знает, что нас ждет через несколько лет и как изменятся знакомые нам программы.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Генератор 3d-графики для 1C 8.2 и .Net Bridge 4
.epf 27,85Kb
26
26 Скачать (1 SM) Купить за 1 850 руб.
Генератор 3d-графики для 1C 8.1
.epf 28,31Kb
215
215 Скачать (1 SM) Купить за 1 850 руб.

Представленный пример для 1С:Предприятие 8.1 посвящен трехмерной графике. Информации по использованию 3d в 1С Интернет не предоставляет. Пример будет полезен 1С-разработчикам, программирующим для души. Так как пока сложно представить бухгалтеров, как в игре, гуляющих внутри 1С по виртуальным 3д-складам, листающих виртуальные 3д-журналы документов. Хотя почему бы и нет. Кто знает, что нас ждет через несколько лет и как изменятся знакомые нам программы.

Сразу нужно отметить, что информации по 3D-программированию на .Net Framework на русском языке также практически нет. На английском языке достойных статей единицы и за основу примера взята статья «Windows Presentation Foundation (WPF) 3D Tutorial». Статья объемная и перевод ее на русский может занять много времени, поэтому здесь перевод не представлен. У кого проблемы с английским, предлагаю воспользоваться хорошим сервисом Google Translate для перевода.

Как WPF использует DirectX

Применение в приложениях .Net-технологии для работы с богатой графикой WPF (Windows Presentation Foundation) уже подразумевает использование DirectX. Ниже представлена схема ключевых компонентов WPF, где показано, что на нижнем уровне расположена технология DirectX.

WPF (Windows Presentation Foundation) в своей работе использует DIrectX. Для этих целей служит MILCORE (Media Integration Layer Core) – неуправляемый компонент, который обрабатывает 2d, 3d, анимацию, обращаясь к DirectX. Скорость работы – достоинства DirectX – это главная причина, по которой milcore оформлен как неуправляемый компонент. Milcore – это интерфейс между DirectX и CLR (Common Language Runtime). Сборка PresentationCore не содержит элементов управления, но содержит базовые типы для определения UI-элементов. PresentationFramework содержит определения элементов управления WPF и реализацию связанной функциональности.

Как DirectX использовать в 1С:Предприятие

Когда речь в 1С заходит о .Net framework, на выручку приходит компонент Elisy .Net Bridge. Компонент достаточно описан в Интернете, для него написаны десятки примеров. В данном случае за основу будет взят пример, показывающий, как вставлять WPF-контрол на форму 1С. Больше информации на этот счет можно найти в статье «1C.Net:Предприятие – использование богатых графических возможностей .Net framework». Суть проблемы вставки WPF-контрола сводится к использованию вспомогательного ActiveX-компонента Elisy.HwndHost, в котором необходимо реализовать обработчик события Created.

Интерфейс в WPF описывается языком XAML. Файл описания прикреплен к внешней обработке в виде макета Xaml. В файле описания ключевым объектом является класс Viewport3D с именем mainViewport. В нем определены камера (PerspectiveCamera) и освещение (DirectionalLight). Свойства камеры настраиваются через интерфейс пользователя и хранятся в реквизитах внешней обработки.

Впечатление от примера

Работа с 3d-графикой в любой среде, будь то С++, С# или 1С – дело не из простых. Но сама возможность использования трехмерной графики в 1С:Предприятие, о которой раньше можно было только мечтать, ставит 1С наравне с другими популярными системами.

Результат примера - 3d-поверхность

Чтобы разрабатывать с успехом 3d-приложения, нужно вспомнить курс старших классов школы и понимать векторы, точки в трехмерном пространстве, нормали к поверхностям.

Результат примера - куб

Пример позволяет рисовать треугольник, куб и поверхность. Свойства камеры и взгляда настраиваются через интерфейс пользователя и хранятся в реквизитах внешней обработки. В случае необходимости нормали к плоскостям можно визуализировать. А если нужно – показать сетку и увидеть, на основе каких примитивов строятся объемные фигуры.

Весь пример изобилует обращением к пространству имен System.Windows.Media.Media3D, информацию о котором можно найти на MSDN даже на русском языке.

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

Выводы

Тема трехмерной графики в 1С достаточно новая, В связи с этим в сети Интернет нельзя найти примеров подобного подключения. Получается, что приведенный здесь пример является пионером в 3d-графике. К достоинствам можно отнести полную интеграцию с 1С, где прорисовка ведется в форме с другими родными элементами управления 1С.

Хотя практическую ценность технологии применительно к 1С придумать сложно. Фантазия подсказывает только виртуальный 3д-склад или планограмму марчендайзеров. Тем не менее, методика позволяет программировать на 1С для души. Ведь многие молодые разработчики мечтают в будущем создавать игры, а технология позволит им попрактиковаться на знакомой 1С-системе прямо сейчас.

Ссылки по теме

Оригинальный пример на C#: «Windows Presentation Foundation (WPF) 3D Tutorial»

System.Windows.Media.Media3D - пространство имен

1C.Net:Предприятие – использование богатых графических возможностей .Net Framework

3D in XAML (на английском языке)

См. также

Работа с интерфейсом Системный администратор Программист Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Платные (руб)

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

5000 руб.

14.01.2016    55485    17    23    

43

Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    19770    28    6    

44

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    22164    mrXoxot    44    

128

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

Пример простого и симпатичного прогресс-бара в динамическом списке, без картинок, используя редактирование запроса.

27.05.2024    11174    smielka    37    

105

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    18023    1226    elcoan    53    

125

Инструментарий разработчика Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

Подходит для создания web-страниц для замены управляемых форм 1С, красивых отчетов, интерфейса мобильного приложения на платформе 1С и для простых страниц веб-сайтов.

3 стартмани

10.04.2023    12701    167    acces969    31    

126

Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    7502    kalyaka    6    

32
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. 24.06.10 09:03 Сейчас в теме
А моделирование окон?
К примеру производство окон.
Там надо вбить параметры, рассчитать материалы и вывести макет будущего окна на экран.
Сюда же можно это прикрутить?
2. Elisy 951 24.06.10 09:23 Сейчас в теме
(1) Если разобраться в принципах 3д-моделирования, то можно. Проблема в том, что это целая наука, требующая время на освоение. Многие моменты требуют знаний в высшей математике.
Применительно к окнам ребята из АТехголоджи подготовили целый проект на .Net и "глубоко" внедрили его в 1С. Вот ссылка на Инфостарт: 1C.Net:Предприятие – пример коммерческого успеха .Net-решений в России
4. o.nikolaev 216 04.07.10 03:44 Сейчас в теме
Общее замечание - это не первый в интернете пример работы 1С с 3d :) В свое время еще Гений 1С (который сотик за секс толкал :D ) публиковал пример работы с VRML в 7.7. Причем там строилась структура склада.
(2) АТехнолоджи рулит. Особенно WinDraw. То что они встроили в 1С-ину - довольно сильно урезанная версия их флагманского продукта.
5. Elisy 951 05.07.10 08:14 Сейчас в теме
(4) Что-то ссылок при написании статьи не смог найти на 3д-графику в 1С :) Если есть ссылки на статьи таких работ, давайте. Я обязательно напишу в статье. А то информации совсем мало.
Вы тогда скажите еще - чего в 1С сделать никак не удалось до сих пор. :) Может мне удастся примеры сделать. Анимация на формах была?
3. viollan 24.06.10 18:01 Сейчас в теме
(1) Можно и моделирование окон сюда прикрутить. Только удобнее написать на C# отдельную сборку и подключить используя Elisy подключить.
6. mehalyna 24.10.11 20:38 Сейчас в теме
Хорошая идея! Действительно можна визуализировать работу на складах. Огромная просьба, дайте ссылки на статьи по работе с 3d-графикой в 1С! Заранее благодарен!
7. Elisy 951 25.10.11 09:32 Сейчас в теме
(6) К сожалению вышла только одна статья о 3д в 1С. Оригинальная статья, которая опубликована на Инфостарт, находится здесь:
http://www.richmedia.us/post/2010/06/23/1c-directx-wpf.aspx
8. oiter 29.11.11 10:23 Сейчас в теме
Спасибо за пример. Были мысли реализовать один проект с использованием 3D. У нас в компании такое реализовано через DLL библиотеку, написанную на Delphi + OpenGL. Эта библиотека генерировала отдельное окно, которое или пряталось за окно 1С, или, если делали поверх окон, закрывала 1С собой, пока не закроешь. Короче есть минусы в работе. Библиотека прикручена к 1С и позволяет наглядно увидеть расположение на карте списанные в производство оборудование.
Теперь вот пытаюсь заменить данную DLL на нечто, указанное в примере.
9. Elisy 951 30.11.11 15:45 Сейчас в теме
(8) Самое обидное, что использование 3д требует специальных знаний. И чтобы профессионально работать с трехмерной графикой, нужно этому посвятить всю жизнь.
Есть идея еще таким же образом использовать игровую XNA-платформу. Вроде, она тоже дружит с .Net framework и подключается аналогично.
10. john-nnov 01.11.12 23:47 Сейчас в теме
Ни кто эту тему больше не развивал?
11. Elisy 951 02.11.12 09:15 Сейчас в теме
(10) john-nnov,
Ни кто эту тему больше не развивал?

Вы имеете ввиду 3d или вообще визуальные компоненты .Net (wpf/winforms)?
12. john-nnov 02.11.12 11:10 Сейчас в теме
Визуальные компоненты.
13. Elisy 951 02.11.12 12:39 Сейчас в теме
(12) john-nnov,
Визуальные компоненты .Net в 1С 8 хорошо себя проявили при планировании в "оконных" компаниях

14. mehalyna 19.04.13 12:48 Сейчас в теме
Да... Идея хорошая. Это бы еще и реализовать. Спасибо за подборку информации и полезные ссылки!
15. pavel_pss 290 18.06.13 10:21 Сейчас в теме
16. pavel_pss 290 18.06.13 12:30 Сейчас в теме
Было бы еще не плохо если бы ты выложил dll или ссылку где можно скачать.
17. Elisy 951 18.06.13 13:29 Сейчас в теме
(16) pavel_pss,
Было бы еще не плохо если бы ты выложил dll или ссылку где можно скачать.

http://infostart.ru/public/20035/

Последние версии здесь:
http://www.1csoftware.com/forums/viewtopic.php?f=9&t=13&start=10
доступны для скачивания после регистрации
18. alina0587 2 09.11.14 18:06 Сейчас в теме
Уважаемый Elisy!
Меня очень заинтересовала Ваша разработка по 3D-графике в 1С.
Разрешите задать Вам вопрос.
Как мне нарисовать линию в трехмерном пространстве, используя Ваши компоненты? (Я знаю набор координат x,y,z).

Заранее спасибо за ответ!
19. Elisy 951 10.11.14 08:15 Сейчас в теме
(18) alina0587,
Добрый день, Алина
Код для вывода 3д-линии с координатами 0, 0, 0 - 5, 0, 0 будет следующий:
	normal0Wire = net.New("_3DTools.ScreenSpaceLines3D");
	normal0Wire.Thickness = 1;
	normal0Wire.Color = net.GetStatic("System.Windows.Media.Colors", "Blue");
	
	point0 = net.New("System.Windows.Media.Media3D.Point3D", 0, 0, 0);
	normal0Wire.Points.Add(point0);
	point1 = net.New("System.Windows.Media.Media3D.Point3D", 5, 0, 0);
	normal0Wire.Points.Add(point1);
	
	_mainViewport.Children.Add(normal0Wire);
Показать


Обновил в статье обработку для 8.2 и .Net Bridge 4
20. Midasu 06.02.15 09:23 Сейчас в теме
В номенклатуру грузить модели товара!
Оставьте свое сообщение