Представленный пример для 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-приложения, нужно вспомнить курс старших классов
школы и понимать векторы, точки в трехмерном пространстве, нормали к поверхностям.
Пример позволяет рисовать треугольник, куб и поверхность. Свойства камеры и взгляда
настраиваются через интерфейс пользователя и хранятся в реквизитах внешней обработки.
В случае необходимости нормали к плоскостям можно визуализировать. А если нужно
– показать сетку и увидеть, на основе каких примитивов строятся объемные фигуры.
Весь пример изобилует обращением к
пространству имен System.Windows.Media.Media3D, информацию о котором можно
найти на MSDN даже на русском языке.
Настораживает то, что для реализации простого примера с построением, скажем, куба,
необходимо написать достаточно много кода. Но это не издержки 1С, а общая проблема
любого программирования трехмерной графики.
Выводы
Тема трехмерной графики в 1С достаточно новая, В связи с этим в сети Интернет нельзя
найти примеров подобного подключения. Получается, что приведенный здесь пример является
пионером в 3d-графике. К достоинствам можно отнести полную интеграцию с 1С, где
прорисовка ведется в форме с другими родными элементами управления 1С.
Хотя практическую ценность технологии применительно к 1С придумать сложно. Фантазия
подсказывает только виртуальный 3д-склад или планограмму марчендайзеров. Тем не
менее, методика позволяет программировать на 1С для души. Ведь многие молодые разработчики
мечтают в будущем создавать игры, а технология позволит им попрактиковаться на знакомой
1С-системе прямо сейчас.
DirectXWpf.epf (28.31 kb)- пример обработки на 1С 8.1
Ссылки по теме
Оригинальный пример на C#: «Windows Presentation Foundation
(WPF) 3D Tutorial»
System.Windows.Media.Media3D - пространство имен
1C.Net:Предприятие – использование богатых графических возможностей .Net Framework
3D in XAML (на английском
языке)