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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Атрибуты не в блоках, атрибуты как самостоятельный примитив

Атрибуты не в блоках, атрибуты как самостоятельный примитив

Ответ
Поиск в этой теме
Непрочитано 12.05.2015, 18:06 #1
Атрибуты не в блоках, атрибуты как самостоятельный примитив
АлексЮстасу
 
топограф, технолог
 
Москва
Регистрация: 24.05.2009
Сообщений: 3,074

Как-то не задавался вопросом, а бывают ли атрибуты не в блоках, а при каких-либо элементах? Например, при полилиниях, окружностях или т.п.?
Вроде бы нет, не бывают. Т.е., получается, что атрибуты - некая служебная, дополнительная возможность, составляющая именно и только блоков.
И как-то не задавался вопросом, чем в принципе являются атрибуты - а оказалось, что являются таким же равноправным примитивом Автокада, как тексты, полилинии и т.п. Т.е. атрибуты можно создавать в файле вне блоков, как обычные элементы чертежа. Более того - можно связывать значения атрибутов с параметрами любых других элементов чертежа (хоть из полилинияй, хоть из чего). Только при этом не отображаются значения атрибутов, а только имена (Tag) атрибутов. Соответственно, основную свою задачу - отображения значений - атрибуты вне блоков не выполняют.
Неувязочка получается?
Если атрибуты выполняют свою задачу только в блоках, то почему бы не запретить их создание и существование вне блоков?
Если же предусмотрено существование атрибутов вне блоков, то естественно сделать, чтобы они отображали значения, а не свои имена. И могли играть роль ярлыков (Label), аннотаций (Annotation) для элементов любых типов.
Допустим, чтобы можно было надписывать длины полилиний, площади, радиусы у окружностей, высоты у блоков и полилиний и т.п. И чтобы эти значения изменялись вместе с соответствующими изменениями связанных с ними элементов. А так же, чтобы атрибуты перемещались вместе с их элементами и определенными их точками (как сейчас атрибуты в блоках).
Можно было бы обходиться без многих разных программок создания надписей у элементов, без многих блоков с атрибутами, которые потом нужно разбивать и т.п.
__________________
количество моих сообщений не говорит о знании Автокада
Просмотров: 5041
 
Непрочитано 12.05.2015, 19:25
#2
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,379


да. было много вопросов на форуме на тему "перевести атрибуты в текст". Видать, кто-то до этой фигни, если не сказать грубее, дошёл раньше.
Хотя-бы вот
Я прикручиваю текстовую гиперссылку, если что.... (Ctrl+K)
PS без блоков нет атрибутов, а есть только их описания

Последний раз редактировалось Хмурый, 12.05.2015 в 19:40.
Хмурый вне форума  
 
Непрочитано 12.05.2015, 19:53
#3
maratovich


 
Регистрация: 12.07.2009
г. Самара
Сообщений: 2,437
Отправить сообщение для maratovich с помощью Skype™


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Более того - можно связывать значения атрибутов с параметрами любых других элементов чертежа (хоть из полилинияй, хоть из чего). Только при этом не отображаются значения атрибутов, а только имена (Tag) атрибутов.
Покажите пенсионеру пример данной сущности.
maratovich вне форума  
 
Автор темы   Непрочитано 12.05.2015, 19:53
#4
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,074


Не сомневаюсь, что с момента появления атрибутов (лет пятнадцать назад, наверное?) были подобные вопросы. Просто я десять лет принимал ситуацию с атрибутами как данность, а только сейчас вдруг посмотрел на нее со стороны.
Ведь получается, что в принципе есть возможность создания атрибутов (синонимы: метки, ярлыки, аннотации/Label, Annotation), т.е. изменяемых надписей, надписей, связанных со свойствами или параметрами указанных элементов. А так же с положением этих элементов в пространстве. Но есть исключительно в блоках. А в целом такой возможности нет. Нет возможности аннотировать, надписывать нужное при полилиниях, окружностях и т.д. В т.ч. и при блоках.
И я подумал, что вдруг чего не знаю или пропустил из нового
Offtop: В вертикальных приложениях, кстати, такие аннотации есть. Но опять получается куча-мала из нескольких похожих, но разных средств, в которых замучаешься и разбираться, и управлять ими. И ни одно из которых задачу в целом не решает.
Например, в Map 3d есть аж два средства! И каждое со своими сюрпризами.


----- добавлено через ~6 мин. -----
Цитата:
Сообщение от maratovich Посмотреть сообщение
Более того - можно связывать значения атрибутов с параметрами любых других элементов чертежа (хоть из полилинияй, хоть из чего). Только при этом не отображаются значения атрибутов, а только имена (Tag) атрибутов.
Покажите пенсионеру пример данной сущности.
1. Командой _ATTDEF создаете прямо в модели атрибут.
2. При описании значения атрибута создаете поле, связанное, допустим, с длиной какой-то указанной полилинии.
3. При изменении длины этой полилинии меняется и значение этого атрибута. Но видно это только в окне Свойства после _REGEN. А в графическом окне видим только имя (Tag).
__________________
количество моих сообщений не говорит о знании Автокада

Последний раз редактировалось АлексЮстасу, 12.05.2015 в 20:03.
АлексЮстасу вне форума  
 
Непрочитано 12.05.2015, 20:02
#5
maratovich


 
Регистрация: 12.07.2009
г. Самара
Сообщений: 2,437
Отправить сообщение для maratovich с помощью Skype™


Спасибо, понятно. Работает так же как и внутри блока. Жаль их прицепить к линии нельзя (в одно целое).
maratovich вне форума  
 
Непрочитано 12.05.2015, 20:02
#6
Аshаs-ка

проектировсчик
 
Регистрация: 06.01.2006
Москва
Сообщений: 1,986


А Fields никак не помогут отцу русской демократии?
Аshаs-ка вне форума  
 
Автор темы   Непрочитано 12.05.2015, 20:06
#7
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,074


Цитата:
Сообщение от Аshаs-ка Посмотреть сообщение
А Fields никак не помогут отцу русской демократии?
Эт еще хто?
Это про, допустим,
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
2. При описании значения атрибута создаете поле, связанное, допустим, с длиной какой-то указанной полилинии.
?

----- добавлено через ~55 мин. -----
В порядке бреда:
- сделать все тексты многострочными (однострочный ведь - частный случай многострочного). (Например, в Microstation так и сделано, и нет никаких проблем. А заодно нет дополнительных команд, необходимости учитывать и то, и то, переводить одно в другое и пр.);
- сделать в текстах возможность полей (Fields), как сейчас в атрибутах;
- добавить возможность геометрической привязки текстов к указанным графическим элементам;
- добавить возможность автоматической выгрузки надписей в виде подобных текстов к указанным элементам.
Например, в Map 3d можно выгрузить надписи (Annotation или Text style), взяв их содержание из свойств-параметров указанных элементов, и связав-сориентировав их с определенными точками этих элементов. Например, с начальной точкой, с центром и т.п.
Т.е. все способы создания надписей в Автокаде заменить одним - универсальным "текстом". Или двумя: просто текстом и атрибутами. Но нормальными атрибутами - отображающими свое содержание не только в блоках.
Тогда, кстати, во многих случаях можно было бы обойтись без запихивания атрибутов в блоки, а внутри блоков можно было бы использовать не особые, а такие же универсальные тексты-атрибуты.
Обойтись без недоделанных своих атрибутов-аннотаций в вертикальных приложениях и т.д.
Offtop: Вот будете смеяться, аналогия: в том же Microstation нет отдельно "просто" полилиний, 2Дполилиний, 3Д полилиний. Обходятся распрекрасно одним типом примитива - тоже полилинией (Line String), у которой вершины могут иметь любую Z. 2D полилиния ведь частный случай 3D полилиний...
__________________
количество моих сообщений не говорит о знании Автокада

Последний раз редактировалось АлексЮстасу, 12.05.2015 в 21:04.
АлексЮстасу вне форума  
 
Непрочитано 12.05.2015, 21:08
1 | #8
Аshаs-ка

проектировсчик
 
Регистрация: 06.01.2006
Москва
Сообщений: 1,986


Да не, я к тому, что не стоит умножать сущности. Зачем аттрибут - филд, когда просто филда за глаза хватает? А чтобы таскать по чертежу все вместе - group...
Аshаs-ка вне форума  
 
Непрочитано 12.05.2015, 22:51
#9
Кулик Алексей aka kpblc
Moderator

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


Если атрибут в блоке, то поле в нем может оказаться очень нужным.
Цитата:
Сообщение от Аshаs-ка Посмотреть сообщение
чтобы таскать по чертежу все вместе - group
...которая не копируется из чертежа в чертеж - это так, для справки. И которую можно легко "разбить", поменяв значение всего одной системной переменной.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 13.05.2015, 02:35
#10
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,074


Цитата:
Сообщение от Аshаs-ка Посмотреть сообщение
аттрибут - филд, когда просто филда за глаза хватает?
Вот! Примерно на подобное я и надеялся!
Я же за десять лет пользования Автокадом, создания не одной тысячи описаний блоков с атрибутами, только сейчас увидел, что и в обычные тексты можно вставлять поля!
Спасибо! Пригодится.
Цитата:
Сообщение от Аshаs-ка Посмотреть сообщение
Да не, я к тому, что не стоит умножать сущности.
Как раз я писал о ненужности такого разнообразия ограниченных сущностей. Вы, наверное, хотели сказать что-нибудь вроде: "стоит полнее использовать имеющиеся возможности"? Согласен.
Цитата:
Сообщение от Аshаs-ка Посмотреть сообщение
А чтобы таскать по чертежу все вместе - group...
Группы еще сделать нужно. В ряде случаев потом их нужно разбивать, что делается либо поштучно, либо нужно найти и использовать миллион десятый лисп.
А для выгрузки сразу ко многим элементам соответствующих надписей, группирования их с этими элементами - точно нужно писать программку.
Offtop: Автокад придуман для массового освоения программирования и в первую очередь лиспа
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 13.05.2015, 06:39
#11
trir


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


ModelSpace тоже блок, по этому может иметь атрибуты и он работают в xref
trir вне форума  
 
Непрочитано 13.05.2015, 10:39
#12
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Пример программы, использующей атрибут без блока:
Код:
[Выделить все]
;********************* lay_offon.lsp ************************************
; Программа выключения и включения слоев, задаваемых
; пользователем в виде списка для значения атрибута.
; В программе использована рекурсивная фукция (str-str-lst),
; разработанная Евгением Елпановым см.:
; http://www.autocad.ru/cgi-bin/f1/board.cgi?t=25113OT
; Автор Владимир Громов.
; Для запуска программы можно использовать макрос:
;  ^C^C^P(if (not C:LAYOFFON) (load "lay_offon")) LAYOFFON
; Для удобного редактирования атрибута со списком слоев
; можно создать кнопку с макросом:
;  _DDEDIT;0,0;;
;
(defun C:LAYOFFON ( / echo lay lay_list list_lay list_len n lay_n)
(setq echo (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(setq lay (getvar "CLAYER"))
(if (tblsearch "LAYER" "lay_offon")
    (progn
    (ssget "_X" (list (cons 8 "lay_offon")))
    (setq lay_list (cdr (assoc 1 (entget (entlast)))))
(str-str-lst lay_list ",")
    (setq list_len (length list_lay))
    (Cond
         ((= (getvar "USERI1") 0) (setq n 0)
         (repeat list_len
             (setq lay_n (nth n list_lay))
             (if (and (tblsearch "LAYER" lay_n) (/= (getvar "CLAYER") lay_n))
                 (command "_-layer" "_off" lay_n "")
             ) ; if
             (if (and (tblsearch "LAYER" lay_n) (= (getvar "CLAYER") lay_n))
                 (progn
                 (command "_-layer" "_off" lay_n "_y" "")
                 (princ "\n Внимание! Отключен текущий слой!")
                 ) ; progn
             ) ; if
             (if (= (tblsearch "LAYER" lay_n) nil)
                 (progn
                 (princ "\n Слой ") (princ lay_n)
                 (princ " отсутствует или неправильно записан!")
                 ) 
             ) ; if
             (setq n (1+ n))
         ) ; repeat                
         (setvar "USERI1" 1)
         )
         ((= (getvar "USERI1") 1) (setq n 0)
         (repeat list_len
             (setq lay_n (nth n list_lay))
             (if (tblsearch "LAYER" lay_n)
                 (command "_-layer" "_on" lay_n "")
             ) ; if
             (if (= (tblsearch "LAYER" lay_n) nil)
                 (progn
                 (princ "\n Слой ") (princ lay_n)
                 (princ " отсутствует или неправильно записан!")
                 )
             ) ; if 
             (setq n (1+ n))
         ) ; repeat           
         (setvar "USERI1" 0)
         )
    ) ; cond
    ) ; progn
    (progn
    (princ "\n Для работы программы необходимо определить атрибут на слое LAY_OFFON.")
    (alert "   Для работы программы необходимо\nопределить атрибут на слое LAY_OFFON.")
    (command "_-LAYER" "_m" "LAY_OFFON" "_p" "_n" "LAY_OFFON" "")
    (command "_attdef" "" "LAY_OFFON" "Записать слои через запятую без пробелов" "" (list 0 0) "" "")
    (command "_ddedit" (list 0 0) "")
    ) ; progn
) ; if
(setvar "CLAYER" lay)
(setvar "CMDECHO" echo)
(princ)
)

; Программа, пребразующая строку слоев в список слоев 
(defun str-str-lst (str pat / i)
  (cond
  ((= str "") nil)
  ((setq i (vl-string-search pat str))
       (setq list_lay       
           (cons
           (substr str 1 i)
           (str-str-lst (substr str (+ 2 i)) pat)
           ) ;_  cons
       ) ; setq
   )
   (t 
       (list str))
  ) ;_  cond
)
Есть неудобство: при выполнении программы атрибут должен находиться в видимой области.
Profan вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Атрибуты не в блоках, атрибуты как самостоятельный примитив



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите, существуют ли практические руководства по Lisp? vn LISP 261 26.11.2015 13:27
Помогите найти ошибку с Lisp "автонумерацией листов" tujn08 LISP 14 12.05.2015 17:20
Прыгают атрибуты в блоках (Acad 2013 Sp2 rus) gizmo_zx AutoCAD 7 28.02.2014 14:44
Атрибуты в динамических блоках Traum Динамические блоки 9 13.08.2008 11:53