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

10.11.14

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

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

Скачать файлы

Наименование Файл Версия Размер
Генератор 3d-графики для 1C 8.2 и .Net Bridge 4
.epf 27,85Kb
26
.epf 27,85Kb 26 Скачать
Генератор 3d-графики для 1C 8.1
.epf 28,31Kb
215
.epf 28,31Kb 215 Скачать

Представленный пример для 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 Управляемые формы Конфигурации 1cv8 Платные (руб)

Обработка предназначена для редактирования картинок в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Также обработка может быть использована из встроенного языка как объект для редактирования картинок. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Данная обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    61805    43    59    

80

[Расширения] Динамическое управление видимостью и доступностью элементов форм (УФ) (8.3.6+)

Работа с интерфейсом Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

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

5000 руб.

14.01.2016    54409    16    21    

42

Управление дашбордами

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

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

2400 руб.

29.06.2020    16701    21    4    

35

Новогоднее оформление для 1С

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

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

27.12.2023    10744    750    elcoan    45    

106

Конструктор HTML, CSS и javascript

Инструментарий разработчика Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

2 стартмани

10.04.2023    9626    151    acces969    31    

118

Модель состояния для MVC

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

05.07.2022    3670    kalyaka    2    

27

Табло очереди заказов на экран телевизора

WEB-интеграция Работа с интерфейсом Платформа 1С v8.3 1С:Розница 2 Платные (руб)

Связка из веб-приложения и расширения для 1С: Розница 2.3.

3600 руб.

29.04.2022    12085    1    5    

10
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. 24.06.10 09:03 Сейчас в теме
А моделирование окон?
К примеру производство окон.
Там надо вбить параметры, рассчитать материалы и вывести макет будущего окна на экран.
Сюда же можно это прикрутить?
2. Elisy 948 24.06.10 09:23 Сейчас в теме
(1) Если разобраться в принципах 3д-моделирования, то можно. Проблема в том, что это целая наука, требующая время на освоение. Многие моменты требуют знаний в высшей математике.
Применительно к окнам ребята из АТехголоджи подготовили целый проект на .Net и "глубоко" внедрили его в 1С. Вот ссылка на Инфостарт: 1C.Net:Предприятие – пример коммерческого успеха .Net-решений в России
4. o.nikolaev 211 04.07.10 03:44 Сейчас в теме
Общее замечание - это не первый в интернете пример работы 1С с 3d :) В свое время еще Гений 1С (который сотик за секс толкал :D ) публиковал пример работы с VRML в 7.7. Причем там строилась структура склада.
(2) АТехнолоджи рулит. Особенно WinDraw. То что они встроили в 1С-ину - довольно сильно урезанная версия их флагманского продукта.
5. Elisy 948 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 948 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 948 30.11.11 15:45 Сейчас в теме
(8) Самое обидное, что использование 3д требует специальных знаний. И чтобы профессионально работать с трехмерной графикой, нужно этому посвятить всю жизнь.
Есть идея еще таким же образом использовать игровую XNA-платформу. Вроде, она тоже дружит с .Net framework и подключается аналогично.
10. john-nnov 01.11.12 23:47 Сейчас в теме
Ни кто эту тему больше не развивал?
11. Elisy 948 02.11.12 09:15 Сейчас в теме
(10) john-nnov,
Ни кто эту тему больше не развивал?

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

14. mehalyna 19.04.13 12:48 Сейчас в теме
Да... Идея хорошая. Это бы еще и реализовать. Спасибо за подборку информации и полезные ссылки!
15. pavel_pss 289 18.06.13 10:21 Сейчас в теме
16. pavel_pss 289 18.06.13 12:30 Сейчас в теме
Было бы еще не плохо если бы ты выложил dll или ссылку где можно скачать.
17. Elisy 948 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 948 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 Сейчас в теме
В номенклатуру грузить модели товара!
Оставьте свое сообщение