|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Вставка в таблицу поля, ссылающегося на атрибут блока.
Регистрация: 12.08.2009
Сообщений: 464
|
||
Просмотров: 3201
|
|
||||
Помидорка Регистрация: 03.02.2012
Сообщений: 135
|
__________________
Боишься - не делай. Делаешь - не бойся. |
|||
![]() |
|
||||
Ну так тебе и нужно читать значение атрибута из свойства.
Первый вариант: если ты в качестве объекта выбираешь блок... Второй вариант: если ты в качестве объекта выбираешь непосредственно атрибут... Оба варианта работают.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 23.01.2013 в 12:27. |
||||
![]() |
|
||||
Регистрация: 12.08.2009
Сообщений: 464
|
Все верно, только мне нужна быстрая вставка без диалогового окна. Простая замена field expression на нужный, в коде из поста результата не даст, а мои попытки модификации кода успеха не имели.
|
|||
![]() |
|
||||
Я тебе ведь выделил красным цветом исходный код поля. Скопируй его, и вставляй, заменяя значение ObjId на то, которое имеет твой атрибут.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Регистрация: 12.08.2009
Сообщений: 464
|
(defun C:AREATLB ( / en obj s row col)
(vl-load-com) (cond ((and (setq en (car (entsel "\nВыберите таблицу: "))) (= (cdr (assoc 0 (entget en))) "ACAD_TABLE")) (setq obj (vlax-ename->vla-object en)) (while (setq en (car (entsel "\nВыберите примитив для вставки его площади в таблицу (ENTER — завершение): " ))) (cond ((vlax-property-available-p (vlax-ename->vla-object en) 'TextString) (setq s (strcat "%<\\AcObjProp Object(%<\\_ObjId " (vl-princ-to-string (vla-get-objectid (vlax-ename->vla-object en))) ">%).TextString>%" )) (if (setq p (getpoint "\nУкажите ячейку таблицы: " ))(progn (if (= :vlax-true (vla-HitTest obj (vlax-3d-point (trans p 1 0)) (vlax-3d-point (trans (getvar "VIEWDIR") 1 0)) 'row 'col)) (vla-SetText obj row col s) ) )) ;_endof if progn ) (t (princ "\nДля этого примитива невозможно получить свойство TextString!") ) ) ) ) (t (princ "\nЭто не таблица!") ) ) (princ) ) Я заменил, то что красное. Этого явно мало. насколько я понимаю функция vlax-ename->vla-object работает с примитивами, блок им не является. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Вхождение блока - является.
Ты, в программе, выбираешь вхождение блока, а тебе нужен аттрибут, замени где выбор блока entsel на nentsel и "тыкай" непосредственно в атрибут (либо добавь функционал поиска нужного аттрибута у вхождения блока и получения его ObjectID).
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
LISP. Вставка в таблицу поля, соотвествующего площади примитива | Profan | Готовые программы | 272 | 06.06.2021 23:12 |
Вставка в таблицу поля с координатами. | shartal | Программирование | 9 | 11.10.2011 16:31 |
Программная вставка блока с атрибутами в таблицу. Как сохранить установленные значения атрибутов? | Кулик Алексей aka kpblc | Программирование | 8 | 22.07.2010 15:01 |
Глюк вставка блока в таблицу | Piton | AutoCAD | 17 | 11.08.2006 10:39 |