Можно ли в поле (Field) использовать условие, вроде как в Excel оператор "IF" ?
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Можно ли в поле (Field) использовать условие, вроде как в Excel оператор "IF" ?

Можно ли в поле (Field) использовать условие, вроде как в Excel оператор "IF" ?

Ответ
Поиск в этой теме
Непрочитано 02.11.2009, 23:43 #1
Можно ли в поле (Field) использовать условие, вроде как в Excel оператор "IF" ?
u77
 
Регистрация: 10.06.2005
Сообщений: 31

Можно ли в поле (Field) использовать условие, вроде как в Excel оператор "IF" ?
Просмотров: 19277
 
Непрочитано 03.11.2009, 01:19
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431


Попробуй использовать там DIESEL-выражения (если, конечно, у тебя версия это позволит).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 03.11.2009, 15:02
#3
u77


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



а можно по подробнее, я в принципе понял о чём речь, в HELPe написанно. Но при попытке задать условие , даже самое простое
(IF (FILD( на текст с содержанием цифры)=1;220;380)
это выражение не пересчитывается, те выдает ####.
u77 вне форума  
 
Непрочитано 03.11.2009, 15:44
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431


Попробуй нечто типа
Код:
[Выделить все]
$if(<ЗдесьПоле>.Value=1,220,380)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 04.11.2009, 20:00
#5
u77


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


пробовал - не получается, выдает ####.
если IF в скобку взять выдает $(IF(<1>.VALUE=1,220,380))??
u77 вне форума  
 
Непрочитано 04.11.2009, 20:10
#6
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431


Код:
[Выделить все]
$(if,$(>,%<\AcObjProp Object(%<\_ObjId 2129671240>%).Length \f "%lu6">%,1000),"+","-")
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 04.11.2009, 22:18
#7
u77


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


получилось по последнему сообщению , но когда в выражение Diesel вставляю поле, срабатывает 1 раз, в следующий раз при редактировании, в выражении Diesel уже вставленно имено значение поля, а не само поле , те воспользоваться функцией получается 1 раз, а при изменении объекта на который ссылается поле ничего не изменяется.
В пример ссылка на текст с содержимым 1001.
$(if,$(>,%<\AcObjProp Object(%<\_ObjId 2127781008>%).TextString>%,1000),"+","-")
после первого раза всё отработало, после второго ничего ,
при попытке редактирования Diesel выражение имеет вид :
$(if,$(>,1001,1000),"+","-") , а поле в нём уже отсутствует .?!
u77 вне форума  
 
Непрочитано 04.11.2009, 22:21
#8
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431


Там показывается значение поля. Само поле никуда не делось. По крайней мере у меня в 2010 было именно так.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 04.11.2009, 22:42
#9
u77


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Там показывается значение поля. Само поле никуда не делось. По крайней мере у меня в 2010 было именно так.
не получается в 2008 и в 2010
у меня исчезает поле., завтра на работе ещё попробую.
Миниатюры
Нажмите на изображение для увеличения
Название: 1.jpg
Просмотров: 680
Размер:	26.6 Кб
ID:	28304  
u77 вне форума  
 
Непрочитано 05.11.2009, 08:38
#10
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


if x=>1 (y) else (z)
При условии что x,y,z - числа, для полей решается так:
=((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))
Эту формулу вставить в поле заменив xyz на свои поля.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 05.11.2009, 08:42
#11
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431


Дима_, это ты используешь формульное поле, да? Я-то по привычке DIESEL-поле ставил...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.11.2009, 10:12
#12
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


То Крыс - да.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 05.11.2009, 10:47
#13
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,924
<phrase 1=


Дима_ а где можно почитать о "формульном поле", что это, с чем едят и как его применять?
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon на форуме  
 
Непрочитано 05.11.2009, 10:54
#14
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,537
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Цитата:
Сообщение от Дима_ Посмотреть сообщение
if x=>1 (y) else (z)
При условии что x,y,z - числа, для полей решается так:
=((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))
Эту формулу вставить в поле заменив xyz на свои поля.
кажется была вероятность, что это поле будет работать неправильно?zenon, "формульное поле" это место куда вставляется формула в полях
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 05.11.2009, 11:07
#15
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


То wetr - не это было с другим "моим" полем, с контрольной суммой - у ней есть некоторая вероятность (если быть точным равная 1/макимальное простое число в размерности контрольной суммы) - в этой-же без вариантов - функция бесконечная.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 05.11.2009, 15:37
#16
u77


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


Пробую на работе, Diesel, - исчезает ссылка на поле в самом выражении (и заменяется на число на которое ссылается) !.
Причем если писать в фолмулах (как в примере =((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.jpg
Просмотров: 549
Размер:	41.8 Кб
ID:	28325  Нажмите на изображение для увеличения
Название: 2.jpg
Просмотров: 492
Размер:	49.4 Кб
ID:	28326  
u77 вне форума  
 
Непрочитано 06.04.2010, 10:54
#17
Genf

Другие берега
 
Регистрация: 12.09.2009
г. Краснодар
Сообщений: 315


Создал динамическую отметку, проблема в наличии знака "+", вернее правильной его постановке по условию. Казалось бы чего проще - поставил условие, задал истину и ложь. Но не выходит - ошибка. Может кто знает как правильно это сделать
В статье 3 solo AutoCAD автор создает динамическую отметку, но там отсутствует знак "+", а он необходим в соответствии с п.5.4.3. ГОСТ Р 21.1101-2009. Как можно поставить условие в поле, по которому при InsertionPoint/1000>0 перед этим выражением ставился бы знак "+", а при InsertionPoint/1000<=0 ничего бы не ставилось?
Докапался до такого варианта $(if,$(>,поле,0),"+"," "), но проблема в поле - берется не конкретное значение, а переменная и в итоге ошибка. Если вбить конкретное значение, например 8, то все окей. Как правильно вставить поле в условие?

Последний раз редактировалось Genf, 06.04.2010 в 14:46.
Genf вне форума  
 
Непрочитано 24.10.2011, 10:18
#18
Альф

мостовик
 
Регистрация: 12.03.2011
СПб
Сообщений: 770


Не появилась ли в последних версиях автокада возможность реализовать каким-то образом (без программирования и использования надстроек) в формульных полях условие x = if y>0;y;-.
Хочу использовать при заполнении таблиц на арматурных чертежах.
Альф вне форума  
 
Непрочитано 24.10.2011, 10:33
#19
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


см. #10.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 24.10.2011, 10:43
#20
Альф

мостовик
 
Регистрация: 12.03.2011
СПб
Сообщений: 770


Цитата:
Сообщение от Дима_ Посмотреть сообщение
см. #10.
Так у меня задача сложнее, "-" это не число, а черточка.
Альф вне форума  
 
Непрочитано 24.10.2011, 19:21
#21
sbi


 
Регистрация: 27.04.2008
SPB
Сообщений: 3,285
Отправить сообщение для sbi с помощью Skype™


В поле, если оно не "футбольное", можно использовать If и т.д. но должны "согласования"
__________________
С уважением sbi
sbi вне форума  
 
Непрочитано 25.10.2011, 09:35
#22
Альф

мостовик
 
Регистрация: 12.03.2011
СПб
Сообщений: 770


Цитата:
Сообщение от sbi Посмотреть сообщение
В поле, если оно не "футбольное", можно использовать If и т.д. но должны "согласования"
Offtop: Вижу, что пошучено, но в чем здесь мулька - не понял.
Альф вне форума  
 
Непрочитано 25.10.2011, 10:00
#23
sbi


 
Регистрация: 27.04.2008
SPB
Сообщений: 3,285
Отправить сообщение для sbi с помощью Skype™


Цитата:
Сообщение от Альф Посмотреть сообщение
Вижу, что пошучено, но в чем здесь мулька - не понял.
Offtop: Жизнь прожить = не поля с мулькой перейти, а причём тут "-"?
__________________
С уважением sbi
sbi вне форума  
 
Непрочитано 25.10.2011, 10:45
#24
Альф

мостовик
 
Регистрация: 12.03.2011
СПб
Сообщений: 770


Объясняю, причем тут "-".
Скажем, выпускается один чертеж на несколько арматурных изделий.
В ведомости расхода стали суммируется расход арматуры по диаметрам.
Если вы посмотрите приложение 12 из ГОСТ 21.501-93, то увидите, что в тех ячейках, где сумма равна 0, ставится не ноль, а прочерк ("-").
Вот у меня и вопрос - как получить этот прочерк с использованием формульных полей?
Альф вне форума  
 
Непрочитано 25.10.2011, 10:54
#25
sbi


 
Регистрация: 27.04.2008
SPB
Сообщений: 3,285
Отправить сообщение для sbi с помощью Skype™


А после получения "0", его нельзя заменить "-" любым, доступным Вам способом (с помощью if)?
__________________
С уважением sbi
sbi вне форума  
 
Непрочитано 25.10.2011, 11:04
#26
Альф

мостовик
 
Регистрация: 12.03.2011
СПб
Сообщений: 770


Можно вбить в эту ячейку любой значок, но формула будет испорчена. А программирование не является доступным мне способом.
Альф вне форума  
 
Непрочитано 25.10.2011, 11:34
#27
sbi


 
Регистрация: 27.04.2008
SPB
Сообщений: 3,285
Отправить сообщение для sbi с помощью Skype™


Альф Тогда так: "Поле является частью тестового объекта и не может редактироваться в текстовом редакторе. Самый простой способ редактирования поля состоит в следующем. Нужно дважды нажать кнопку мыши на текстовом объекте, содержащем поле, затем, для отображения диалогового окна "Поле", нужно дважды нажать кнопку мыши на поле. Эти операции можно выполнять также в контекстных меню.Если необходимо, чтобы поле больше не обновлялось, то пользователь может сохранить значение, которое отображается в настоящий момент, преобразовав поле в текст.
Выражение поля, содержащее знаки переключения кода и код поля, показывается в диалоговом окне "Поле", но не может быть изменено."(Из справки).
__________________
С уважением sbi

Последний раз редактировалось sbi, 25.10.2011 в 11:43.
sbi вне форума  
 
Непрочитано 25.10.2011, 13:50
#28
Альф

мостовик
 
Регистрация: 12.03.2011
СПб
Сообщений: 770


Спасибо, что вы заинтересовались моим вопросом, но, похоже, я его нечетко формулирую.
Проблема не в редактировании поля.
У меня вопрос именно по теме топика.
Формула, которую привел Дима в посте №10, вставленная в таблицу, позволяет автоматически выполнить выбор между двумя ячейками в зависимости от значений.
Я не могу придумать формулу, которую бы я ввел в ячейку Х, чтобы для всех ненулевых значений в ячейке У эта формула возвращала Х=У, а для У=0 возвращала прочерк.
Может быть это в автокаде в отличие от экселя невозможно, но пока никто из знатоков не отписался.
Альф вне форума  
 
Непрочитано 24.04.2016, 14:40
#29
tonimikojanovka

Проектирование ИОС4 ЭЭ ОВиК ТМ ТС
 
Регистрация: 11.04.2013
Белгород
Сообщений: 16
Отправить сообщение для tonimikojanovka с помощью Skype™


Дима спасибо большое! применил :
=((abs((-(trunc(M4/O4)^0*2-1)*M4))-(-(trunc(M4/O4)^0*2-1)*M4))/2)+(abs((((trunc(M4/O4)^0*2-1)*O4)-abs((trunc(M4/O4)^0*2-1)*O4))/2))
выбирал между большим значением ячейки М и О.
А еще есть логические примеры каких н. похожих экселевских формул (OR,AVERAGE,MAX,MIN,AND и. т.п.? Дайте ссылку если не сложно.
А то я в этих функциях для акада не алё...

Еще бы решить как в атокаде сделать выбор по 2-м заданным критериям на пересечении строки и столбца из диапазона ячеек таблицы, например как в экселе это делается:
=INDEX($AR$78:$BO$92;MATCH(B6;$S$78:$S$92;0);MATCH(E6;$T$76:$BO$76;0))
где:
$AR$78:$BO$92 - таблица ячеек со значениями из которых происходит выбор одной ячейки, которая находится на перечесении выбранного столбца и выбранной строки
B6 - критерии выбранной строки ;$S$78:$S$92 - диапазон из которого выбирается критерии для строки ;0 - критерии для промежуточных значений, может ровняться еще 1 или -1
Е6 - критерии выбранного столбца ;$T$76:$BO$76 - диапазон из которого выбирается критерий для столбца ;0 - критерии для промежуточных значений, может ровняться еще 1 или -1
Такое реально в автокаде решить ? Если да то как )))

Я раньше это делал в опен офисе calc, но в автокаде это было бы намного удобнее, темболее что кальк и эксель очень тормозят если рабочие таблицы становятся большими.
tonimikojanovka вне форума  
 
Непрочитано 10.12.2019, 14:10
#30
brusilovv


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


Цитата:
Сообщение от Дима_ Посмотреть сообщение
if x=>1 (y) else (z)
При условии что x,y,z - числа, для полей решается так:
=((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))
Эту формулу вставить в поле заменив xyz на свои поля.
а как сделать чтоб x=>12 например? не могу понять

----- добавлено через ~1 ч. -----
Все понял! надо X/(нужное число)
brusilovv вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Можно ли в поле (Field) использовать условие, вроде как в Excel оператор "IF" ?

Реклама i
Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рифмоплетство. Kryaker Разное 554 14.11.2023 11:59
LISP. Вставка в таблицу поля, соотвествующего площади примитива Profan Готовые программы 272 06.06.2021 23:12
Как можно использовать проект иностранной фирмы? Aндрeй Организация проектирования и оформление документации 11 22.01.2009 12:46
Мониторы LCD CRT Разное 94 17.06.2008 10:51
ЮМОР 2006 =) Perezz!! Разное 1122 04.01.2007 00:46