8

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

by Elisy 23. June 2010 09:49

Представленный пример для 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. Место в ней 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С-системе прямо сейчас.

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 (на английском языке)

Comments

Eclipse
Eclipse United States
6/23/2010 10:23:20 AM #

Я пытаюсь выяснить, то же самое, и спасибо, кого я получил его с вашими советами.

p90x workout
p90x workout People's Republic of China
6/23/2010 2:27:41 PM #



They are good in function and can be good to your healthy! Hope you like it!

trackback
progg.ru
6/23/2010 7:04:57 PM #

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

Thank you for submitting this cool story - Trackback from progg.ru

Garmin Forerunner 405
Garmin Forerunner 405 United States
6/27/2010 8:30:44 PM #

You truly make it seem so easy with your presentation, but I find this topic to be really something which I think I would never understand. It seems too rarified and very broad for me. I am looking ahead for your next post; I will try to get the knack of it.

calories burned walking
calories burned walking United States
6/29/2010 4:44:54 AM #

I found walking for a couple of hours each day helped me lose fat a whole lot, i quickly started running and that helped a lot more. However you should calculate how many calories you burn.

Bailey Button Ugg Boots
Bailey Button Ugg Boots People's Republic of China
6/29/2010 9:19:48 AM #

Was honored to see such a good article!

Angelica Trent
Angelica Trent United States
6/29/2010 10:24:03 AM #

Thanks for the great post. Keep up the good work. I'll spread the word around.

birkenstock
birkenstock United States
6/30/2010 6:09:53 AM #

I really appreciate what you post.

Powered by BlogEngine.NET 1.6.0.0
Original Design by Laptop Geek, Adapted by onesoft

Wisata Semarang : News : Travelling : Used Stationary Bikes : Used Stationary Bikes : Used Stationary Bikes : Seo Services Company : Indonesia Furniture Handicraft Wholesale Marketplace : My Blogpost : My Blogpost : My Blogpost: Eiknujomorp : Google Ranking Master Gujarat : Wisata Dieng