Форум пользователей Visio

Форум по вопросам применения и программирования в Visio
Текущее время: 21 июл 2017, 16:41

Часовой пояс: UTC + 3 часа [ Летнее время ]


Правила форума


Размещение файлов в формате vsd (а не vsdx/vsdm), увеличивает вероятность ответа стремительным домкратом !!!



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Мониторинг изменений данных объетов
СообщениеДобавлено: 16 окт 2016, 15:16 
Не в сети
Новичок

Зарегистрирован: 16 окт 2016, 12:41
Сообщений: 23
Использую Visio c: 2016
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Начну издалека. Я черчу проекты по автоматизации (КИПиА, АСУТП….). Работаю в обычном AutoCAD. Мягко сказать, не подходит он для этого. Есть AutoCAD Electrical, но он слишком “не гибкий” и сложный для освоения.
Я не программист, хотя с программирование знаком. Для AutoCAD писал код на LISP. Точнее я могу прочитать код, разобраться в нём, видоизменить, а вот написать что-то своё с нуля - пока сложновато. С VBA не знаком. Хотя уже неделю изучал этот форум. Посмотрел все темы. Разбирался в примерах кода - более менее понятно. Хотя конечно всю объектную модель visio пока не представляю. Visio понравился своей гибкостью и интуитивной простотой.
Теперь ближе к делу. Хоть я и начинающий, но планы у меня большие. У меня есть наброски идеологии как должна работать САПР. Прошу уважаемых гуру данного форума оценить реализуема ли эта идеология. Ниже по пунктам распишу что хочу реализовать.

1.Допустим, есть набор объектов - условно-графическое отображение УГО.
У каждого моего объекта обязательно будет пользовательское данное - "ПОЗИЦИЯ"
Позиция может быть незаполненной, или иметь буквенный префикс, например, SF.

2.При добавлении УГО на страницу, при его копировании (CTRL+C, CTRL+V), или с зажатым CTRL. Необходимо чтобы увеличивался номер позиции. Например, SF1, SF2... Это правило должно соблюдаться во всём документе, то есть нумерация сквозная. (Примерно как это реализовано в этой теме - viewtopic.php?f=6&t=913)

3.При дублировании УГО (CTRL+D) должно быть полное дублирование объекта, включая номер позиции и все его свойства (Shape Data). Это означает, что в документе могут быть Объекты с одинаковой позицией.

4.Ключевой момент. Допустим на листе (или во всём документе) есть два объекта. Их позиции SF1 и SF2. Если мы переименуем позицию SF2 в SF1, то должно появиться предупреждение, что объект с такой позицией уже есть. Предоставить варианты действия:
- увеличить/оставить номер;
- Заменить свойства из SF1 в SF2;
- Заменить свойства из SF2 в SF1;
- Объединить свойства, с заменой из SF1 в SF2;
- Объединить свойства, с заменой из SF2 в SF1;

Это должно также работать если в документе больше чем 2 объекта с одинаковой позицией, то есть есть изменяемый объект и вставленные
Если мы создаем новый объект, например нарисовали круг, и добавили ему позицию, и приравняли её к какой-нибудь существующей, то этому объекту добавляются пользовательские данные сущ. объекта. (то есть объект не обязательно должен быть из набора). Знаю что есть Addon по копированию свойств объекта из этой темы - http://www.visio.getbb.ru/viewtopic.php?f=15&t=1042. Но больше понравился вариант из - viewtopic.php?f=15&t=217, так как я смог его прочитать и понять.

5.Объекты с одинаковой позицией должны быть связаны между собой во всём документе. То есть, если одному из объектов добавляется новая строка данных, или изменяются значения сущ. данных, то эти изменения должны коснуться всех объектов с этой позицией. Даже если мы меняем номер позиции, то все объекты с этим номером также меняют номер позиции.
Данные будут добавляться и как из источника внешних данных, так и вручную.
Что-то подобное было в этой теме - http://www.visio.getbb.ru/viewtopic.php?f=5&t=231, но не совсем работает так как надо, и не отслеживает изменения во всём документе.

6.Удаление одно из объектов с одинаковой позицией не должно влиять на свойства других объектов с этой позицией

7.Необязательный, но крайне желательная функция. Все объекты с одинаковой позицией должны иметь гиперссылки друг на друга. Получается, что одному объекту будет добавлено несколько гиперссылок. Гиперссылка должна увеличивать страницу по ширине объекта. Лучше чтобы гиперссылки добавлялись по мере добавления объектов. Хотя можно уже и в готовом проекте просканировать объекты и добавить гиперссылки.
При удалении объектов гиперссылки должны удаляться

Вот такое я хочу попытаться реализовать. Прошу помочь советом - можно ли такое реализовать и если да, то с чего начинать. Планируется работать в Visio 2016


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Мониторинг изменений данных объетов
СообщениеДобавлено: 16 окт 2016, 16:47 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 864
Очков репутации: 100575

Добавить очки репутацииУменьшить очки репутации
Реализовать вроде бы можно. По ходу реализации выяснится, что некоторые вещи реализуются тяжело, поэтому придется их немного видоизменить. Ну, это как обычно.
Начинать скорее всего нужно с создания некого базового объекта. И постепенно наращивать его свойства и методы работы с ним.
Могу предположить, где встретятся трудности...
1. Трудно будет реализовать одинаковое поведение и свойства для разнообразных объектов. Или их нужно будет все делать самому и с нуля, чтобы по возможности были одинаковыми.
Поэтому я бы рассмотрел возможность оставить шейпы более свободными, а позиции (позиционные обозначения) показывать не дополнительных связанных объектах, типа выносок, полок.
2.
Цитата:
Данные будут добавляться и как из источника внешних данных, так и вручную.
это из той же оперы. Связь с источником данных (штатная) осложняет контроль за структурой шейпа. В шейп могут внедриться элементы, которых там не ждали.
3. Разное поведение по Ctrl+V и Ctrl+D слегка противоречит сути Visio. Проще отслеживать события шейпа или документа, чем нажатия на клавиши. А события-то в этом случае одинаковые.
4. Связь через гиперссылки тоже представляется технологически неудобной. Лучше бы использовать поиск. Кстати, у Вас ведь помимо схем будет что-то типа перечня элементов или ведомости. И данные явно будут в отдельном окне. Вот оттуда и нужно искать способ перехода.
5. Надо бы разделить "разные объекты с одинаковой позицией" и "один и тот же объект, показанный в разных местах документа". Если такое есть, конечно. И по-разному реализовать логику работы с ними.
Вроде бы пока больше ничего страшного не видно.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Мониторинг изменений данных объетов
СообщениеДобавлено: 16 окт 2016, 17:18 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 487
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100602

Добавить очки репутацииУменьшить очки репутации
IMHO, вполне реализуемо, но это дохрена работы. Некоторые хотелки в-общем, нетривиальные, хотя (насколько я вижу) все реализуемые.
Я бы оценил в месяц возни, при условии что программист, который это будет делать, знает Visio, и что руки у него из нужного места растут.

Цитата:
1. Трудно будет реализовать одинаковое поведение и свойства для разнообразных объектов. Или их нужно будет все делать самому и с нуля, чтобы по возможности были одинаковыми. Поэтому я бы рассмотрел возможность оставить шейпы более свободными, а позиции (позиционные обозначения) показывать не дополнительных связанных объектах, типа выносок, полок.
2. Данные будут добавляться и как из источника внешних данных, так и вручную.
это из той же оперы. Связь с источником данных (штатная) осложняет контроль за структурой шейпа. В шейп могут внедриться элементы, которых там не ждали.
Ну это имеет смысл если он думает о трудозатратах (т.е. если у него бюджет или время ограничены) ;)
Цитата:
3. Разное поведение по Ctrl+V и Ctrl+D слегка противоречит сути Visio. Проще отслеживать события шейпа или документа, чем нажатия на клавиши. А события-то в этом случае одинаковые.
Не совсем одинаковые. При желании можно отследить через Application.IsInScope(visDuplicate) ;)
Visio сначала открывает "высокоуровневый" scope типа "Paste" или "Duplicate", а потом уже идет событие ShapeAdded например.

Machestro, в общем если у тебя нет бюджета на разработку на месяцок-другой, я бы не выпендривался, и ел что дают (в данном случае - использовал бы связь с данными в Excel) :D

_________________
Инструменты для облегчения создания диаграмм, и статьи по Visio:
http://unmanagedvisio.com/


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Мониторинг изменений данных объетов
СообщениеДобавлено: 16 окт 2016, 17:32 
Не в сети
Новичок

Зарегистрирован: 16 окт 2016, 12:41
Сообщений: 23
Использую Visio c: 2016
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
1. Трудно будет реализовать одинаковое поведение и свойства...


Надо лишь копировать Добавленные данные (секция Shape Data), то есть текстовую информацию. Речь не идёт о копировании каких-то динамических свойств. Например у автоматического выключателя есть такие данные Позиция (SF1), Производитель, ток и т.д. Если на другой странице я создам любой объект - пускай квадрат, и добавлю ему данные - Позиция = SF1, то все остальные данные подхватятся и создаться из автомата, который на стр. 1.

2. Хотелось реализовать базу данных в Excel. Есть одна книга, где на листах описываются различные изделия. Допустим лист1-автоматические выключатели, лис2 - Блоки питания и т.д. Эта книга подключена к шаблону Visio. Потом обычным Drag and Drop Данные перетаскиваются на любой объект. Насколько я понял в этом случае объекту добавляются дынные (то есть в Shape Data добавляются новые строки ), наименование которых соответствует наименованию столбцов в книге Excel.

3. На счёт этого согласен. Это просто "хотелка". Хотелось как-то различить команды. Хотя по факту на одном листе не должно присутствовать одного объекта с одной и той же позицией. Вообще по поводу нумерации на хорошенько подумать, так как возможны всякие префиксы, суффиксы к номеру.

4.Гиперссылки нужны для PDF. Проекты будут передаваться в PDF.
Насчёт спецификаций и перечней. Планировалось делать штатный отчёт "Отчёт о фигурах" - сливать это всё в Excel и там с помощью макросов сортировать и приводить к нужному виду (хотя та ещё задачка).


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Мониторинг изменений данных объетов
СообщениеДобавлено: 16 окт 2016, 18:13 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3348
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
Ты прав, визит очень гибкий инструмент!
Machestro писал(а):
но планы у меня большие
это очень хорошо, только от меня (как от местного админа) большая просьба
- для обсуждения нюансов реализации вышеупомянутых задач и их подзадач, создавать новые отдельные темы! А мы уже советом поможем!


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Мониторинг изменений данных объетов
СообщениеДобавлено: 16 окт 2016, 18:38 
Не в сети
Ветеран

Зарегистрирован: 21 окт 2011, 12:01
Сообщений: 875
Откуда: г. Екатеринбург
Использую Visio c: 2011
Очков репутации: 118

Добавить очки репутацииУменьшить очки репутации
это все сделать можно и относительно не сложно. но нужны навыки. лучше действительно по одному вопросу решать, а не в кучу все валить.

Machestro писал(а):
Надо лишь копировать Добавленные данные (секция Shape Data), то есть текстовую информацию. Речь не идёт о копировании каких-то динамических свойств. Например у автоматического выключателя есть такие данные Позиция (SF1), Производитель, ток и т.д. Если на другой странице я создам любой объект - пускай квадрат, и добавлю ему данные - Позиция = SF1, то все остальные данные подхватятся и создаться из автомата, который на стр. 1.


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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Мониторинг изменений данных объетов
СообщениеДобавлено: 19 окт 2016, 13:30 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3348
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
Machestro писал(а):
Работаю в обычном AutoCAD. Мягко сказать, не подходит он для этого.
если говорить за «голый AutoCAD из коробки», то да.
Surrogate в сообщении #9084 писал(а):
большинство людей делает такие вещи в CAD-подобных программах, там для этого больше возможностей. и можно нагуглить решение готовое (или почти готовое) в LISP.
Если не не изменяет память, видел что-то подобное в книге
Изображение
Зуев С. А., Полещук Н. Н. САПР на базе AutoCAD — как это делается. — СПб.: «БХВ-Петербург», 2004. — 1168 с. — ISBN 5-94157-344-8. 
Machestro писал(а):
Хотя конечно всю объектную модель visio пока не представляю
для информации
Surrogate в сообщении #8155 писал(а):
Объектная модель MS Visio ( ↓ картинка кликабельна)
Спойлер: показать
Изображение
9rey писал(а):
надо начинать постепенно и задавать конкретные вопросы
Machestro, если ты таки решил изобретать велосипед для выполнения вышеупомянутых задач в Visio, ждем вопросов !
Оффтоп:
На тебя вся надежда - что догоним количество сообщений на форуме до 10к к Новому Году Изображение


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Мониторинг изменений данных объетов
СообщениеДобавлено: 19 окт 2016, 17:28 
Не в сети
Новичок

Зарегистрирован: 16 окт 2016, 12:41
Сообщений: 23
Использую Visio c: 2016
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Книга хорошая, она мне помогла разобраться в LISP, так же как и другие книги автора. Но ЛИСПОМ всё не решить. Я уже достиг максимума в AutoCAD.

Велосипед собираюсь построить. Как раз в данный момент пишу некоторые наброски (даже что-то получается). Вопросы обязательно будут. Они уже есть, но чуть позже задам их


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot], Google Adsense [Bot] и гости: 2


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB