All Forums
 Категория Visio
 Форум Вопросы и ответы
 Проблема с еденицами... или типа того
Author Previous Topic Topic Next Topic  

Renfoold

13 Posts

Posted - 04/04/2006 :  17:30:20
Проблема - например в следующем.
Хочу что бы координата PinY всегда была равна дробной части координаты Pinx. (в милиметрах)
Только чур формулу в Piny сразу не писать, а делать будем это через промежуточную ячейку. А значение этой промежуточной ячейки будет таким -
FORMATEX(PinX;"0.0000";"in";"mm")-INT(FORMATEX(PinX;"0.0000";"in";"mm"))

То что я вижу своими глазами, если смотреть прямо в ячейку получается то что надо.. только нифига не в милиметрах. Как это в милиметры переделать?

Например. Когда Pinx = 5.341 mm. тогда значение промежуточной ячеки с формулой приведенной веше вглядит как 0,341 только не милиметров, а фиг пойми чего. Хочу 0,341 милиметров.

Вопрос может глупый.. но чет я ни разберусь с величинами.. в этой таблице. ...

Всем всего.



Digitall

Russia
389 Posts

Posted - 04/04/2006 :  17:49:49  Visit Digitall's Homepage
quote:
Originally posted by Renfoold

Проблема - например в следующем.
Хочу что бы координата PinY всегда была равна дробной части координаты Pinx. (в милиметрах)
Только чур формулу в Piny сразу не писать, а делать будем это через промежуточную ячейку. А значение этой промежуточной ячейки будет таким -
FORMATEX(PinX;"0.0000";"in";"mm")-INT(FORMATEX(PinX;"0.0000";"in";"mm"))

То что я вижу своими глазами, если смотреть прямо в ячейку получается то что надо.. только нифига не в милиметрах. Как это в милиметры переделать?

Например. Когда Pinx = 5.341 mm. тогда значение промежуточной ячеки с формулой приведенной веше вглядит как 0,341 только не милиметров, а фиг пойми чего. Хочу 0,341 милиметров.

Вопрос может глупый.. но чет я ни разберусь с величинами.. в этой таблице. ...

Всем всего.


Добавьте к нулям "u" и все.
Go to Top of Page

Renfoold

13 Posts

Posted - 04/04/2006 :  18:38:01
ДОбавил "u" - непроканало!
получается очень непонятное значение.
Оно равно Pinx точ в точ.
Поробуйте сами.
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 04/04/2006 :  20:33:54
У меня работает. Только округляет до дюймов, а показывает в миллиметрах.
А может проще вообще с миллиметрами не связываться?
Если ввести в одну промежуточную ячейку вот такую формулу
Prop.Row_2 = 2,5 mm/1 in
то потом можно ссылаться на нее, как на коэффициент и считать все в дюймах
Примерно так
Prop.Row_1 = (PinX/Prop.Row_2-INT(PinX/Prop.Row_2))*Prop.Row_2
Это значение при движении шейпа по пилообразному закону возрастает от 0 до 2.5 мм.
Go to Top of Page

Renfoold

13 Posts

Posted - 04/05/2006 :  05:11:09
:"-(
Я щас буду плакать.
:-(((((((
Это не то ребята..
И еще я не пойму что это за величина Prop.Row_2 = 2,5 mm/1 in .
Откуда она придумана? что за константа? Ничего плохого сказать про нее не хочу.. но в самом деле просто не понимаю.

Мне нужна целая часть Pinx. В милиметрах.
Int(Pinx) считает в дюймах. если это первести в милиметры то они будут не целые. - НЕ КАТИТ!

Int(Formatex(Pinx;"0.00";"in";"mm")) делает правильную целую часть милиметров Pinx. Но только значени в дюймах.

Int(Formatex(Pinx;"0.00 u";"in";"mm")) делает вообще полную ерунду



Дурдом какойто..
Чуваки.. спасите!!!!!!!!

В чем эта дрянь вообще считает кто нибудь может обяснить как оперировать с этими еденицами?.. или где почитать.. что-то толковое???




Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 04/05/2006 :  07:49:09
Только плакать не надо, сейчас все объясню...
Visio умеет считать только в дюймах!
А для того, чтобы общаться с пользователями он может переводить в сантиметры, миллиметры и т.д.
Но считает в дюймах.
Поэтому фразы типа Int(Formatex(Pinx;"0.00";"in";"mm")) некорректны.
---------------------------
Теперь мы говорим: давайте сделаем, чтобы 2,5 мм было похоже на один дюйм (введем коэффициент). Тогда Visio будет считать (и округлять свои дюймы), а на самом деле это будут "два-с-половиной-миллиметры". А мы всегда можем привести результат к нормальной шкале.
Вот я отвел ячеечку в Custom Properties (для лучшего наблюдения) и ввалил в нее 2,5 mm/1 in. Не стал вводить этот коэффициент в виде числа, потому что так будет гораздо точнее.
Я, правда, почему-то думал, что нужна целая часть PinX не в миллиметрах, а в "два-с-половиной-миллиметрах" :) . Для миллиметров нужно = 1 mm / 1 in.
(дальше не успеваю, бегу на работу...)
Go to Top of Page

Renfoold

13 Posts

Posted - 04/05/2006 :  10:18:50
Благодарю.. тебя человек. :-)
Я уже не плачу.
Плохо они придумали все вычисления делать в дюймах.
На счет коэффициента ясно.. спасибо. Стало ясно после того, как стало ясно, что все в дюймах.

В силу лентяйства и в силу того что ни кто меня не обязываеть рисовать в метрической системе - ушел я в дюймовую. формулы короче стали. :-)
Придется с этим жить. Но вообще это полный глюк!!!!

Неужели нельзя ни где поправить какойнить файл или типа того что бы все стал в милиметрах???

Кстати проблема "ВСЕГДА ПО СЕТКЕ" тоже замечательно решилась.
Вот так. Это если сетка 0,1 in. Сетку можно вынести в отдельную ячейку. Или завести эту ячейку в листе.. или типа того.


=IF(PinX-INT(PinX/0.1)*0.1<>0,SETF(GetRef(PinX),PinX+0.1-(PinX-INT(PinX/0.1)*0.1)),PinX)

=IF(PinY-INT(PinY/0.1)*0.1<>0,SETF(GetRef(PinY),PinY+0.1-(PinY-INT(PinY/0.1)*0.1)),PinY)

Вообще проблем еще много.
Я лучше буду новые топики начинать.

С еденицами всем спасибо. :-)

И еще Люди...
Кому не в лом... моя аська 145438398
Стукните .. я там часто бываю. Вам это не нужно, Это нужно мне.
Хочется задать вопросы по аське...
Всем всего.
Go to Top of Page

Renfoold

13 Posts

Posted - 04/05/2006 :  10:28:20
Да и еще.. там же пару слогаемых можно сократить.. если раскрыть скобки.

вот так в итоге.

=IF(PinY-INT(PinY/0.1)*0.1<>0,SETF(GetRef(PinY),0.1+INT(PinY/0.1)*0.1),PinY)

Go to Top of Page

immortal

Russia
391 Posts

Posted - 04/05/2006 :  10:49:20  Visit immortal's Homepage
quote:
только нифига не в милиметрах

в миллиметрах, только миллиметры не отображает, чтобы отображало миллиметры есть два варианта:
как писал (ударение на букву а) Алексей
=FORMATEX(PinX,"0.0000u","in","mm")-INT(FORMATEX(PinX,"0.0000u","in","mm"))

и как ещё можно

=FORMATEX(PinX,"0.0000","in","mm")-INT(FORMATEX(PinX,"0.0000","in","mm"))&"mm"

третий =(FORMATEX(PinX,"0.0000","in","mm")-INT(FORMATEX(PinX,"0.0000","in","mm"))&"mm")*1
ограничивает отображение знаков после запятой

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

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

Tumanov

Russia
1198 Posts

Posted - 04/05/2006 :  18:40:53
Сейчас допишу, чего утром не успел...

Насчет множителя в отдельной ячейке 2,5 mm/1 in - это совсем не обязательно. Это только для понятности. А на самом деле, с учетом того, что делится на единицу (1 in), в той ячейке можно было написать просто 2,5 mm. А еще короче - писать не в отдельной ячейке, а в той же самой. Тогда
Prop.Row_1 = (PinX/Prop.Row_2-INT(PinX/Prop.Row_2))*Prop.Row_2
Сократится до
Prop.Row_1 = (PinX/2.5 mm-INT(PinX/2.5 mm))*2.5 mm
что и делает Immortal в своей формуле :)
Я только проиллюстрировал, как Visio внутри это выполняет.

Теперь можно и формулу Renfoold'а перевести в сетку по 2.5 мм
=IF(PinY-INT(PinY/2.5 mm)*2.5 mm<>0,SETF(GetRef(PinY),2.5 mm+INT(PinY/2.5 mm)*2.5 mm),PinY)
Go to Top of Page

Michael

49 Posts

Posted - 04/07/2006 :  11:53:33
Кстати, IMHO, 1 дюйм это 25,4 мм
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)