|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Как с помощью Assoc вытащить то что надо?
Опер дир
Москва
Регистрация: 28.04.2004
Сообщений: 291
|
||
Просмотров: 5261
|
|
||||
Машиностроение, Проектирование Регистрация: 15.09.2003
Москва
Сообщений: 1,113
![]() |
Если надо извлекать по порядковому номеру то подойдет NTH,
ASSOC же подразумевает первый элемент оригинальный для одного лишь данного списка. Не понятно что нужно, вытаскивать списки по номерам или вытаскивать все b-списки по очереди. Может тогда что-то сделать иначе при формировании списков... |
|||
![]() |
|
||||
Опер дир Регистрация: 28.04.2004
Москва
Сообщений: 291
|
Пробовал объяснить на примере, но чтобы не вводить в заблуждение поясню:
Есть списки: 1-ый) ((-1 . <Entity name: 400f89d0>) (0 . "LEADER") (330 . <Entity name: 400ebcf8>) (5 . "DDDA") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "7-02") (100 . "AcDbLeader") (3 . "ESCD") (71 . 1) (72 . 0) (73 . 0) (74 . 0) (75 . 1) (40 . 2.52387) (41 . 7.853) (76 . 7) (10 118.511 230.768 0.0) (10 130.265 256.221 0.0) (10 153.037 261.115 0.0) (10 144.712 279.715 0.0) (10 162.832 279.96 0.0) (10 172.02 284.789 0.0) (10 174.52 284.789 0.0) (340 . <Entity name: 400f89d8>) (211 1.0 0.0 0.0) (210 0.0 0.0 1.0) (212 0.0 0.0 0.0) (213 0.0 0.0 0.0)) 2-ой) ((-1 . <Entity name: 400fbc80>) (0 . "LEADER") (330 . <Entity name: 400ebcf8>) (5 . "D4D8") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "7-02") (100 . "AcDbLeader") (3 . "ESCD") (71 . 1) (72 . 0) (73 . 0) (74 . 1) (75 . 1) (40 . 7.37096) (41 . 33.2384) (76 . 3) (10 190.674 212.243 0.0) (10 182.303 227.374 0.0) (10 179.803 227.374 0.0) (340 . <Entity name: 400fbc78>) (211 1.0 0.0 0.0) (210 0.0 0.0 1.0) (212 0.0 0.0 0.0) (213 -0.938057 4.98198 0.0)) Так вот, списки с 10-ами это координаты точек и нужно изменить последнюю 10-ку а остальные оставить. 2Геннадий aka PG nth - не подходит т.к. 10-ок разное кол-во. 2Pilot, Может все-таки есть стандартная команда, а то наворачивать такой цикл неохота. Но если не будет ничего другого то так и сделаю. |
|||
![]() |
|
||||
Проектировщик свиноводство Регистрация: 21.08.2003
Сообщений: 2,291
|
Имхо ничего сложного.
(foreach v1 (list ...) (if (= (car v1) 10) (cons v1) l1) ) ) Получаем список списков (координат): ((10 7 8 9)(10 5 6 7)(10 1 2 3)) Причем список этот будет отреверсированный. Меняем ему 1-й элемент (в исходном списке он был последним), и реверсируем посредством (reverse. Осталось из исходного списка удалить все элементы (10... и слить его с нашим новым списком. |
|||
![]() |
|
||||
Сообщений: n/a
|
Если вам нужно вытаскивать координаты конца стрелки, чтобы их потом изменить, то это удобнее делать в виде ActiveX safearray.
(setq sap (vlax-variant-value (vla-get-coordinates leader_obj))); массив координат (setq xn (- (vlax-safearray-get-u-bound sap 1) 2));номер х-координаты последней точки (setq xn (- (vlax-safearray-get-u-bound sap 1) 1)); то же, y (setq x0 (vlax-safearray-get-element sap xn); исходное знвчение x (setq y0 (vlax-safearray-get-element sap yn); то же, y ;Из значений х0 и у0 вычисляем ноиые х и у (vlax-safearray-put-element sap xn x)); замена x (vlax-safearray-put-element sap yn y)); замена y (vla-put-coordinates leader_obj sap); модификация объекта |
|||
|
||||
Опер дир Регистрация: 28.04.2004
Москва
Сообщений: 291
|
Лентяй, Тоже вариант.
Но эти vlax-ы пока не знаю. Попробовал твой код. И есть вопрос: А как поменять например привязку к тексту и т.д.? Кстати, может кто знает где можно почитать про: ((-1 . <Entity name: 400f89d0>) (0 . "LEADER") (330 . <Entity name: 400ebcf8>) (5 . "DDDA") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "7-02") (100 . "AcDbLeader") (3 . "ESCD") (71 . 1) (72 . 0) (73 . 0) (74 . 0) (75 . 1) (40 . 2.52387) (41 . 7.853) (76 . 7) (10 118.511 230.768 0.0) (10 130.265 256.221 0.0) (10 153.037 261.115 0.0) (10 144.712 279.715 0.0) (10 162.832 279.96 0.0) (10 172.02 284.789 0.0) (10 174.52 284.789 0.0) (340 . <Entity name: 400f89d8>) (211 1.0 0.0 0.0) (210 0.0 0.0 1.0) (212 0.0 0.0 0.0) (213 0.0 0.0 0.0)) т.е. что значит "40, 41, 213, 71" эти все наименования? Про некоторые можно догадаться а про некоторые НЕТ. |
|||
![]() |
|
||||
Сообщений: n/a
|
[quote]Но эти vlax-ы пока не знаю
Цитата:
|
|||
|
||||
Опер дир Регистрация: 28.04.2004
Москва
Сообщений: 291
|
Цитата:
![]() Может есть ссылка на хелп (желательно русский). Цитата:
Повторюсь: Может есть ссылка на хелп (желательно русский). |
|||
![]() |