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

Вернуться   Форум 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" ?
Просмотров: 17928
 
Непрочитано 03.11.2009, 01:19
#2
Кулик Алексей aka kpblc
Moderator

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


Попробуй использовать там 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
С.-Петербург
Сообщений: 39,844


Попробуй нечто типа
Код:
[Выделить все]
$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
С.-Петербург
Сообщений: 39,844


Код:
[Выделить все]
$(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
С.-Петербург
Сообщений: 39,844


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


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


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

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


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
С.-Петербург
Сообщений: 39,844


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

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


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

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


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

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<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,840


То 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
Просмотров: 483
Размер:	41.8 Кб
ID:	28325  Нажмите на изображение для увеличения
Название: 2.jpg
Просмотров: 427
Размер:	49.4 Кб
ID:	28326  
u77 вне форума  
 
Непрочитано 06.04.2010, 10:54
#17
Genf

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


Создал динамическую отметку, проблема в наличии знака "+", вернее правильной его постановке по условию. Казалось бы чего проще - поставил условие, задал истину и ложь. Но не выходит - ошибка. Может кто знает как правильно это сделать
В статье 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,840


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

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


Цитата:
Сообщение от Дима_ Посмотреть сообщение
см. #10.
Так у меня задача сложнее, "-" это не число, а черточка.
Альф вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Можно ли в поле (Field) использовать условие, вроде как в Excel оператор "IF" ?

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рифмоплетство. 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