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

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

Порядок опроса значений для аттрибутов?

Ответ
Поиск в этой теме
Непрочитано 14.10.2003, 16:53 #1
Порядок опроса значений для аттрибутов?
Mikhail
 
инженер-технолог (ГИП)
 
Санкт-Петербург
Регистрация: 11.09.2003
Сообщений: 1,116

Не подскажите чем руководствуется КАД, в смысле порядка ввода аттрибутов, когда при вставке блока с аттрибутами он спрашивает значение аттрибутов.
Просто в чертеже блока они нарисованны в одном порядке, спрашивает он их при вствке в другом.

Буду очень признателен.

p.s. Если что то не очень понятно в вопросе, то спрашивайте постараюсь пояснить.
Просмотров: 4699
 
Непрочитано 14.10.2003, 17:05
#2
Grinzaid

Архитектор
 
Регистрация: 14.10.2003
Израиль
Сообщений: 365
<phrase 1=


а мне он (AutoCAD) по внесении блока с атрибутом выдаёт таблицу как при редактировании.
Grinzaid вне форума  
 
Непрочитано 14.10.2003, 17:16 Порядок запроса
#3
Grinzaid

Архитектор
 
Регистрация: 14.10.2003
Израиль
Сообщений: 365
<phrase 1=


Вспомнил, что когда-то я строил блок для лиспа автоматической простаноски высот на разрезе, и мне был очень важен порядок опроса. Помнится, пришлось повозиться. По-моему этот порядок - функция порядка создания атрибутов. Ведь каждый объект в чертеже имеет уникальпое имя (видимое при запросе list), например: Handle = 20F1F. Я думаю, что величина этого буквенно-численного выражения и влияет на очерёдность запроса. Вероятно, можно создать лисп, меняющий эти значения.
Grinzaid вне форума  
 
Автор темы   Непрочитано 14.10.2003, 17:24
#4
Mikhail

инженер-технолог (ГИП)
 
Регистрация: 11.09.2003
Санкт-Петербург
Сообщений: 1,116


Цитата:
Grinzaid
Я думаю, что величина этого буквенно-численного выражения и влияет на очерёдность запроса. Вероятно, можно создать лисп, меняющий эти значения.
Да абсолютно прав!!! Именно так, но почему они так пронумеровались...

Люди кто то знает как менять эти номера?

Спасибо.
Mikhail вне форума  
 
Непрочитано 14.10.2003, 17:40
#5
Кулик Алексей aka kpblc
Moderator

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


как менять не знаю, но! боролся элементарно - просто при создании блока выделяешь не все скопом, а последовательно атрибуты в том порядке, в котором они должны запрашиваться. работает на ура (проверено 2000i, 2002)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 14.10.2003, 17:41 Предлагаю простой дубовый способ
#6
Grinzaid

Архитектор
 
Регистрация: 14.10.2003
Израиль
Сообщений: 365
<phrase 1=


Вероятно, их можно как-то осмысленно редактировать, но на изучение этой изнанки не хватит жизни. Предлагаю простой дубовый способ:
при копировании объекта пресловутый Handle обновляется. Нужно просто скопировать уже готовые атрибуты в нужном порядке внутри блока, а старые атрибуты потереть к чёртовой матери.

Доложите об успехах.
Grinzaid вне форума  
 
Непрочитано 14.10.2003, 18:42
#7
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


Для вставки блока посредством Лиспа решил эту проблему так: сначала посредством
Код:
[Выделить все]
(command "_insert" bname ins xs ys r)
вставляется блок, а следом, когда подходит очередь вставки атрибутов идет такая строка:
Код:
[Выделить все]
(while (/= (getvar "cmdactive") 0) (command ""))
тоесть, атрибуты вставляются "чистыми". Далее значения атрибутов устанавливаются в цикле примерно так:
Код:
[Выделить все]
(setq att (entlast)) 
  ;; установка значений атрибутов
  (while (= (cdr (assoc 0 (entget (setq att (entnext att))))) "ATTRIB")
    (setq att (entget att))
    (cond
      ((= (cdr (assoc 2 att)) "ATT_1")
       (setq att (subst (cons 1 att_1) (assoc 1 att) att))
      )
.....................
       ((= (cdr (assoc 2 att)) "ATT_N")
       (setq att (subst (cons 1 att_n) (assoc 1 att) att))
      )   ) ;_  cond
    (setq att (cdr (assoc -1 (entmod att))))
  ) ;_  while
Другими словами, не имеет значения порядок создания атрибутов в блоке. Коряво, конечно, но работает.
vk вне форума  
 
Непрочитано 14.10.2003, 18:49
#8
Grinzaid

Архитектор
 
Регистрация: 14.10.2003
Израиль
Сообщений: 365
<phrase 1=


А не поможет ли функйия xdata из меню Express?
Grinzaid вне форума  
 
Непрочитано 15.10.2003, 09:59 Re: Порядок запроса
#9
kos

LISP-программист
 
Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238


Цитата:
Сообщение от Grinzaid
Handle = 20F1F... Вероятно, можно создать лисп, меняющий эти значения.
Менять значения Handle нельзя - их присваивает AutoCAD при создании примитива раз и навсегда (в ранних версиях AutoCAD на сеанс редактирования). А порядок запросов на ввод значений атрибутов определяется порядком их указания при включении в блок. И здесь абсолютно прав уважаемый kpblc - выбирать атрибуты для включения в блок нужно не "скопом" (рамкой, секущей рамкой и т.д.) а по одному, в соответствии с требуемым порядком вывода запросов. Надеюсь, не утомил и не запутал?
__________________
Там все есть для счастья - меня там только нет.
Так это значит, что я там - буду!
kos вне форума  
 
Непрочитано 15.10.2003, 18:41
#10
Arkady

AutoCad Development and Support
 
Регистрация: 21.08.2003
Israel
Сообщений: 183
Отправить сообщение для Arkady с помощью Skype™


Народ ,а каким автокадом пользуетесь?
Если 2002 и выше то есть команда _battman .
В меню Modify->Object->Attribute->Block Attribute Manager.
Там просто кнопочки - Move Up, Move Down
Arkady вне форума  
 
Непрочитано 15.10.2003, 19:05 Re: Порядок запроса
#11
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


Цитата:
Сообщение от kos
выбирать атрибуты для включения в блок нужно не "скопом" (рамкой, секущей рамкой и т.д.) а по одному
А как быть, если блоком вставляется внешний файл? Я понял так, что атрибуты запрашиваются в том порядке, в каком были созданы определения атрибутов. Поэтому, при ручной вставке блока порядок запросов будет определен исходным файлом однозначно.
vk вне форума  
 
Автор темы   Непрочитано 16.10.2003, 09:27
#12
Mikhail

инженер-технолог (ГИП)
 
Регистрация: 11.09.2003
Санкт-Петербург
Сообщений: 1,116


Спасибо.
Наверное надо будет в следующий раз быть осмотрительнее. Просто интересно другое, я создал несколько блоков, разных в графической части, но с одинаковыми аттрибутами. И эти аттрибуты я просто сделал их в одном блоке-файле, а потом просто тупым копированием вставлял в другие блоки. Но последовательность опросов почему то несколько различна... Но возможно это я уже что то руками напакостил сам. Возможно даже ... а при редактировании аттрибута индивидуальный номер ему переприсваивается? Возможно тут собака....
Mikhail вне форума  
 
Непрочитано 16.10.2003, 12:26
#13
kos

LISP-программист
 
Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238


Цитата:
А как быть, если блоком вставляется внешний файл?
А кто его знает, как тут быть! Я LISP-программист, влез в эту тему из-за HANDLE'ов, так что подробностей у меня не спрашивайте. Просто разбирался как-то с порядком атрибутов, вот и выкатил что знал.
__________________
Там все есть для счастья - меня там только нет.
Так это значит, что я там - буду!
kos вне форума  
 
Непрочитано 16.10.2003, 13:44
#14
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


>kos
Мне тоже пришлось поразбираться.... Вывод такой: если вставку блока ручками делать, то нужна аккуратность при последовательности создания определений атрибутов, а если Лиспом вставлять блок - без разницы (см. мой кусочек кода от Вт Окт 14, 2003 18:42)
vk вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Порядок опроса значений для аттрибутов?

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

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