|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
VBA. Проверка существования блока с определённым именем
гадание на конечно-элементной гуще
Düsseldorf
Регистрация: 31.05.2006
Сообщений: 7,596
|
||
Просмотров: 6366
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
Учитывая, что я не пишу на VBA, прошу не ругать за кривой код:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Может и перебирает, но точно не этот фрагмент - если только 100500 разных вариантов 1-го динамического блока, у Вас он пробегается только по описаниям блоков. Снаружи действительно COM API автокада тормозят жутко (работают внутри достаточно быстро - а само каждое обращение - занимает приличное время) - посему - в Вашем случае используйте Item (как и предложенно Крысом) с проверкой ошибок (внутри он сделает все то-же самое, вряд-ли блоки у него проиндексированны, но количество обращений будет 1, а не по кол-ву блоков. Хотя тот-же пример "изнутри" предпочтительно реализовать как у Вас - т.к. выполнить с контролем ошибок это не есть хороший метод по многим причинам, а на метод проверки наличия блока в коллекции автокад не осилил видимо).
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Цитата:
Offtop: Цитата:
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 18.09.2013 в 16:23. |
||||
![]() |
|
||||
гадание на конечно-элементной гуще Регистрация: 31.05.2006
Düsseldorf
Сообщений: 7,596
|
Цитата:
если есть коллекция определений - подскажите, как до неё достучаться. идею Алексея понял, сейчас попробую. на тему скорости, вот пример видео |
|||
![]() |
|
||||
Да, похоже на то.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
гадание на конечно-элементной гуще Регистрация: 31.05.2006
Düsseldorf
Сообщений: 7,596
|
хм, странно. так, надо поразбираться...
добавлено: эм. я нахожусь в некотором замешательстве. проблема вот в чём. при добавлении в чертёж одного повёрнутого размера в коллекцию блоков добавляются 2 новых объекта. я не знаю бага это или фича, и относится ли она только к нанокаду, или в акаде так же, но суть, что количество записей в коллекции блоков значительно больше, чем их фактическое количество. и что самое забавное, после удаления размеров, записи всё равно остаются, а "пурге" не помогает. Последний раз редактировалось swell{d}, 18.09.2013 в 17:36. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Цитата:
Внешние обращение F#: > acad.ActiveDocument.Blocks.Count;; //получает количество через свойство Count Real: 00:00:00.002, CPU: 00:00:00.000, GC gen0: 0, gen1: 0, gen2: 0 val it : int = 1005 > seq {for x in acad.ActiveDocument.Blocks->x}|>Seq.length;; //то же самое но пробежкой по коллекции снаружи Real: 00:00:04.072, CPU: 00:00:01.747, GC gen0: 0, gen1: 0, gen2: 0 val it : int = 1005 > seq {for x in acad.ActiveDocument.Blocks->x.Name}|>Seq.length;; // + еще получает имена с этих-же объектов Real: 00:00:05.818, CPU: 00:00:01.716, GC gen0: 0, gen1: 0, gen2: 0 val it : int = 1005 Этот же сеанс из самого автокада через тот же ActiveX - лиспом: Команда: (defun coll->list (obj / ret) (vlax-for x obj (setq ret (cons x ret))) (reverse ret)) COLL->LIST Команда: (length (coll->list (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))))) 1005 // - это количество Команда: ((lambda (cd) (length (coll->list (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))))) (- (getvar "cdate") cd)) (getvar "cdate")) 3.72529e-009 // время в сутках (в F# в секундах) - то есть достаточно быстро с учетом что еще список переворачивали (что для данного действия не нужно) и это интерпритатор. В общем за это время можно и по ком-порту успеть отослать.
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 18.09.2013 в 17:54. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с базовой точкой блока и вхождением блока в DXF | nogaems | Программирование | 5 | 29.08.2013 15:46 |
AutoCAD 2013 Rus SP2 СПДС при проверке _audit находит и исправляет ошибки но, повторная проверка опять указывает на тоже | zoro | ПО от CSoft | 10 | 06.08.2013 00:33 |
Проверка существования текстового стиля. | acidburst | Программирование | 24 | 09.03.2010 00:03 |
Обновление/замена блока с таким же именем из другого файла. | Pesec | AutoCAD | 2 | 11.11.2009 19:33 |