| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Аналог exel-ой функции "если" в AutoCAD 2012

Аналог exel-ой функции "если" в AutoCAD 2012

Ответ
Поиск в этой теме
Непрочитано 14.11.2012, 22:55 #1
Аналог exel-ой функции "если" в AutoCAD 2012
Hishnik
 
Регистрация: 14.11.2012
Сообщений: 22

Нашел подобие exel-ой функции: если(if) для цифровых значений.
Вот: ((abs((-(trunc(X)^0*2-1)*Y))-(-(trunc(X)^0*2-1)*Y))/2)+(abs((((trunc(X)^0*2-1)*Z)-abs((trunc(X)^0*2-1)*Z))/2))
т.е. для данного выражения, если число х > 1 то выдает значение y, а если x<1 то z. Если вместо единици нужно другое значение то просто в формуле x/"наше число".
Пример:
Пусть наше граничное число (321) тобишь условие функции такое (если x>321) , то это будет выглядеть так:
((abs((-(trunc(X/321)^0*2-1)*Y))-(-(trunc(X/321)^0*2-1)*Y))/2)+(abs((((trunc(X/321)^0*2-1)*Z)-abs((trunc(X/321)^0*2-1)*Z))/2)).

Так вот вопрос такой: В таблице автокада при выполнении даной формулы все работает хорошо, т.к. в выражение из наше формулы: trunc(X)^0 при x>=1 выдает результат 1, а при 0<=x<1 получется 0. т.е. 0^0=0, а const^0=1.
А вот в параметризации, диспечере параметров при написании данного выражения (trunc(X)^0) у нас получается что любое число, даже 0 в степени 0 равно 1. т.е. 0^0=1, const^0=1.
Как это можно исправить или заменить чем нибудь другим выражение "trunc(x)^0" или может предложите какой нибудь другой способ выполнния функции if.

Последний раз редактировалось Hishnik, 14.11.2012 в 23:31.
Просмотров: 6622
 
Непрочитано 15.11.2012, 00:23
#2
ГеКИР


 
Регистрация: 14.03.2009
Сообщений: 841




что не так?
ГеКИР вне форума  
 
Автор темы   Непрочитано 15.11.2012, 09:20
#3
Hishnik


 
Регистрация: 14.11.2012
Сообщений: 22


Цитата:
Сообщение от ГеКИР Посмотреть сообщение


что не так?
Извини я в матиматике не очень силен, по примеру еще могу сообразить что то, а так не понял что ты написал. Что мне делать чтобы в параметризации, в диспечере параметров мне выдавал 0^0=0?
Hishnik вне форума  
 
Непрочитано 15.11.2012, 13:55
#4
Сысой


 
Регистрация: 18.04.2012
Сообщений: 10


ГеКИР Вам показал, что 0^0 = 1, а не 0. Можете в инженерном калькуляторе пощелкать.
Сысой вне форума  
 
Автор темы   Непрочитано 15.11.2012, 16:44
#5
Hishnik


 
Регистрация: 14.11.2012
Сообщений: 22


Цитата:
Сообщение от Сысой Посмотреть сообщение
ГеКИР Вам показал, что 0^0 = 1, а не 0. Можете в инженерном калькуляторе пощелкать.
Ну эт я пробовал вчера, так и получается в калькуляторе. Значит в таблице автокада неправильно считает.
А как можно заменить данное вызажение "trunc(X)^0", чтобы любое значение меньше единицы заменяло на 0, а больше еденицы на 1?
Hishnik вне форума  
 
Непрочитано 15.11.2012, 23:20
#6
Сысой


 
Регистрация: 18.04.2012
Сообщений: 10


Чет, не соображу =), да и атвокада нет под рукой.

Но как я понял trunc(x) просто отбрасывает дробную часть, а есть еще функция round(x). Она округляет до ближайшего целого.

Вот с ними можно составить выражение на подобии if-else.
Сысой вне форума  
 
Автор темы   Непрочитано 17.11.2012, 19:55
#7
Hishnik


 
Регистрация: 14.11.2012
Сообщений: 22


Цитата:
Сообщение от Сысой Посмотреть сообщение
Чет, не соображу =), да и атвокада нет под рукой.

Но как я понял trunc(x) просто отбрасывает дробную часть, а есть еще функция round(x). Она округляет до ближайшего целого.

Вот с ними можно составить выражение на подобии if-else.
Что то не сообразил как это можно сделать! может подскажешь?
Hishnik вне форума  
 
Непрочитано 19.11.2012, 21:41
1 | #8
Сысой


 
Регистрация: 18.04.2012
Сообщений: 10


Вот например:

X - сравнимая переменная.
Y - переменная, с которой сравниваем.

Если X > Y, то получаем Z1; если X < Y -> Z2.

Z1*(1+(X-Y)/ABS(Y-X))/2 + Z2*(1-(X-Y)/ABS(Y-X))/2

P.S.: Работает при любых X и Y, кроме X=Y.

Больше не придумал. =)
Сысой вне форума  
 
Автор темы   Непрочитано 23.11.2012, 01:19
#9
Hishnik


 
Регистрация: 14.11.2012
Сообщений: 22


Цитата:
Сообщение от Сысой Посмотреть сообщение
Вот например:

X - сравнимая переменная.
Y - переменная, с которой сравниваем.

Если X > Y, то получаем Z1; если X < Y -> Z2.

Z1*(1+(X-Y)/ABS(Y-X))/2 + Z2*(1-(X-Y)/ABS(Y-X))/2

P.S.: Работает при любых X и Y, кроме X=Y.

Больше не придумал. =)


Спасибо всем. Вот что у меня получилось в итоге! Перемудрил наверное только!
Вложения
Тип файла: dwg
DWG 2010
Дэшка в узловой арматуре.dwg (78.9 Кб, 2730 просмотров)
Hishnik вне форума  
 
Непрочитано 12.01.2014, 12:33
#10
art_rrc


 
Регистрация: 28.01.2013
Минск
Сообщений: 379


Доброго времени суток! Проанализировав данную формулу:
((abs((-(trunc(X)^0*2-1)*Y))-(-(trunc(X)^0*2-1)*Y))/2)+(abs((((trunc(X)^0*2-1)*Z)-abs((trunc(X)^0*2-1)*Z))/2))
Никак не могу понять, почему в формуле многократно используется выражение "trunc(X)^0". Разве результат данного выражения может быть отличен от 1?
Вот и график со мной согласен..

Подскажите, в чем "фокус" использования данного выражения в этой формуле? Я уже всю голову сломал..
art_rrc вне форума  
 
Непрочитано 12.01.2014, 12:45
#11
Valery Brelovsky

Инженер дорожник
 
Регистрация: 22.10.2007
Израиль
Сообщений: 1,850


Цитата:
Сообщение от Сысой Посмотреть сообщение
Вот например:

X - сравнимая переменная.
Y - переменная, с которой сравниваем.

Если X > Y, то получаем Z1; если X < Y -> Z2.

Z1*(1+(X-Y)/ABS(Y-X))/2 + Z2*(1-(X-Y)/ABS(Y-X))/2

P.S.: Работает при любых X и Y, кроме X=Y.

Больше не придумал. =)
Добавь в формулу равно и будет работать при равных Х и У. X >= Y,1,0
Valery Brelovsky вне форума  
 
Непрочитано 12.01.2014, 13:57
#12
art_rrc


 
Регистрация: 28.01.2013
Минск
Сообщений: 379


Цитата:
Сообщение от Valery Brelovsky Посмотреть сообщение
Добавь в формулу равно и будет работать при равных Х и У. X >= Y,1,0
Offtop: Автор явно поторопился с ответом
Обратите пожалуйста внимание на пост #10. Остальное обсуждалось более года назад.
art_rrc вне форума  
 
Непрочитано 08.08.2015, 03:19
#13
allrather


 
Регистрация: 27.02.2011
Минск
Сообщений: 169
Отправить сообщение для allrather с помощью Skype™


art_rrc,
Для автокада формула работает, потому что в нем 0^0=0 (глюк что ли? см. скрин 1). А вот в экселе 0^0 выдает ошибку (график см. скрин 2).

Offtop: Думаю, вопрос давно отпал. Решил написать, так как для меня это актуально сейчас, ну и, может, кому поможет..
Миниатюры
Нажмите на изображение для увеличения
Название: 1.JPG
Просмотров: 125
Размер:	115.5 Кб
ID:	154604  Нажмите на изображение для увеличения
Название: 2.JPG
Просмотров: 104
Размер:	133.7 Кб
ID:	154605  
Вложения
Тип файла: xlsx Книга1.xlsx (10.6 Кб, 21 просмотров)
allrather вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Аналог exel-ой функции "если" в AutoCAD 2012

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Участвуют ли резервуары в определении степени огнестойкости резервуарного парка. Mikhail Прочее. Архитектура и строительство 4 19.04.2012 10:10
Степени свободы. Качение цилиндра на цилиндре. Inventor sertoka Прочее ПО от Autodesk 1 25.03.2012 19:52
Число в степени sweetnes AutoCAD 11 10.03.2010 00:11