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

Форум по вопросам применения и программирования в Visio
Текущее время: 12 авг 2020, 05:19

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


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


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



Начать новую тему Ответить на тему  [ Сообщений: 115 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 16:11 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
ss87, спасибо-спасибо!

А в чем отличие Formula от FormulaU?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: слишком много буков :)
СообщениеДобавлено: 27 авг 2012, 16:31 
Не в сети
Глав-тролль

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3964
Откуда: оттуда
Использую Visio c: 1998
Уровнь квалификации: Отсутствует
Note [
Код:
Beginning with Microsoft Visio 2000, you can use both local and universal names to refer to Visio shapes, masters, documents, pages, rows, add-ons, cells, hyperlinks, styles, fonts, master shortcuts, UI objects, and layers. When a user names a shape, for example, the user is specifying a local name. Beginning with Microsoft Office Visio 2003, the ShapeSheet spreadsheet displays only universal names in cell formulas and values. (In prior versions, universal names were not visible in the user interface.)



As a developer, you can use universal names in a program when you don't want to change a name each time a solution is localized. Use the Formula property to get a cell's formula string in local syntax or to use a mix of local and universal syntax to set it. Use the FormulaU property to get or parse a formula in universal syntax. When you use FormulaU, the decimal point is always ".", the delimiter is always ",", and you must use universal unit strings (for details on universal strings, see About Units of Measure).


Example
This Microsoft Visual Basic for Applications (VBA) macro shows how to use the FormulaU property to set the formula for a ShapeSheet cell. It draws a rectangle on a page and bows, or curves the lines of the rectangle by changing the shape's lines to arcs. Then it draws an inner rectangle within the bowed lines of the first rectangle.


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

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
280мм / 25.4 = 11.02362204724409

Вот столько дюймов необходимо, чтобы лишнюю станицу не показывать.

Зачем тут Abs? Если минус убрать, то он вроде как и не нужен будет. Так же?
Код:
ni = Abs(Int(wi / -11.0236220472441)) * (11.0236220472441)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 17:56 
Не в сети
Глав-тролль

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3964
Откуда: оттуда
Использую Visio c: 1998
Уровнь квалификации: Отсутствует
такая конструкция нужна для округления вверх. В вба нет такой штатной функции, пришлось так извратиться
например имеем группу высотой 380 мм, если округлить вниз то высоты 280 мм будет маловато. Остается только вверх, … я так думаю ©®


Последний раз редактировалось Surrogate 27 авг 2012, 18:03, всего редактировалось 1 раз.
замена 297 на 280


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

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Мм.. Surrogate, весьма хитро 8-) Теперь понял почему Вы так извратились) спс)


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

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
В С# следующее выражение вернут 1, а не 2:
Код:
Math.Abs((int)(14.9606 / -11.0235))


Вот так вернет двойку:
Код:
double x = ((int)(14.9606/11.0235 + 1)*11.0235


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 18:32 
Не в сети
Глав-тролль

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3964
Откуда: оттуда
Использую Visio c: 1998
Уровнь квалификации: Отсутствует
ssementsov писал(а):
Код:
double x = ((int)(14.9606/11.0235 + 1)*11.0235


нам нужно не подогнать результат :)
а найти решение, которое будет всегда давать правильный результат ! наверняка в коллекции Math шарпа должно быть округление вверх!!!
тогда можно так не извращаться…


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

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Так я не результат подгонял. А на примере показал. В C# округление всегда в меньшую сторону, до меньшего целого.
Если при делении я получил 3,5, то +1= 4,5. Округлив получим как раз ту нужную 4-ку.
Код:
double heightShapeGroup = shape.CellsSRC[(short)VisSectionIndices.visSectionObject, (short)VisRowIndices.visRowXFormOut,
                (short)VisCellIndices.visXFormHeight].Result[VisUnitCodes.visNoCast];       

            double newHeightPage = (int)(heightShapeGroup / 11.02362204724409 + 1) * 11.02362204724409;


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

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
А что тут происходит? Можете пояснить?
Код:
sh.Cells("LocPinY").Formula = """=Height*1"""

Сейчас код работает почти отлично) Просто основная таблица чуть залазит на верхние. Её надо либо опустить, либо сделать так, чтобы она туда не попадала.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 18:51 
Не в сети
Глав-тролль

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3964
Откуда: оттуда
Использую Visio c: 1998
Уровнь квалификации: Отсутствует
а если при делении получим ровно 3, что тогда +1 снова даст четверку ? ;)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 18:54 
Не в сети
Глав-тролль

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3964
Откуда: оттуда
Использую Visio c: 1998
Уровнь квалификации: Отсутствует
ssementsov писал(а):
А что тут происходит? Можете пояснить?
Код:
sh.Cells("LocPinY").Formula = """=Height*1"""

Сейчас код работает почти отлично) Просто основная таблица чуть залазит на верхние. Её надо либо опустить, либо сделать так, чтобы она туда не попадала.

здесь мы задаем т.н. "местоположение булавки" по оси Y - PinY. Т.е. мы задаем это положение в верхней точке группы, в следующей строке кода я опускал
групповой шейп на один дюйм ниже верхнего края листа


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

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Если получим ровно 3 или любое другое целое число, то значит сгруппированный шэйп влез целиком на листы. Я правильно понимаю? Тогда просто появится пустой лист из-за +1.


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

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
ssementsov писал(а):
А что тут происходит? Можете пояснить?
Код:
sh.Cells("LocPinY").Formula = """=Height*1"""

Сейчас код работает почти отлично) Просто основная таблица чуть залазит на верхние. Её надо либо опустить, либо сделать так, чтобы она туда не попадала.

здесь мы задаем т.н. "местоположение булавки" по оси Y - PinY. Т.е. мы задаем это положение в верхней точке группы, в следующей строке кода я опускал
групповой шейп на один дюйм ниже верхнего края листа


Если честно, то я не совсем Вас понял((
Код:
sh.Cells("Piny").Formula = ni - 1                      ' размещаем группу на 1 дюйм ниже верхнего края листа
sh.Cells("LocPinY").Formula = """=Height*1"""


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 18:57 
Не в сети
Глав-тролль

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3964
Откуда: оттуда
Использую Visio c: 1998
Уровнь квалификации: Отсутствует
ssementsov писал(а):
Если получим ровно 3 или любое другое целое число, то значит сгруппированный шэйп влез целиком на листы. Я правильно понимаю? Тогда просто появится пустой лист из-за +1.

дык мы же вроде боремся как с пустыми, так и с недостающими листами ?
конечно такая вероятность крайне мала, но все же код должен быть универсальным !


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 19:01 
Не в сети
Глав-тролль

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3964
Откуда: оттуда
Использую Visio c: 1998
Уровнь квалификации: Отсутствует
Surrogate писал(а):
здесь мы задаем т.н. "местоположение булавки" по оси Y - PinY. Т.е. мы задаем это положение в верхней точке группы, в следующей строке кода я опускал
групповой шейп на один дюйм ниже верхнего края листа

по умолчанию место положение булавки "посерелине по центру", нам нужно чтоб оно стало "сверху по центру"


Вложения:
PinPos.png
PinPos.png [ 11.35 Кб | Просмотров: 1126 ]
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 19:02 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
ssementsov писал(а):
Если получим ровно 3 или любое другое целое число, то значит сгруппированный шэйп влез целиком на листы. Я правильно понимаю? Тогда просто появится пустой лист из-за +1.

дык мы же вроде боремся как с пустыми, так и с недостающими листами ?
конечно такая вероятность крайне мала, но все же код должен быть универсальным !


Совершенно верно. Надо и пустые исключать. Я просто подумал, что такая вероятность почти ничтожна. Поэтому пренебрег ей. Тогда надо ещё подумать..


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 19:03 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Surrogate, ага..) Теперь уже теплее)) Спасибо очередной раз))


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 19:07 
Не в сети
Глав-тролль

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3964
Откуда: оттуда
Использую Visio c: 1998
Уровнь квалификации: Отсутствует
ssementsov писал(а):
Совершенно верно. Надо и пустые исключать. Я просто подумал, что такая вероятность почти ничтожна. Поэтому пренебрег ей. Тогда надо ещё подумать..


Ну это я так придираюсь :) Конечно можно пренебречь !!!
Просто в моем случае на ВБА, решение было универсальным


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 21:32 
Не в сети
Постоянный участник

Зарегистрирован: 11 май 2012, 15:05
Сообщений: 92
Очков репутации: 25

Добавить очки репутацииУменьшить очки репутации
что-то вы велосипед изобретаете с округлением вверх, что в vba, что в C#.
vba Int, Fix Functions
C# Math.Ceiling Method


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 22:01 
Не в сети
Глав-тролль

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3964
Откуда: оттуда
Использую Visio c: 1998
Уровнь квалификации: Отсутствует
ss87 писал(а):
что-то вы велосипед изобретаете с округлением вверх, что в vba, что в C#.
vba Int, Fix Functions
C# Math.Ceiling Method


ну я как раз и использовал отрицательный аргумент функции Int(), для округления вверх :)
Код:
MyNumber = Int(-99.8)   ' Returns -100.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 115 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.

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



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

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


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

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