Реклама i
|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Извлечь все примитивы внешней ссылки
Регистрация: 22.01.2010
Сообщений: 311
|
||
Просмотров: 3309
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,437
|
А зачем извлекать-то?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,437
|
С точки зрения AutoCAD'a (в части чтения данных) вхождение внешней ссылки практически ничем не отличается от вхождения обычного блока. От этого и плясать надо.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 22.01.2010
Сообщений: 311
|
Алексей, я так и делаю
Выполняю кусок кода: (setq ssallblk (ssget "X" '((0 . "INSERT")))) (if (NOT (= ssallblk NIL)) (progn (princ "\nБлоков: ") (princ (sslength ssallblk)) (setq num -1) (repeat (sslength ssallblk) (setq num (+ num 1)) (setq ename (ssname ssallblk num)) (setq edata (entget ename)) (princ edata) ) ) ) Получаю следующее: Блоков: 1((-1 . <Имя объекта: 7ef060c0>) (0 . INSERT) (330 . <Имя объекта: 7ef05cf8>) (5 . 110) (100 . AcDbEntity) (67 . 0) (410 . Model) (8 . 0) (100 . AcDbBlockReference) (2 . AOS10EA) (10 505.479 433.166 0.0) (41 . 1.0) (42 . 1.0) (43 . 1.0) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0)) Почему не вижу все примитивы блока? |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Потому что смотришь вхождение блока (Insert), а нужно описание (Block) в таблице блоков
Код:
Пример Код:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 08.04.2010 в 14:53. |
|||
![]() |
|
||||
Регистрация: 22.01.2010
Сообщений: 311
|
Не помогло, ищу в таблице, вот код:
(setq ssallblk (ssget "X" '((0 . "INSERT")))) (if (NOT (= ssallblk NIL)) (progn (princ "\nБлоков: ") (princ (sslength ssallblk)) (setq num -1) (repeat (sslength ssallblk) (setq num (+ num 1)) (setq ename (ssname ssallblk num)) (setq blokname (cdr (assoc 2 edata))) ; имя блока (setq blok (tblsearch "BLOCK" blokname)) (princ blok) ) ) ) Получаю: ((0 . BLOCK) (2 . AOS10EA) (70 . 36) (4 . ) (10 7863.52 11321.8 0.0) (1 . C:\Documents and Settings\mvb\Рабочий стол\Вставка\AOS10EA.dwg) (-2 . <Имя объекта: 7ef0e860>)) Вопрос прежний: Почему не вижу все примитивы блока? ![]() |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,437
|
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Основное выделено красным
Код:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 08.04.2010 в 16:24. Причина: Изменил (princ block) на (princ lst) |
|||
![]() |
|
||||
Регистрация: 22.01.2010
Сообщений: 311
|
Спасибо большое за помощь, буду разбираться.
Своей цели я добился, но вот этот кусок кода остался для меня загадкой: (setq blok (entnext blok)) Таким образом перебираются все примитивы, входящие в блок? Последний раз редактировалось swkx, 09.04.2010 в 13:45. |
|||
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Акад2006-пропадают внешние ссылки | Роб Рой | AutoCAD | 22 | 18.01.2017 10:17 |
Юмор 2007 | Огурец | Разное | 1172 | 29.12.2007 11:16 |
ЮМОР 2006 =) | Perezz!! | Разное | 1122 | 04.01.2007 00:46 |
Как програмно запихнуть в блок все примитивы | Хотабыч | Программирование | 4 | 06.05.2006 21:03 |
проблема .....все на одном слое ..... | Startrek | AutoCAD | 20 | 20.10.2005 08:03 |