gifts2017

[VectorDrawing] - Векторная графика в 1С

Опубликовал Василий Демидов (Душелов) в раздел Программирование - Работа с интерфейсом

ActiveX-компонента для работы с векторной графикой: рисует примитивы (прямоугольники, линии, многоугольники, эллипсы, текст), группирует их в сложные объекты. Позволяет вращать, деформировать, масштабировать. Инициируются события (при шелчке (одинарном и двойном) мышки на объекте и др.). Фигуры позволяют хранить ссылки на объекты 1С.

*** Для работы компоненты потребуется установленный Microsoft .NET Framework 2.0, который можно скачать отсюда.

и зарегистрировать компоненту в Windows - запустить reg.bat
(для удаления информации о компоненте в Windows - запустить unreg.bat)

*** Добавление на форму 1С:

v7.7: 1С++ и FormEx:

v8.x: Меню "Форма" - "Вставить ActiveX..." - Выбрать элемент "Душелов.VectorDrawing"

История

1.0.0.4:

   Добавлена функция получения списка фигур, которые содержат выбранную координату

   - ПолучитьФигурыПоКоординате(x, y); //возвращает массив объектов типа "Фигура" (ComSafeArray)

   Добавлены свойства у объекта типа "Фигура":

  - ЗаблокированаДеформация //булево  
  - ЗаблокированаДеформацияПоВысоте //булево  
  - ЗаблокированаДеформацияПоШирине //булево  
  - ЗаблокированПоворот //булево  
  - ЗаблокированоПеретаскивание //булево  
  - ЗаблокированоПеретаскиваниеПоГоризонтали //булево  
  - ЗаблокированоПеретаскиваниеПоВертикали //булево

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

Наименование Файл Версия Размер Кол. Скачив.
-
.1241812323 101,01Kb
11.02.15
642
.1241812323 101,01Kb 642 Бесплатно
Демонстрационная конфигурация
.1245934164 205,67Kb
11.02.15
208
.1245934164 205,67Kb 208 Бесплатно

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Василий Демидов (Душелов) 08.05.09 23:54
Описание методов и объектов будет позже.
Пока программно можно создавать только прямоугольник.
А вот поиграться визуальным редактированием можно уже сейчас.
Группировать объекты, вращать, растягивать, деформировать и т.п.
2. Олег Валуйский (waol) 09.05.09 14:26
вещь нужная и есть немалое подозрение, что пригодится
3. norpn (norpn) 09.05.09 22:47
Если бы существовала возможность вызывать определенное событие в 1С (например, открытие формы списка или элемента) при определенных действиях с фигурами (например, при двойном клике), было бы просто супер
4. Василий Демидов (Душелов) 11.05.09 15:10
(3) А в чем проблема-то это сделать?
5. Василий Демидов (Душелов) 11.05.09 15:10
В примере есть показ отработки двойного щелчка мышкой на фигуре.
7. Александр Рытов (Арчибальд) 12.05.09 08:04
А сам грозился уехать на две недели. Их однозначно кучка!
8. Allexey (alex_4x) 12.05.09 10:40
Вещь полезная.
хорошо бы еще импорт объектов векторных хоть бы одного формата поддерживать.
9. Василий Демидов (Душелов) 12.05.09 10:56
(6) в 3Д что ли?
(7) Пока отпуск задерживается ;)
(8) Корел выложил формат своих файлов?
10. Василий Демидов (Душелов) 12.05.09 12:01
Добавил программное создание всех фигур.
Добавил описание свойств и методов.

Продолжаем работу дальше...
11. vip (vip) 12.05.09 12:13
(10) Кгхрм...
С тобой не соскучишься ;))
Придется знакомиться глубже. Если понравится, с тебя не слезу :))
12. Аркадий Кучер (Abadonna) 12.05.09 12:15
>Придется знакомиться глубже. Если понравится, с тебя не слезу :))
Вау :)))))))))))))))))))))))))
13. vip (vip) 12.05.09 12:28
(12) Не сомневался в твоем ответе.
Старый пошляк ;))))
14. Аркадий Кучер (Abadonna) 12.05.09 12:29
>Старый пошляк ;))))
Модно подумать ты - пошляк молодой ;))))))))))))
15. Василий Демидов (Душелов) 12.05.09 12:53
(11) :))
Смотри еще в сторону групиировки простых элементов в сложный. Визуально.
Я пока программно это реализовываю. Ну и, конечно, будет ассоциация объекта с 1С-ными данными.
16. vip (vip) 12.05.09 12:56
(15) Уже смотрю. Но интересует именно программная группировка.
А так, очень богатая штука получается.
17. Юрий Коляда (kolyada) 12.05.09 13:37
А можешь добавить описание как ты сделал сам Активикс, чтобы он работал с 1С? Я в своё время пытался, но знаний не хватило. Также не разобрался до конца, почему одни активиксы работают в 1С, другие - нет.
18. Василий Демидов (Душелов) 12.05.09 13:38
(17) Описания никакого. Обыкновенный активикс по всем правилам.
19. vip (vip) 12.05.09 13:39
(17) Любой активикс может работать с 1С.
20. Александр Окулов (PowerBoy) 12.05.09 13:48
А как схему напечатать или сохранить в графический файл?
21. Юрий Коляда (kolyada) 12.05.09 13:58
(19) я почему вспомнил это: пробовал какой-то зарубежный активикс (было это полгода назад, забыл уже что за хрень, вроде так и называется Vector Graphics ActiveX), позволяющий рисовать векторную графику, прямо как этот активикс от Душелова. Ну вот он и отказался работать в 1С. Хотя даже в Wordе работал.
22. Василий Демидов (Душелов) 12.05.09 14:25
(20) Пока никак.
(21) Должен был заработать.
23. Юрий Коляда (kolyada) 12.05.09 14:34
(22) Да точно (посмотрел свои записи) эта хрень Vector Graphics ActiveX v.1.6.7 в 1С не работает. А там более 1000 всевозможных графических методов.
24. GSoft. (GSoft) 12.05.09 15:34
подскажите как подключить в семерке
25. Василий Демидов (Душелов) 12.05.09 15:42
(24) Перем Рисование;

Процедура ПослеОткрытия()
Рисование= СоздатьОбъект("АктивИкс");
Рисование.УстановитьАтрибут(Форма, "АктХ");
//"АктХ" - идентификатор элемента диалога, на месте которого будет создан элемент ActiveX.
//только для реквизитов диалога типа "Текст".
Рисование.СоздатьЭУ("Душелов.VectorDrawing");
Рисование.УстановитьФокус();
КонецПроцедуры
26. Василий Демидов (Душелов) 12.05.09 15:42
Добавил методы по группировке и редактированию.
27. Епрст (Ёпрст) 12.05.09 15:49
(24)
например так:
АктивИкс = СоздатьОбъект("АктивИкс");
АктивХ.УстановитьАтрибут(Форма,"ИдАтрибутаНаФорме");
АктивХ.СоздатьЭУ("Душелов.VectorDrawing");
АктивХ.УстановитьФокус();
28. Епрст (Ёпрст) 12.05.09 15:49
29. Епрст (Ёпрст) 12.05.09 16:02
странно, не отрабатывают горячие клавиши нефига :(
30. Епрст (Ёпрст) 12.05.09 16:04
и хинтов бы добавить еще..
31. Василий Демидов (Душелов) 12.05.09 16:05
32. Епрст (Ёпрст) 12.05.09 16:06
(31) ага, в клюшках вообще ни одна не срабатывает :(
33. Епрст (Ёпрст) 12.05.09 16:08
34. Аркадий Кучер (Abadonna) 12.05.09 16:10
В клюшках (в них самих) ваще нет сочетания CTRL+A (уроды, блин)
Помню, когда делал форматтер для клюшек приходилось программно нажимать пункт меню "Выделить всё"
35. Епрст (Ёпрст) 12.05.09 16:11
(34) ну... опенконфом можно сделать (у меня работает) :)
36. Епрст (Ёпрст) 12.05.09 16:12
(31) не работают так же Del, еще например..
37. Аркадий Кучер (Abadonna) 12.05.09 16:12
ну дык опенконфом... я про то, что они не удосужились даже стандартные виндососвские замутить
38. GSoft. (GSoft) 12.05.09 16:18
39. Василий Демидов (Душелов) 12.05.09 17:07
В ближайших планах - формирование собственной библиотеки примитивов и работа с 1С-ными объектами.

Уже сейчас вполне можно сделать аналог схемы бизнес-процессов полностью программно.
40. napala@ (napala@) 12.05.09 17:36
не, ну прикольно! ))) пригодится-нет, не знаю, альтернатива Paint ), еще бы цвет менять и сохранять... ваще PhotoShop будет!
41. Василий Демидов (Душелов) 12.05.09 17:43
42. Эстер Коган (e.kogan) 12.05.09 18:02
43. napala@ (napala@) 12.05.09 18:08
(41) туплю, нав, у фигур не смогла...
44. Василий Демидов (Душелов) 12.05.09 19:47
(42) А что пишет?
(43) ЦветФона1, ЦветФона2
45. napala@ (napala@) 12.05.09 20:35
(44) ага, уже догадалась ))) спасибо. клёво!
46. mazatrackers (dushich) 13.05.09 07:47
Ну как обычно :) Душелов жжот :)
Сделай пожалуйста дружищще описание методов и объектов.
Мне как раз сейчас такая штука нужна.
В табличном поле это не красиво выглядит да и изменять надо....
есть на крайнем севере поселок.....
вагончики стоят.....
- Хм ну вот ваши вагончики... можете просто щелкнуть по одному и посмотреть кто там живет....
- А если я вагончик передвину, ну или еще один поставлю, ну или уберу устаревший... как мне........?
- Ну там есть справочник "Вагончики", ну там есть коодинаты....
- Коорди.. что? оО
47. mazatrackers (dushich) 13.05.09 07:51
Не весь топик прочитал....
того что есть в комментах уже достаточно
Душевное спасибо!!!!
Душелов, кинь мне на dushich(собака)mail.ru свой номер кошелька. Буду зарплатой делицца :)
48. Василий Демидов (Душелов) 13.05.09 09:01
(47) :) В профиле у меня все указано ;)
49. kadr (kadr) 13.05.09 09:31
Векторная графика в 1С - вещь достаточно необходимая. Если поискать, в сети можно нарыть несколько достаточно хороших ActivXов.

Только вот стоит ли разрабатывать что-то свое с нуля? Не проще взять к примеру открытый формат SVG и реализовать его средствами GDI?
50. Василий Демидов (Душелов) 13.05.09 09:49
(49) Платных?

Стоит разрабатывать. Как минимум за то, что в векторную фигуру передавать ссылку на 1С-овский объект. Мне проще свое написать, чем брать чужие, платные, ломать их и т.п.
51. kadr (kadr) 13.05.09 09:58
(50)
Я не говорю, что не стоит, может проще пойти по другому пути, взяв за основу что-то зарекомендовавшее себя? Если бы, как вы писали выше, Corel открыл свой формат, возможно Вы бы взяли его за основу ведь так?

Почему платных? Тот же VGA версии 1,0 бесплатен, CorelSVG, AdobeSVG
Что имеется ввиду передавать ссылку?
Ассоциировать элемент графики с объектом 1С можно через какое-нибудь банальное id объекта.

52. Василий Демидов (Душелов) 13.05.09 10:02
(51) Ага. id.. И для того, чтобы, к примеру, при наведении мышкой на объект выпадало меню с действиями и с информацией о предварительной цене (к примеру ПВХ), наличии на складе. Что делать будем с этими зарекомендовавшими объектами? ;)
53. kadr (kadr) 13.05.09 10:03
Вывести дополнительным слоем или в отдельном ЭУ формы :)
54. kadr (kadr) 13.05.09 10:07
Не предполагал, что задумка у вас настолько глубока. Если удасться интегрировать ваш AX в среду настолько, насколько Вы описали - равных ему я думаю не будет.

но в дальнейшем, как обычно, встанет вопрос скорости отрисовки объектов, расширения за счет скриптов :)
55. kadr (kadr) 13.05.09 10:09
Кстати, выпадать будет меню 1С?
56. Василий Демидов (Душелов) 13.05.09 10:11
(53) Ага, спасибо, и отдельный слой пересчитывать при масштабировании и скроллинге.
(55) Нет, меню выпадать будет собственное, но оно будет генерить события в 1С.
57. kadr (kadr) 13.05.09 10:19
(53) Ага, спасибо, и отдельный слой пересчитывать при масштабировании и скроллинге.
Затраты времени для пересчета при масштабировании и скроллинге будут заметны при большом количестве объектов, к примеру в ГИС приложении.
Посмотрите библиотеку IbisMap разработки Rebelx - никаких задержек при большом количестве объектов

(55) Нет, меню выпадать будет собственное, но оно будет генерить события в 1С
Реализовывал это же на базе SVG пару лет назад - ничего сложного
Я думал, вы хотите реализовать обработку событий объекта графики с помощью объектов 1С - меню, диалогов и т.д.
Вот это было бы по настоящему....
59. Василий Демидов (Душелов) 13.05.09 10:22
(58) >Я думал, вы хотите реализовать обработку событий объекта графики с помощью объектов 1С - меню, диалогов и т.д.

А оно это надо? Можно и это окно вызывать. Передаешь объект 1С-овский, у него свой форма с меню, ее вызывать без проблем, как в моей Tray1C, где всплывающее окно 1Совское вызывается.
60. kadr (kadr) 13.05.09 10:22
Кстати, в AX вы же можете получить контекст приложения?
Или это только в ВК?
61. kadr (kadr) 13.05.09 10:25
А скорость отрисовки объектов не смотрели? Ну к примеру миллиона?
62. Василий Демидов (Душелов) 13.05.09 10:25
(60) Я могу передать объект 1С и работать с ним в полной мере.
Контекст приложения только в ВК, хотя на эту тему еще подумать можно.
63. kadr (kadr) 13.05.09 10:28
Вот это было бы круто - вызывать объекты 1С а не собственные, а собственные использовать для целей графики (перемещения, масштабирования и тд)
64. Василий Демидов (Душелов) 13.05.09 10:34
(63) А какие объекты надо вызывать? У фигуры есть объект 1С, соответственно все методы и свойства используются 1С-овские.
65. kadr (kadr) 13.05.09 10:53
А возможно в объекте графики хранить ссылку на объект 1С?
Чтобы к примеру отработал следующий код

Предположим, что в свойстве ссылка объекта фигура хранится ссылка на объект 1С СправочникНоменклатура

Процедура ЭлементУправления1ПриДвойномЩелчкеМышкойНаФигуре(Элемент, Фигура)
//Сообщить("Нажат " + Фигура.Имя);
Фигура.Ссылка.ПолучитьОбъект().ПолучитьФорму().Открыть();
КонецПроцедуры
66. Василий Демидов (Душелов) 13.05.09 10:57
(65) Я про это выше и говорил.
67. kadr (kadr) 13.05.09 10:59
что то в своей копии вашей библиотеки я этого не увидел..
может есть версия новее?
68. Эстер Коган (e.kogan) 13.05.09 11:02
(44) Видимо, с сетевого диска просто не стартовало. Скопировала на локальный - всё пошло.
69. Василий Демидов (Душелов) 13.05.09 11:27
(67) Это все в разработке. Можно в комментариях посмотреть, что делается и что добавляется.
(68) Да, с сетевого не рекомендуется.
70. kadr (kadr) 13.05.09 12:04
(69) ну тогда остается только пожелать терпения и удачи :)
71. Igor Karpov (igorK) 17.05.09 21:33
А есть такая компонента для 1С которая могла бы например определить что подключено 2-а монитора и выводить мне нужную информацию на второй монитор из 1С ?
72. Василий Демидов (Душелов) 18.05.09 10:00
73. Василий Демидов (Душелов) 19.05.09 16:21
Добавил возможность загрузки и выгрузки описания фигур (собственные объекты).
74. Василий Демидов (Душелов) 19.05.09 16:22
Правда пока еще есть загрузку до конца не доделал (текст пока не грузится, как положено), но все в процессе разработки дальше. Тестировать можно дальше.
Так же слушаю предложения.
В ближайшее время добавлю работу с 1С-ными объектами, ассоциированными фигурам.
75. Василий Демидов (Душелов) 19.05.09 16:25
В качестве примера в архиве добавил "стрелку".
76. Igor Karpov (igorK) 19.05.09 21:38
Я так понял из всего прочитанного выше вы хотите автоматизировать учет в кинотеатрах ?! Т.к. например в "USC примера" для автоматизации кинотеатров поддерживается монитор посетителя где кассир нажимает кнопку у себя и на втором мониторе показывается какие места свободны в зале. Ну а если в 1С невозможно реализовать работу с 2-я мониторами то не очень то и удобно это, особенно когда еще и зал то не один как было в моем случае, а аж 3-и и все разные по размерам и количествам мест. Думаю кассиру не очень объяснять на пальцах какое и где место свободно.

Или есть какая то другая альтернатива монитору посетителя ?

Т.к. я то же в свое время хотел написать по 8-ку автоматизацию кинотеатра.
77. Василий Демидов (Душелов) 19.05.09 21:43
78. Александр Окулов (PowerBoy) 25.05.09 06:12
Я все жду когда появится вывод схемы в графический файл и на принтер. Это по моему должна быть первостепенная задача, которая должна быть реализована. Без этого весь смысл схемы теряется.
79. Василий Демидов (Душелов) 25.05.09 09:35
(78) Это как раз совсем не сложно сделать. Первостепенная задача - это движок разработать, а всякие "рюшечки" - это уже потом.
80. Василий Демидов (Душелов) 25.05.09 11:21
Добавил метод:
- СохранитьКартинку(ПутьКФайлу, ФорматФайла); //ФорматФайла - строка (bmp, emf, exif, gif, icon, jpg, memorybmp, png, tiff);

Фон картинки - цвет фона панели рисования.
PowerBoy; +1 Ответить
81. Василий Демидов (Душелов) 27.05.09 17:39
Ну что, товарищи, результаты тестов есть? ;)
Какие пожелания бы хотелось видеть? А то релиз уже не за горами.
82. Василий Демидов (Душелов) 28.05.09 13:19
При закрытии обработки рекомендуется использовать метода "Закрыть()" для очистки памяти и предотвращение зависания 1С в задачах.

Добавил у фигур свойство "Объект", которое хранит ссылку на любой объект 1С.
Т.е. можно писать конструкции, вида:
"Прямоугольник.Объект.ПолучитьФорму().Открыть();"
83. Василий Демидов (Душелов) 28.05.09 15:57
Добавил описание фигуры (свойство "Текст") и вывод его при наведении мышкой на фигуру.
84. Александр Окулов (PowerBoy) 10.06.09 08:59
1. Хотелось бы задавать размеры редактируемого поля ну и его вертикальный и горизонтальный скроллинг.
2. Добавочное поле к каждому объекту "Title", которое выводилось бы всегда, либо в середине либо рядом с объектом (по выбору).
3. Поле Текст оставить, что-то я его не обнаружил в компоненте.
4. Возможность привязки соединительных линий к объектам и чтобы при перемещении объекта соединительная линия следовала за ним, ну и возможность установки стрелок у этих линий.
85. dushelov (Душелов) 10.06.09 09:42
(84) 1. Ну да. Это у меня в планах стоит :)
2,3. Текст у фигуры. Он как раз и является "Title".
(4) Ага, аналог MS Visio и Бизнес-процессов 1С-ки.
86. dushelov (Душелов) 10.06.09 16:13
Исправил ряд найденных ошибок.
Добавил пример сложной фигуры (компьютер).
87. dushelov (Душелов) 10.06.09 17:22
Добавил свойства компоненты:

- Авторазмер //булево
- Ширина
- Высота

При отключенном авторазмере скриншот будет делаться заданной ширины и высоты, а так же сама панель будет скроллиться.
88. dushelov (Душелов) 10.06.09 21:30
Добавлено свойство у фигур:

- ПоказыватьТекстВсегда; //булево - выводит всегда описание фигуры

и метод у фигур:

- Показать(); //скроллин видимого поля до выбранной фигуры
89. Епрст (Ёпрст) 23.06.09 12:48
Свойство "Заблокирован" на что-нить влияет вообще ?
Или не реализовано ?
...
90. dushelov (Душелов) 23.06.09 13:05
(89) Реализовано, но не до конца ;)
Как бы не можешь двигать и изменять размеры.
91. Епрст (Ёпрст) 23.06.09 13:36
(90) как бы в в клюшках не работает :(
А оч. надо...
92. Епрст (Ёпрст) 23.06.09 13:38
+91 т.е даёт и двигать и изменять размеры...
93. dushelov (Душелов) 23.06.09 14:04
(91) Компонента еще в процессе разработки. И до блокирования руки дойдут.
Позже.
94. dushelov (Душелов) 25.06.09 16:51
Обновил.
Добавил несколько новых методов и свойств.

Добавил демонстрационную конфигурацию "Визуализация сети", которая, используя компоненту, рисует сеть, можно посмотреть параметры компьютеров, щелкнуть мышкой по ним для открытия из форм...
95. dushelov (Душелов) 30.06.09 11:35
- добавлена возможность двигать фигуры курсором
- тестовая реализация фигуры "стрелка"
96. Boris Abramuk (Boris_1c) 30.06.09 15:09
эх печать бы... была бы пуля а не компонента
97. dushelov (Душелов) 30.06.09 15:09
(96) А в чем проблема с печатью? Сохранить в картинку и вставить в печатную форму - не вижу проблемы.
98. dushelov (Душелов) 09.07.09 15:11
Добавлена функция получения списка фигур, которые содержат выбранную координату

- ПолучитьФигурыПоКоординате(x, y); //возвращает массив объектов типа "Фигура" (ComSafeArray)

Добавлены свойства у объекта типа "Фигура":

- ЗаблокированаДеформация //булево
- ЗаблокированаДеформацияПоВысоте //булево
- ЗаблокированаДеформацияПоШирине //булево
- ЗаблокированПоворот //булево
- ЗаблокированоПеретаскивание //булево
- ЗаблокированоПеретаскиваниеПоГоризонтали //булево
- ЗаблокированоПеретаскиваниеПоВертикали //булево
99. vip (vip) 09.07.09 16:36
100. Евгений Дёмин (bumbarasch) 14.07.09 08:43
Очень нужная вещь... Попробую отрисовать схему энергосети, если функционала для этой задачи достаточно, цены ей не будет...
101. vip (vip) 14.07.09 08:59
(100) Функционала уже достаточно для твоей задачи.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа