|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
10.03.2018, 18:07 | #1 | |
vba, как посчитать количество блоков с помощью item и handle?
Регистрация: 08.03.2018
Сообщений: 45
|
||
Просмотров: 9457
|
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
написать свое извлечение данных.. и на VBA это реализуется
----- добавлено через ~12 мин. ----- например, перебором thisdrawing.modelspace.items либо используя фильтры в наборах, если нужно определенные примитивы. Это будет работать гораздо надежнее, чем ваше решение. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
какой алгоритм в коде реализовали - такое число и получили) Приводите пример кода и файла, если хотите получить определенный ответ. И переименуйте тему тогда, указав - на каком языке пишете и что хотите реализовать. Модераторы потом все равно попросят это сделать)
|
|||
|
||||
Регистрация: 08.03.2018
Сообщений: 45
|
Код:
----- добавлено через ~2 мин. ----- что то очень мутное с handle и handletoobject.. нигде нет толковой инфы или я как то плохо гуглю.. и раньше натыкался на эти темы но не мог разъяснения найти.. точно такой метод позволит мне вообще вытащить количество блоков полилиний ( и длину их), и параметры дин блоков? |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
blocks - это определения блоков, а не их вставки. Разницу между определением блока и его вставкой понимаете хоть?
Поэтому весь ваш код внутри тела цикла считает все что угодно, кроме количество блоков в чертеже. ======================================================= 1. Получаете примитив из коллекции ThisDrawing.ModelSpace.Item(i) 2. Проверяете - является ли он вставкой блока. И если является - то начинаете обрабатывать его как вставку блока. Иначе пропускаете. ----- добавлено через 42 сек. ----- а про Handle забудьте пока, для данной задачи он не нужен скорее всего. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
прежде чем автоматизировать - надо разобраться в том, что собираетесь автоматизировать.
Тогда может не будете в цикле по коллекции примитивов пространства модели обращаться с переменной этого цикла к элементу коллекции определений блоков. Удивительно, что ошибку не выдало во время исполнения - наверно, чертеж сам пустой еще фактически и не вышли за пределы коллекции определений блоков. ----- добавлено через ~4 мин. ----- использовать TypeOf, например. |
|||
|
||||
Регистрация: 08.03.2018
Сообщений: 45
|
спасибо
буду разбираться ----- добавлено через ~15 мин. ----- Код:
----- добавлено через ~16 мин. ----- аа все верно. он же все блоки посчитал... идем дальше спасибо большое за информацию.. есть что почитать теперь) ----- добавлено через ~26 мин. ----- тоже самое с AcadPolyline не работает( и как работать с конкретным блоком(как его имя задействовать)? и его параметрами? |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
у конкретной вставки блока нет имени, есть ObjectID и есть Handle. Первое формируется на лету при открытии чертежа *.dwg, второе остается неизменным во всех сессиях открытия чертежа. А вообще, если делаете приблуду для КЖ - поищите на форуме, люди уже выкладывали наработки.
----- добавлено через 32 сек. ----- ну или обрабатывайте непосредственно в цикле ----- добавлено через ~9 мин. ----- и переменная i должна быть long, а не Integer. Так как Count тоже long |
|||
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,589
|
или под именем имелось ввиду что то другое? Simson, Вы в хелп и документацию принципиально не смотрите? Более подробного хелпа еще поискать нужно, есть примеры по каждому методу и на каждый чих. Фактически можно брать примеры целыми кусками и лепить из них свою поделку. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
параметры определения блока обычно особой смысловой информации не несут, поэтому речь скорее всего идет именно о вставке блока. Конкретную вставку блока по имени его определения определить не получиться (если только в чертеже не используется исключительно по одной вставке блоке на каждое определение и не используются динамические блоки). Поэтому здесь уже надо оперировать теми же хэндлами примитивов. Хотя если ему нужно написать лишь аналог извлечения данных, то надо просто обрабатывать прямо в цикле примитивы в зависимости от их типа.
|
|||
|
||||
Регистрация: 18.12.2010
Сообщений: 5,057
|
|
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Слой и стили. Их создание, установка текущими, и возврат к исходному состоянию после завершения команды | Browning Zed | LISP | 7 | 23.02.2018 11:36 |
Очистка временных файлов после вызова команды Копировать в буфер | olga87 | LISP | 12 | 15.11.2017 12:45 |
Как настроить AutoCAD. Сохранение протокола командной строки после закрытия файла | auzerius | Программирование | 2 | 01.11.2015 17:25 |
Зависание системы после установки AutoCAD 2010 | Westroy | AutoCAD | 1 | 11.05.2010 15:27 |
Зарос в командной строке русского AutoCAD. | {Smirnoff} | AutoCAD | 4 | 12.01.2006 14:06 |