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

Форум по вопросам применения и программирования в Visio
Текущее время: 13 дек 2018, 17:37

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


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


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)
Размещая ваши вложения на форуме используйте имена файлов содержащих латиницу !



Начать новую тему Ответить на тему  [ Сообщений: 18 ] 
Автор Сообщение
 Заголовок сообщения: При сохранении "улетают" координаты шейпов
СообщениеДобавлено: 18 дек 2017, 17:51 
Не в сети

Зарегистрирован: 18 дек 2017, 15:30
Сообщений: 8
Использую Visio c: 2017
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Здравствуйте, имеется файл "Макросы Visio" который я подключаю в качестве набора элементов к чертежу и запускаю из него макрос "ТР" (он должен бросать выноски на контура тёплого пола с информацией о номере распределителя, номере контура, длине трубы, длине гофры). Столкнулся с проблемой при повторном запуске макроса после сохранения и изменения чертёжа(перетаскивал точки линий которыми рисовл трубы) выноски не попали на контура и область выделения некоторых фигур, предположительно измененных "съехала" что видно на скрине. Возможно корень проблемы лежит вне плоскости программирования. Я работаю с визио недавно, как и с vba и не знаю в каком двигаться в плане поиска решения проблемы буду рад любой помощи. Файлы приложил архивом.


Вложения:
.rar [1.34 Mб]
Скачиваний: 23
Visio.vsd [171 Кб]
Скачиваний: 29


Последний раз редактировалось Zergling 19 дек 2017, 16:07, всего редактировалось 1 раз.
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: При сохранении "улетают" координаты шейпов
СообщениеДобавлено: 18 дек 2017, 20:18 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
А программиста уже уволили...? :)
Я посмотрел слегка, но ничего утешительного. Большой чертеж. Большой макрос.
Что именно улетает - не нашел.
Макрос не выполняется. При попытке запуска дает ошибку. Натыкается на шейп, у которого отсутствует строка с нужными Shape Data. И их действительно нет.
То есть либо макрос TP должен запускаться не первым, а с какой-то предысторией, либо на нужных листах...
Короче, быстро отладить чужую программу с непонятными функциями явно не получится.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: При сохранении "улетают" координаты шейпов
СообщениеДобавлено: 19 дек 2017, 01:33 
Не в сети
Ветеран
Аватара пользователя

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

Добавить очки репутацииУменьшить очки репутации
+1. Нужен автор кода (тот, кто писал эти макросы).
IMHO, стороннему человеку за реальное время разобраться практически невозможно.

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: При сохранении "улетают" координаты шейпов
СообщениеДобавлено: 19 дек 2017, 12:30 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Цитата:
стороннему человеку за реальное время разобраться практически невозможно

Не, ну если программа уж очень нужна, то в принципе разобраться можно. Это же VBA, а не двоичка.
Но естественно, это уже не такой вопрос, который в форуме решается. Нужно будет и время, и деньги, и прикладник, который представляет, как программой пользоваться и что считается ошибкой. Или спецификация требований.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: При сохранении "улетают" координаты шейпов
СообщениеДобавлено: 19 дек 2017, 16:16 
Не в сети

Зарегистрирован: 18 дек 2017, 15:30
Сообщений: 8
Использую Visio c: 2017
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
По ошибке прикрепил старую версию чертежа, перезалил. Горе программистом этого творения к сожалению являюсь именно я. Суть проблемы в том что координаты концов найденные после изменения точек на шейпе не совпадают с координатами конца шейпа который не был изменен. На всякий макрос выделяет зеленым цветом трубы у которых координаты концов совпадают (в теории такого быть не должно если шейп не замкнут кольцом)


Последний раз редактировалось Zergling 19 дек 2017, 17:07, всего редактировалось 1 раз.

Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: При сохранении "улетают" координаты шейпов
СообщениеДобавлено: 19 дек 2017, 16:34 
Не в сети

Зарегистрирован: 18 дек 2017, 15:30
Сообщений: 8
Использую Visio c: 2017
Очков репутации: 0

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: При сохранении "улетают" координаты шейпов
СообщениеДобавлено: 19 дек 2017, 19:21 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
В идеале нужно бы максимально облегчить чертеж. Так, чтобы осталось только проблемное место и не было ничего лишнего.
2. Хорошо бы показать, о каком именно шейпе идет речь, чтобы не приходилось его искать среди нескольких сотен.
3. Что такое "точка шейпа"?
4. На каком листе это происходит - на всех?
Я, например, просто не знаю, куда смотреть. Можно ли как-то воспроизвести ситуацию?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: При сохранении "улетают" координаты шейпов
СообщениеДобавлено: 20 дек 2017, 12:40 
Не в сети

Зарегистрирован: 18 дек 2017, 15:30
Сообщений: 8
Использую Visio c: 2017
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Спасибо что пытаетесь помочь. Убрал все лишнее. Переделал макрос, вроде должно быть более наглядно понятно. Под "точкой шейпа" я подразумевал добавление узла в центр существующей ломанной линии, или его перестановка. Происходит это на всех листах. Переосмыслил проблему: Неверно вычисляются абсолютные координаты точек излома LineMass(i, 1); LineMass(i, 2); Я пытаюсь находить их как смещение x,y в Geometry 1 ShapeSheet по номеру точки излома относительно центра фигуры("PinX"; "PinY"). И когда я вношу изменения в линию при повторном открытии файла (двигаю её точки или добавляю новые) "съезжает" рамка выделения фигуры в месте с "PinX" и "PinY" а в LineMass(i, 1) и LineMass(i, 2) попадают непонятные мне значения. Буду весьма признателен если подскажете как мне получить абсолютные координаты точки излома линни.


Вложения:
.vsd [1.53 Mб]
Скачиваний: 25
Visio.vsd [126 Кб]
Скачиваний: 25
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: При сохранении "улетают" координаты шейпов
СообщениеДобавлено: 20 дек 2017, 13:28 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
А вы не хотите переделать этот шейп?
Как мне кажется, проблемы в конструкции.
Вам обязательно нужно, чтобы этот шейп был OneD? Какая цель этим достигается?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: При сохранении "улетают" координаты шейпов
СообщениеДобавлено: 20 дек 2017, 16:59 
Не в сети

Зарегистрирован: 18 дек 2017, 15:30
Сообщений: 8
Использую Visio c: 2017
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Можно и переделать в этом проблемы нету, только я не совсем понял что надо переделать... Что за OneD? Для чего он используется? И самое главное как переделать? Если я правильно понимаю исходя из того что смог прочитать на сайте мелкомягких по поводу этого свойства мне достаточно изначально создать линию с тремя точками и задать ей необходимые данные так?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: При сохранении "улетают" координаты шейпов
СообщениеДобавлено: 20 дек 2017, 18:19 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Шейпы бывают одномерные (линии, имеют начало и конец) и двумерные (имеют ширину и высоту, но нет начала и конца).
Многие ячейки шейп-листа связаны формулами (даже по умолчанию). И формулы по умолчанию у 1D и 2D шейпов - разные.
Ваш шейп по-сути 2D, то есть некий многоугольник. А записан как линия. Поэтому формулы ведут себя по -другому, более сложно для восприятия.
И если никакие алгоритмические задумки не требуют 1D поведения, то Вам лучше объявить этот шейп как 2D. Возможно, сразу исчезнут все глюки.
Скорее всего для изменения такого шейпа достаточно выполнить над ним Shape / Operation / Join.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: При сохранении "улетают" координаты шейпов
СообщениеДобавлено: 20 дек 2017, 18:25 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Вот так


Вложения:
join.gif
join.gif [ 222.16 Кб | Просмотров: 287 ]
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: При сохранении "улетают" координаты шейпов
СообщениеДобавлено: 20 дек 2017, 18:50 
Не в сети

Зарегистрирован: 18 дек 2017, 15:30
Сообщений: 8
Использую Visio c: 2017
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Спасибо большое, визуально вроде помогло быструю проверку на ошибки тоже прошло завтра протестирую на исходном чертеже и отпишусь. :D


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: При сохранении "улетают" координаты шейпов
СообщениеДобавлено: 21 дек 2017, 19:20 
Не в сети

Зарегистрирован: 18 дек 2017, 15:30
Сообщений: 8
Использую Visio c: 2017
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Данные при переводе шейпа по предложенному способу должны удаляться? Если да, то нельзя ли сделать это без потери данных через таблицу ShapeSheet (база у нас довольно большая). Или возможно это я что-то делаю неправильно?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: При сохранении "улетают" координаты шейпов
СообщениеДобавлено: 21 дек 2017, 19:51 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
При таком способе шейп становится другим. Данные из него должны исчезнуть.
Через ShapeSheet можно сделать практически все. Значит скорее всего и это можно. Но я бы за такое не взялся. Скорее можно попробовать данные скопировать. То есть сделать такое же преобразование программно с переносом данных.
А сколько там данных? 4 строчки Shape Data или координаты перегибов тоже где-то используются?
Или какая-то связь с внешними данными?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: При сохранении "улетают" координаты шейпов
СообщениеДобавлено: 22 дек 2017, 11:07 
Не в сети

Зарегистрирован: 18 дек 2017, 15:30
Сообщений: 8
Использую Visio c: 2017
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Понятно, да координаты перегибов использовались для нахождения длинны, но я уже придумал как относительно быстро переделать мастера. Спасибо, с новыми мастерами все работает как надо. Осталось только написать макрос перерисовки старых шейпов новыми мастерами, на форуме случаем нету никаких подобных наработок?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: При сохранении "улетают" координаты шейпов
СообщениеДобавлено: 22 дек 2017, 17:39 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Если просто скопировать свойства, то можно заглянуть в раздел "Склад полезных макросов". Вот например, viewtopic.php?f=15&t=1047
Вот заменой шейпа наверно тяжелее будет, потому что со старого шейпа тяжело взять координаты. У него ведь изображение совсем не там находится.
Но если по одному шейпу, то можно выделять очередной шейп и макросом создавать новый, например, всегда в точке 0,0. Потом руками двигать куда нужно.
То есть селектировали шейп, вызвали макрос. Макрос сохранил свойства в массиве, преобразовал шейп, записал в новый шейп свойства из массива.
Само же преобразование - что-то типа
ActiveWindow.Selection.Join
Set NewShape = ActiveWindow.Selection(1)
-----------
Похоже, на координаты смотреть не надо, так как новый шейп после Join будет точно на месте старого.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: При сохранении "улетают" координаты шейпов
СообщениеДобавлено: 26 дек 2017, 16:26 
Спасибо


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

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



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

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