All Forums
 Категория Visio
 Форум Вопросы и ответы
 работаем с Visio через Delphi 7
Author Previous Topic Topic Next Topic  

m2700

21 Posts

Posted - 05/04/2006 :  21:09:31
вот, что интересно - если крутить задачи через D7, вызывая Visio(у меня 2000), получается быстрее чем через VBA...и еще одно преимущество - чертеж не привязан к VBA модулю автоматизации...
можно обрабатывать графические творения любой давности...
все крутится через .еxe последней модификации...Б.Г.-грустит,
а Борланд пьет кофе, или пиво...

brace

Russia
358 Posts

Posted - 05/05/2006 :  09:00:44
2 m2700

подробнее напиши плиз
или где почитать скажи можно на англицком...
что может делать дельфя с визио ???
она готовый чертеж может редактировать ???
или сама чертеж создать может на чистом листе визио ???
где D7 достать можно ???
Go to Top of Page

immortal

Russia
391 Posts

Posted - 05/05/2006 :  16:57:30  Visit immortal's Homepage
а зачем?

что значит крутить? я думаю что на С будет ещё быстрее, потомучто делфя фактически на Сях написана, да и на Васике тоже если это сделать, будет всё работать,
quote:
можно обрабатывать графические творения любой давности...

давно в визио работают немногие, я наверно один из тех которые работают давно, но както не сильно мнея напрягали старые файлы, да и вобще вроде не напрягали, есть проблема восстановления испорченных файлов, но в визио которое уже на подходе это решено, с помощью xml
quote:
все крутится через .еxe последней модификации
дак и без делфи всё крутится через ехе последней модификации, у меня она например 11.0.5509.0

quote:
одно преимущество - чертеж не привязан к VBA модулю автоматизации...

ну и что, у меня на Васике написаны адд-ины и адд-оны и ни к какому VBA не привязаны, а работать с объектной моделью можно без проблем из любого языка программирования, которые работают с объектной моделью, а для начинающего (а порой даже для опытного) программиста автоматизации, Васик лучше, тем, что можно пользоваться макрорекодером и код из VBA легко переносить в проект на VB
определив только ссылку на объект визио

тут, как говорится, кто в чём умеет, умеете вы в Делфях, пожалуйста, умеете вы в Сях, ради бога, я лично в Васике могу

визио 2003 форэвер

...а вобще-то я белый и пушистый.

Edited by - immortal on 05/05/2006 17:00:17
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 05/05/2006 :  18:26:52
Надо бы придумать и прокрутить контрольную задачу, чтобы можно было оценить насколько быстрее - на 2% или в два раза.
Go to Top of Page

m2700

21 Posts

Posted - 05/05/2006 :  19:02:33
...ситуация, которая заставила искать решение "строгать" чертежи на Visio через другой программный инструмент, следующая...
более 20 рабочих станций с тетками за рулем, рождают БЫСТРО чертежи, которые содержат более 2000 Shape,...после чего оные МЕДЛЕННО и наивно начинают заполнять на Excel всякую конкретику по этим чертежам...это все, в динамике законодательства, изменяется через месяц, или даже раньше. Приходится постоянно менять модуль автоматизации написанный для .vst c учетом всего этого чиновничьего беспредела.
Поднимаем из архива старый чертеж...начинаем его редактирование в Visio...и , уже доработанный модуль, лается на все и всех...
Приходится постоянно дописывать код для возможности работать со старыми чертежами. После того, как это все достало - было принято решение анализировать чертеж и заполнять Excel-спецификацию с применением отвязанного программного инструмента со своим интерфейсом и нормальным, не "Венгерским (VB)" кодом. Для меня - быстрее всего это делать на D3/4/5/6/7/8 - с интерф. польз. меньше мороки под W***
...вот и все !
А подход и куски кода - я скоро выложу...кстати, большую помощь в реализации всего этого оказал этот Сайт и Мастер Туманов в своих примерах по работе с Visio, в чем ему премного благодарен.
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 05/05/2006 :  19:32:50
quote:
А подход и куски кода - я скоро выложу...

Не забудьте :)
Go to Top of Page

m2700

21 Posts

Posted - 05/07/2006 :  12:42:14
...подход -
1.Задача - нужно, чтобы my.ехе сканировал чертеж Visio2000 (или CAD..dwg) и ,по определенным признакам фигур(доп.свойствам), выбирал и что-то с этой информацией делал...
2.Решение -
к инструментарию D7 подключаем библиотеку ТИПОВ (это .dll в Visio/Bin/...для каждого релиза Visio - своя, если надо, укажу конкренто, но вроде и так понятно...).
после этого, подключаем ее в раздел компиляции кода и все...
OOП модуль доступен для программирования.
Можно читать, редактировать заранее открытый чертеж, и творить все, что угодно...
я, в частности, считываю доп.свойства, провожу с ними вычисления, заполняю всякий текстовый статичный хлам для чиновников и заливаю Excel-шаблон.
Это подход к обработке чертежей без VB, со своим интерфейсом.
Если нужно, код вызова RPC серверов и т.д выложу, только куда...
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 05/07/2006 :  18:51:08
Так понятно далеко не всем :(
Я с Дельфи практически не работаю, поэтому сразу же наткнулся на проблемы.
Во-первых, проблема найти .dll. У меня Visio 2002, папки Visio/Bin/ не наблюдается... Предположил, что использовать надо Vislib.dll, которая лежит в Microsoft Office/Visio10
Далее пытаюсь подключить через меню Import Type Library.
При попытке инсталлировать рассказывает, что
"A class named TMaster is already installed" и дальше работать отказывается.
Это ей не понравилось, что TMaster уже существует на панельке Servers для PowerPoint.
При отключении это панельки находит следующего претендента - "A class named TShape". Но это уже на панели Additional, без которой не всегда можно обойтись...
Получается, что Дельфи не хочет устанавливать библиотеку типов от Visio, потому что такие типы уже существуют в других библиотеках...
Что я делаю не так или как с этим бороться?
Go to Top of Page

m2700

21 Posts

Posted - 05/07/2006 :  20:52:39
здесь все просто, я игнорирую подключение всяких А_Х, просто создаю модуль для своего проекта в коде используемого инстр.программирования (здесь - Delphi7.0, но может быть какой угодно, на чем жизнь заставила в свое время зарабатывать на хлеб насущный ).
Задача - создать Visio_TLB который в последствии будет обеспечивать внедрение в код при компиляции нужные нам функции для работы с открытым процессом Visio (чертеж должен быть загружен, здесь Боря Г. - просто молодец, содрал многозадачность с Unix-платформы).
Решение - открываем Проект_Импорт библиотеки типов...из списка ->
(у меня) Visio 2000 Type Liblary [Servise Release 1] [Version 2.1]...
открываем, он, зараза, прыгает сразу в BPL-директорию, но мы не такие наивные и выбираем ...Visio/VisLib32.dll, затем нажимаем кнопку [создать модуль] - в проекте открывается новый Паскалевский модуль, который в дальнейшем нужно подключить в секцию USES и при прог. внимательно читать, как обращаться к любимому Visio.
У меня, в процессе написания кода, случались биения головой о клаву, радостные запои и др. сопутствующие каждому пр-мисту жизненые события ...но в результате все работает и довольно шустро.
Go to Top of Page

brace

Russia
358 Posts

Posted - 05/10/2006 :  08:52:27

quote:
1.Задача - нужно, чтобы my.ехе сканировал чертеж Visio2000 (или CAD..dwg) и ,по определенным признакам фигур(доп.свойствам), выбирал и что-то с этой информацией делал

2 m2700
а стоит ли использовть дельфя для этих целей
в визио есть штатное средство репортс которое извлекает любую инфу
с чертежа и помещает её куда прикажете.
Go to Top of Page

immortal

Russia
391 Posts

Posted - 05/10/2006 :  18:25:00  Visit immortal's Homepage
я всё понимаю, но не пойму одного, в чём преимущества данной реализации на делфи по отношению к такой-же реализации скажем на Си или Васике? или тут просто в разрезе я умею на делфях поэтому на делфях и реализовал, умел бы на Сях, реализовал бы на сях.
Я так понимаю, что скорость не в том, что это сделано на делфи, а в способе реализации поставленной задачи. Кстати я только услышал, что быстрее по отношению к VBA, а не тестировали по отношению к аналогичной реализации на Сях или VB?
И както хотелось бы поточнее, скорость имеет какую-то величину, на сколько км, или байт, шейпов, документов в секунду быстрее?
Вобще как проходили тесты, какие шейпы использовались, сколько мастер-шейпов и ссылок на них и т.д.

Меня конечно интересует работа с мастершейпами и ссылками на них, тут например написали:
quote:
которые содержат более 2000 Shape


сколько из них одинаковых, т.е. построенных на одном мастершейпе?
Ведь как оказывается скорость можно реализовать не только написанием внешних фишек, но и спомощью мастер шейпов.

визио 2003 форэвер

...а вобще-то я белый и пушистый.
Go to Top of Page

m2700

21 Posts

Posted - 05/10/2006 :  20:01:39
...вот, есть люди не равнодушные к нашей прогр. сущности...
это греет душу, вызывает позывы поднять тост "...мы вместе.." и т.д.
про reports - спасибо, надо проверить...
для immo...попробуйте сотворить на Visio мастер ОЙ_МАМА - квадратик, или - что угодно другое...и заполните емкий (серьезный) чертеж на V размером не менее 800 кубов этой инфой...потом, помянув добрым словом Мастера Туманова, используя Его код(который работает, как часы..), просканируйте это творение на выборку этих мастеров на любое их свойство, и ...в Васике - успеваем закурить...а в С ил др. - тут радостное состояние души - всякие слова лезут в голову...хочется разбудить жену и сказать "Эй - ты знаешь..."...и узнать который сейчас час, и кто ты в настоящее время есть...и т.п. но не обидиться (что с них взять - работников кухонного интерфейса), а пойти и далее ласково давить клаву, сознавая, что мы-ребята не то-чтобы-как...
Go to Top of Page

immortal

Russia
391 Posts

Posted - 05/12/2006 :  08:32:40  Visit immortal's Homepage
м-да! что-то я не вижу результатов ваших тестов скорости, ну, чтож, вот мои:

выгружается из документа визио свойства 748-и шейпов, документ визио и ексель предварительно открыты
тест №1 выгрузка 5 свойств (имя мастера, розиция Х, позиция У, Prop.marka, Prop.number) вставка в ексель без активации ячеек ексель, ексель свёрнут: время вставки 1 мин 38 сек.
тест №2 выгрузка 5 свойств (имя мастера, розиция Х, позиция У, Prop.marka, Prop.number) вставка в ексель без активации ячеек ексель ексель развёрнут: время вставки 1 мин 50 сек.
тест №3 выгрузка 5 свойств (имя мастера, розиция Х, позиция У, Prop.marka, Prop.number) вставка в ексель с активацией ячеек ексель ексель развёрнут: время вставки 2 мин 01 сек.
тест №4 выгрузка 3 свойства (имя мастера, розиция Х, позиция У) вставка в ексель без активации ячеек ексель, ексель свёрнут: время вставки 1 мин 1 сек.
тест №5 выгрузка 5 свойств (имя мастера, розиция Х, позиция У, Prop.marka, Prop.number) всё тоже, что в тесте № 1 только вместо вставки в ексель данные из визио записываются в переменную: время вставки 1 мин 27 сек.

во всех тестах вставка происходила считыванием данных шейпа - вставкой в ексель по одному.

возможно вставка данных шейпов визио в переменную с соответствующими разделителями а потом значение переменной вставляем в первую ячейку екселя, соответственно быстрее будет на 10 секунд, как показывают тесты.

теперь про Отчёты...(Reports...), не знаю насколько точно я могу сравнивать тесты моей программы с reports, т.к. не знаю механизма выгрузки из reports, собственно вот тест:
подготовка - 16 секунд
выбор отчёта(в ручную) - 2
создание шаблона отчёта(в ручную если несделан) - 12 сек
выгрузка - 16 секунд

итого работа программы выгрузки - 32 секунды, ручная работа от 2 секунд.

видимо визио написан на сях, я пишу на васике вот собственно както сравнили васик и си, теперь тесты ждём от Вас на делфях

для чистоты экчперемента, воспользуйтесь моими файлами
http://www.immortal.vstu.edu.ru/test.rar (7,3М)
в архиве два файла визио test1 и test2 а заодно и задачка, test2 это такойже test1, т.е. они абсолютно идентичны, только из test1 удалён один элемент и получился test2, кто скажет какой элемент удалён из test1? обратите внимание на размеры файлов test1 и test2, получается из test1 удалили, значит test2 должен быть меньше, а он больше причём в несколько раз, почему? ответ в принципе я озвучивал на этом форуме.

кстати работа программы над файлами test1 и test2 отличается на 1 секунду

визио 2003 форэвер

...а вобще-то я белый и пушистый.
Go to Top of Page
  Previous Topic Topic Next Topic  
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)