|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
26.08.2009, 15:58 | #1 | |
Эспликация блоков из выбранного
Геодезист
г.Новосибирск
Регистрация: 16.08.2009
Сообщений: 86
|
||
Просмотров: 7706
|
|
||||
Геодезист Регистрация: 16.08.2009
г.Новосибирск
Сообщений: 86
|
Попытался сам что-нибудь накалякать, но на выходе совсем не то, что хотелось бы... Пока решил вывод результата делать через promt. У меня получается список всех блоков
1 UZ1 86 2 UZ12 85 3 UZ12 84 4 UZ12 83 5 UZ12 82 6 UZ12 81 , а мне необходимо, для начала, их названия и количество Например: UZ1 - 22 шт. UZ12 - 123 шт. Ничего не получается , от функций по работе с примитивами уже мозги кипят , так что любой помощи буду рад.... Вот, собственно, мое безобразие: Код:
|
|||
|
||||
Если я правильно понял, тебе надо подсчитать количество блоков каждого типа в выбранном наборе? Так ведь уже есть готовые программы для этого - поиск.
Если сам хочешь написать такую, то я бы предложил следующий алгоритм: создаешь набор->преобразуешь набор в список с именами блоков->ведешь подсчет наименований в списке->выводишь результат в файл/на экран/в таблицу на чертеже Самое сложное тут - преобразовать набор в список, тут тебе поможет ф-ция (производная от _kpblc-conv-selset-to-ename): Код:
Последний раз редактировалось Do$, 03.09.2009 в 09:23. Причина: Авторские права |
||||
|
||||
Геодезист Регистрация: 16.08.2009
г.Новосибирск
Сообщений: 86
|
Цитата:
Цитата:
|
|||
|
||||
Инженер-строитель Регистрация: 15.08.2007
Киров
Сообщений: 2,204
|
Цитата:
Берёшь первый элемент списка: (setq el (car lst)) Создаёшь новый список без этого элемента (setq new_lst (vl-remove el lst) Вычисляешь разницу между длинами этих списков - это и будет количество элементов равных первому элементу списка. На выходе остаётся new_lst - список не содержащий элементы, которые были равны первому элементу. К этому списку применяешь тот же алгоритм. И так далее, пока new_lst не станет nil. Как-то так короче. |
|||
|
||||
Можно по такому алгоритму:
Цикл: Берешь первое наименование списка->проходишь по списку, сравнивая каждое наиенование с выбранным, если одинаково: счетчик увеличиваем на 1, если нет, счетчик без изменений->в результирующий список заносишь наименование и количество->удаляешь из списка выбранное наименование (vl-remove)->берешь первое наименование получившегося списка... и так до тех пор, пока список не опустеет О... это уже второй вариант... |
||||
|
||||
Геодезист Регистрация: 16.08.2009
г.Новосибирск
Сообщений: 86
|
УРААА! Вроде работает!!
Код:
|
|||
|
||||
Регистрация: 21.02.2009
Сообщений: 825
|
с помощью dataextraction тоже будет таблица(автоматическая экспликация). другое дело что если массив ещё в каких то других целях надо будет использовать... а если только чтоб табличку создать которая будет изменяться при появлении новых блоков, то dataextraction лучше всего
__________________
Я-проектировщик бывший проектировщик! |
|||
|
||||
Регистрация: 21.02.2009
Сообщений: 825
|
из хелпа
Цитата:
__________________
Я-проектировщик бывший проектировщик! |
|||
|
||||
Геодезист Регистрация: 16.08.2009
г.Новосибирск
Сообщений: 86
|
Если речь идет об извлечении атрибутов, то не подходит т.к. имеет не тот вид
Цитата:
|
|||
|
||||
Цитата:
|
||||
|
||||
Геодезист Регистрация: 16.08.2009
г.Новосибирск
Сообщений: 86
|
Do$, хорошо! Это просто пробный вариант - поиск истины
Сергей Богатов, я сейчас поэксперементировал, получается, что если не использовать атрибуты, то имеет подходящий вид, а вот если же включать атрибуты(номера) идет перечисление всех блоков... |
|||
|
||||
Геодезист Регистрация: 16.08.2009
г.Новосибирск
Сообщений: 86
|
У меня опять ступор ... Короче подправил код, да простит меня Алексей, навводил туда кучу переменных (просто так соображается лучше).... Сейчас у меня получается список из элементов типа - "название блока - номер".... и соответсвенно старая схема подсчета количества не подходит, плюс ко всему мне еще необходимо перечислить номера каждого наименования... Вот собственно код:
Код:
Цитата:
|
|||
|
||||
Мысль номер один: зря ты в одну строку сгоняешь наименование и номер
Мысль номер два: на выходе еще надо поставить реверс списка Мысль номер три: Код:
Код:
Мысль номер четыре: алгоритм подсчета тот же (пост номер 5 и 6), только вместо vl-remove используй vl-remove-if. Последний раз редактировалось Do$, 03.09.2009 в 20:46. |
||||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
LISP. Очистка рисунка от "пустых" блоков | Makswell | Готовые программы | 15 | 26.10.2022 15:24 |
Обновление атрибутов всех блоков (Attsync для всех блоков) | Vildar | AutoCAD | 3 | 18.05.2022 14:28 |
VBA: утечка памяти при вставке блоков | Mikha | Программирование | 13 | 03.04.2009 09:18 |
Изменить параметры у всех объектов внутри блоков | 800x600 | AutoCAD | 5 | 25.03.2008 14:21 |
Взрыв блоков | Filcarpenter | Разное | 19 | 28.01.2007 09:57 |