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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Отслеживание ТАБЛИЦ на чертеже [программно]

Отслеживание ТАБЛИЦ на чертеже [программно]

Ответ
Поиск в этой теме
Непрочитано 07.05.2008, 10:30 #1
Отслеживание ТАБЛИЦ на чертеже [программно]
TwoZero
 
Программист
 
г.Иркутск
Регистрация: 06.03.2008
Сообщений: 52

Есть такая проблема, нужно отследить (узнать объект) таблицы на чертеже, но таблицы эти нужно отслеживать не на текущем чертеже (активном документе) а на только что созданном документе (программным путем) который не активен.
Краткий пример того что мне нужно:
1. Программным путем создается новый документ (он неактивен)
2. Идет вставка примитивов в том числе и таблицы
3. Необходимо отследить объекты таблиц чтобы в дальнейшем заполнить эти таблицы данными (?)

Все таблици на чертеже можно отследить при помощи этого кода, который я написал:
;|=============================================================================
* Функция отслеживает все таблицы в AutoCAD
*
* Локальные переменные:
* table_data - Список с характеристиками примитива таблицы
* table_ent - Примитив таблицы
* n - Вспомогательная перменная (кол-во таблиц на чертеже)
*
=============================================================================|;
(defun SHPIL-BLOCKS_TABLES ( / n table_ent table_data)
(setq table_ent (entnext))

(setq n 0)
(while table_ent
(setq table_data (entget table_ent))

(if (= (cdr (assoc 0 table_data)) "ACAD_TABLE")
(setq n (+ n 1))
); end of if

(setq table_ent (entnext table_ent))
); end of while

(princ (itoa n))
); end of SHPIL-BLOCKS_TABLES

Но этот код отслеживает таблици лиш на текущем чертеже (активном документе), а мне нужно отследить таблици на соседнем документе.
Подскажите как это можно реализовать.
Просмотров: 2923
 
Непрочитано 07.05.2008, 10:36
#2
Кулик Алексей aka kpblc
Moderator

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


Что значит "отслеживает"? Что тебе надо получить от таблицы? Потому как работа через ActiveX более удобна.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 07.05.2008, 10:42
#3
TwoZero

Программист
 
Регистрация: 06.03.2008
г.Иркутск
Сообщений: 52
<phrase 1= Отправить сообщение для TwoZero с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Что значит "отслеживает"? Что тебе надо получить от таблицы? Потому как работа через ActiveX более удобна.
для того чтобы заполнять определенные яйчейки таблици нужно знать объект таблици, так вот мне этот объект и нужно узнать
TwoZero вне форума  
 
Автор темы   Непрочитано 07.05.2008, 10:50
#4
TwoZero

Программист
 
Регистрация: 06.03.2008
г.Иркутск
Сообщений: 52
<phrase 1= Отправить сообщение для TwoZero с помощью Skype™


Код:
[Выделить все]
(defun _kpblc-get-table-objects (doc / res)
                                ;|
*    Получение списка объектов ACAD_TABLE документа
*    Параметры вызова:
     doc     обрабатываемый документ. nil -> текущий
|;
  (or doc (setq doc (vla-get-activedocument (vlax-get-acad-object))))
  (vlax-for blk_def (vla-get-blocks doc)
    (if (equal (vla-get-islayout blk_def) :vlax-true)
      (vlax-for sub blk_def
        (if (= (vla-get-objectname sub) "AcDbTable")
          (setq res (cons sub res))
          ) ;_ end of if
        ) ;_ end of vlax-for
      ) ;_ end of if
    ) ;_ end of vlax-for
  res
  ) ;_ end of defun

Последний раз редактировалось Кулик Алексей aka kpblc, 07.05.2008 в 11:00.
TwoZero вне форума  
 
Автор темы   Непрочитано 07.05.2008, 10:50
#5
TwoZero

Программист
 
Регистрация: 06.03.2008
г.Иркутск
Сообщений: 52
<phrase 1= Отправить сообщение для TwoZero с помощью Skype™


Код:
[Выделить все]
(defun _kpblc-get-table-objects-within-blocks (doc / res)
                                              ;|
*    Получение списка объектов ACAD_TABLE документа
*    Параметры вызова:
     doc     обрабатываемый документ. nil -> текущий
|;
  (or doc (setq doc (vla-get-activedocument (vlax-get-acad-object))))
  (vlax-for blk_def (vla-get-blocks doc)
    (vlax-for sub blk_def
      (if (= (vla-get-objectname sub) "AcDbTable")
        (setq res (cons sub res))
        ) ;_ end of if
      ) ;_ end of vlax-for
    ) ;_ end of vlax-for
  res
  ) ;_ end of defun

Последний раз редактировалось Кулик Алексей aka kpblc, 07.05.2008 в 11:00.
TwoZero вне форума  
 
Непрочитано 07.05.2008, 10:50
#6
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,787
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Выбери объект "таблица" в нужном документе с помощью ActiveX. Пример здесь: VxSsetSelect - ActiveX counterpart to 'ssget'
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 07.05.2008, 10:51
#7
TwoZero

Программист
 
Регистрация: 06.03.2008
г.Иркутск
Сообщений: 52
<phrase 1= Отправить сообщение для TwoZero с помощью Skype™


Первый вариант только по протранствам модели/листа, второй пройдет и по блокам (точнее, по описаниям блоков).
Вхождения таблиц в конкретные блоки смысла делать ноль
TwoZero вне форума  
 
Автор темы   Непрочитано 07.05.2008, 10:52
#8
TwoZero

Программист
 
Регистрация: 06.03.2008
г.Иркутск
Сообщений: 52
<phrase 1= Отправить сообщение для TwoZero с помощью Skype™


ПОСЛЕДНИИ ДВА КОДА И ОТВЕТЫ ПРИНАДЛЕЖАТ КУЛИКУ АЛЕКСЕЮ
TwoZero вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Отслеживание ТАБЛИЦ на чертеже [программно]

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
связь таблиц акад с внешними данными (excel) Marina AutoCAD 3 06.12.2011 20:33
как в solidworks, на чертеже, сделать авто заполнение графы масса jeniabell SolidWorks 12 09.09.2009 11:33
Создание таблиц Кулик Алексей aka kpblc Программирование 8 09.12.2008 14:34
Создание таблицы из нескольких таблиц по условию Sergey57 Программирование 6 26.04.2007 12:30
VBA, как просканировать окружности на чертеже? basboy Программирование 6 13.04.2005 16:58