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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как выделить таблицу в AutoCad зная её ObjectID?

Как выделить таблицу в AutoCad зная её ObjectID?

Ответ
Поиск в этой теме
Непрочитано 13.09.2012, 10:09 #1
Как выделить таблицу в AutoCad зная её ObjectID?
128500
 
Регистрация: 21.08.2012
Сообщений: 42

Помогите с такой проблемой:
Есть файл автокада, в нем как положено куча схем, чертежей и таблиц. В таблицах содержатся ссылки на другие таблицы этого же файла. Проблема в том, что разобраться в перекрестии этих ссылок не получается, при клике не поле таблицы, содержавшем ссылку к другой таблице открывается окно "Поле" с формулой вида Table(2120226280).t7. В автокаде я чайник, но Гугл подсказывает, что смысл в том что формула возвращаетс значение ячейки Т7 таблицы, ID которой 2120226280. Тут то и состоит облом, что непонятно как найти объект по его ID. Возможно я ошибаюсь, но в автокаде нет человеческого способа это сделать. В теме http://autolisp.ru/2011/07/07/x32x64objectid/ автор приводит код, который вроде как позволяет получить указание на объект по его ID, но у меня не получается, хотя делаю все по статье Как использовать код на лиспе, пишет "ошибка, слишком мало аргументов".
В общем, собственно вопросы:
1. Можно ли требуемое осуществить средствами автокада, без всякого лиспе? Если нет то
2. Код выше можно использовать для моей цели? Если да, то как?
В идеале хотелось бы конечно вообще функцию через defun C:, чтобы вызвать ее, скормить ID и сразу получить выделенной искомую таблицу, причем чтобы работала она в любом автокаде независимо от разрядности системы. Но это уже совсем хорошо бы, а по факту хоть как бы.
Просмотров: 5290
 
Непрочитано 13.09.2012, 11:20
1 | #2
Дима_

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


Код:
[Выделить все]
 (vl-load-com)
(defun select-id(id)
  ((lambda (ent)
     (if ent (sssetfirst nil (ssadd ent))
             (princ "Не найден объект"))
     (princ))
   (car (vl-remove-if '(lambda (x) (or (listp x)
                                       (not (equal id (vla-get-objectid (vlax-ename->vla-object x))))))
                      (mapcar 'cadr (ssnamex (ssget "_a")))))))
(defun c:select-id()
  (select-id (getreal "\nВведите ID объекта ")))
вызывать либо (select-id xxx) где xxx id объекта, либо просто select-id с "рукопашным" вводом
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 13.09.2012, 11:48
#3
128500


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


Дима_
Спасибо большое, именно то что нужно и все отлично работает.
128500 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как выделить таблицу в AutoCad зная её ObjectID?

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Вставка в таблицу поля, соотвествующего площади примитива Profan Готовые программы 272 06.06.2021 23:12
запуск программы из AutoCADа kminas Программирование 19 15.06.2012 13:42
Уже работаю в AutoCAD 2006, но нужна книжка чтобы знать все тонкости работы с 2D графикой. Unt0nich Поиск литературы, чертежей, моделей и прочих материалов 17 06.05.2008 17:58
AUTOCAD 2006 Aragorn AutoCAD 14 01.04.2005 00:55
Что нового в AutoCAD 2005 ilka_t AutoCAD 40 19.05.2004 16:48