Реклама i
Стань нашим партнером - зарабатывай с нами!
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA. Можно ли найти программно список всех полилиний, которые пересекает исходный луч, без перебора в цикле?

VBA. Можно ли найти программно список всех полилиний, которые пересекает исходный луч, без перебора в цикле?

Ответ
Поиск в этой теме
Непрочитано 30.01.2019, 14:43 #1
VBA. Можно ли найти программно список всех полилиний, которые пересекает исходный луч, без перебора в цикле?
Кудахтыч
 
Регистрация: 28.01.2019
Сообщений: 62

Есть вертикальный луч, он пересекает от 0 до нескольких полилиний, можно ли без цикла перебора большого количества (иногда несколько тысяч) полилиний как то определить количество пересекаемых лучом полилиний?
Как сделать в цикле я знаю: через проверку массива intPointsPD = APolyline.IntersectWith(ARay, acExtendNone), но для этого придётся ждать очень долго, тем более, что надо делать это ещё и с многими лучами, короче очень долго выходит с циклом по полилиниям.
Просмотров: 5119
 
Непрочитано 30.01.2019, 15:31
1 | #2
trir


 
Регистрация: 18.12.2010
Сообщений: 5,051


используй деревья
trir вне форума  
 
Непрочитано 30.01.2019, 15:33
1 | #3
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Если луч вертикальный, то можно воспользоваться методом множественного выбора объектов с опцией "секущая рамка". Высота рамки - весь чертёж, ширина - самая минимальная. Фильтр выбора настроить таким образом, чтобы в него попадали только полилинии. Только учтите, что этот метод работает только с теми объектами, которые в данный момент видимы на экране.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)

Последний раз редактировалось Do$, 30.01.2019 в 15:52.
Do$ вне форума  
 
Непрочитано 30.01.2019, 15:35
1 | #4
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Do$, по же самое написал в соседней теме... =о) Забавно.
Boxa вне форума  
 
Непрочитано 30.01.2019, 15:41
2 | #5
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Даже, есть более подходящий метод - SelectByPolygon с опцией Fence
Цитата:
Сообщение от Boxa Посмотреть сообщение
Do$, по же самое написал в соседней теме... =о) Забавно.
Ну значит автор точно увидит это
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)

Последний раз редактировалось Do$, 30.01.2019 в 15:51.
Do$ вне форума  
 
Автор темы   Непрочитано 30.01.2019, 16:13
#6
Кудахтыч


 
Регистрация: 28.01.2019
Сообщений: 62


Цитата:
Сообщение от trir Посмотреть сообщение
используй деревья
А как использовать деревья в VBA?

----- добавлено через ~12 мин. -----
[quote=Do$;1780909]Даже, есть более подходящий метод - SelectByPolygon с опцией Fence

Можно конешь выбором с рамкой делать, но этож уже костыль на костыле получится.
Кудахтыч вне форума  
 
Непрочитано 30.01.2019, 16:40
1 | #7
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,036


Цитата:
Сообщение от Кудахтыч Посмотреть сообщение
но для этого придётся ждать очень долго, тем более, что надо делать это ещё и с многими лучами, короче очень долго выходит с циклом по полилиниям.
вам уже Boxa писал в другой ветке:
Цитата:
Сообщение от Boxa Посмотреть сообщение
отказаться от COM вообще и от VBA в частности... что позволит существенно ускорить работу программы.
хотите сделать систему, работающую c тысячами объектов без заметных лагов - либо придется городить костыль на костыле, либо уходите с ActiveX/VBA/Interop в NetApi/ObjectARX.
Сергей812 вне форума  
 
Непрочитано 30.01.2019, 16:49
1 | #8
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Кудахтыч Посмотреть сообщение
Можно конешь выбором с рамкой делать, но этож уже костыль на костыле получится.
Fence - это не рамка, а секущая линия. Видео работы аналогичной команды: https://autode.sk/2TnEoOu
По-моему - это как раз то, что требуется для решения озвученной задачи. Не понимаю в чём костыльность.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Автор темы   Непрочитано 30.01.2019, 18:35
1 | 1 #9
Кудахтыч


 
Регистрация: 28.01.2019
Сообщений: 62


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
хотите сделать систему, работающую c тысячами объектов без заметных лагов - либо придется городить костыль на костыле, либо уходите с ActiveX/VBA/Interop в NetApi/ObjectARX.
Ладно попробую SelectByPolygon с опцией Fence, раз там линия а не прямоугольник выбора.


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
хотите сделать систему, работающую c тысячами объектов без заметных лагов - либо придется городить костыль на костыле, либо уходите с ActiveX/VBA/Interop в NetApi/ObjectARX.
Я не программист, а проектировщик, и мне некогда изучать Lisp/C++/.Net/ObjectARX и т.д. Так бы я ваще утонул в дебрях более продвинутых языков и проекты было бы не когда делать, да и VBA среда есть не только в Автокаде, но и в МС Офис, а это удобно. Проги делаю делаю себе для автоматизации мелких задач, мне за них никто не платит, смысла так уж напрягаться пока не вижу.
Кудахтыч вне форума  
 
Непрочитано 30.01.2019, 18:46
2 | 1 #10
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,295
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от Кудахтыч Посмотреть сообщение
VBA среда есть не только в Автокаде, но и в МС Офис, а это удобно
удобно , но еще и более медленно..
в свое время специально тестировал скорость выполнения VB из внешнего приложения ехе, excel и встроенного в АК vba, так вот vba из под ак самый быстрый из перечисленных, на некоторых операциях на порядок.
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 30.01.2019, 19:12
2 | 1 #11
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,036


Цитата:
Сообщение от Кудахтыч Посмотреть сообщение
Я не программист, а проектировщик, и мне некогда изучать Lisp/C++/.Net/ObjectARX и т.д. Так бы я ваще утонул в дебрях более продвинутых языков и проекты было бы не когда делать,
здесь на форуме почти нет программистов по роду основной деятельности) Да и по образованию тоже врятли)

Цитата:
Сообщение от Кудахтыч Посмотреть сообщение
да и VBA среда есть не только в Автокаде
По умолчанию с 2013 акада отсутствует, насколько помню. И запустить проект *.dvb без установки VBA enabler невозможно в принципе в отличие от других языков разработки. А для версий х64 до 2014 акада еще есть подводный камень.

Цитата:
Сообщение от doctorraz Посмотреть сообщение
в свое время специально тестировал скорость выполнения VB из внешнего приложения ехе, excel и встроенного в АК vba, так вот vba из под ак самый быстрый из перечисленных, на некоторых операциях на порядок.
Interop из сборки *.dll работал на порядок быстрее внешнего приложения через COM. А быстродействие .Net на порядок-другой выше Interop. Все равно надо думать над структурой программой - но выгадывать каждое лишнее обращение к чертежу уже не требуется обычно.
Сергей812 вне форума  
 
Непрочитано 30.01.2019, 21:12
2 | 1 #12
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Цитата:
Сообщение от Кудахтыч Посмотреть сообщение
Я не программист, а проектировщик, и мне некогда изучать Lisp/C++/.Net/ObjectARX и т.д. Так бы я ваще утонул в дебрях более продвинутых языков и проекты было бы не когда делать, да и VBA среда есть не только в Автокаде, но и в МС Офис, а это удобно. Проги делаю делаю себе для автоматизации мелких задач, мне за них никто не платит, смысла так уж напрягаться пока не вижу.
Работаю конструктором КЖ, однако в свое время прошел путь от QBasic - VB6 - VBA - VB.NET, сейчас пишу на C# ... прошел этот путь не потому, что мне очень хотелось, а потому, что не было времени на поиск костылей, обходных путей и прочих выкрутасов VBA.
И если уж на то пошло, то на .NET можно писать и под Офис и под Акад и под Ревит и под Теклу и Олплан и под чёрта в ступе, а среда разработки не только на пару порядков удобнее, но и вообще бесплатная.
Boxa вне форума  
 
Непрочитано 31.01.2019, 07:38
#13
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,295
Отправить сообщение для doctorraz с помощью Skype™


Offtop: Дык никто ж не спорит, что СИ и NET круче и быстрее, только вот заставить себя это изучать при отсутствии насущной необходимости (и так что надо работает)

Мужик пилит бревно тупой пилой...
ему говорят, -Ты чооо, пилу поточи легче и быстрее будет!
а он... -Некогда мне точить, мне пилить надо ..
вот так и я ... да и не только я
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 31.01.2019, 08:05
1 | #14
trir


 
Регистрация: 18.12.2010
Сообщений: 5,051


начинать надо с Препараты
а продолжить Ласло
trir вне форума  
 
Автор темы   Непрочитано 02.02.2019, 08:29
#15
Кудахтыч


 
Регистрация: 28.01.2019
Сообщений: 62


Вычислять пересечения линий и плоскостей я умею, дело в быстроте разработки и исполнении кода.
Кудахтыч вне форума  
 
Непрочитано 02.02.2019, 10:34
#16
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,036


Цитата:
Сообщение от Кудахтыч Посмотреть сообщение
дело в быстроте разработки и исполнении кода.
ну когда со среды разработки VBA, которая остановилась в своем развитии чуть ли не 20 лет назад, пересаживаешься даже на бесплатную версию студии - тогда и понимаешь: что такое удобство и скорость разработки кода.
Сергей812 вне форума  
 
Непрочитано 02.02.2019, 11:28
| 1 #17
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,832


Offtop: ... но не удобство тестирования
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 02.02.2019, 17:57
1 | 1 #18
trir


 
Регистрация: 18.12.2010
Сообщений: 5,051


Цитата:
но не удобство тестирования
просто надо минимизировать взаимодействие с AutoCAD'ом
trir вне форума  
 
Непрочитано 02.02.2019, 19:52
#19
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,832


Это уже оффтоп будет, продолжать разговор по этой теме Может, создам топик - на предмет обучения чайников в .NET Ну или имеющийся продолжу )))
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 02.02.2019, 19:57
#20
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Offtop: ... но не удобство тестирования
кому как... последние версии студии позволяют писать и править код во время отладки, так что разница с VBA IDE в этом плане вообще минимальна. С другой стороны, при определенном подходе, отладка занимает не так уж и много времени и не так уж и часто нужна при решении типовых задач....
Boxa вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA. Можно ли найти программно список всех полилиний, которые пересекает исходный луч, без перебора в цикле?

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой язык перспективен для инженера-конструктора с условием The_Mercy_Seat Программирование 705 17.03.2021 14:19
LISP.Окружности в начальных точках всех полилиний чертежа Raznouh LISP 5 20.01.2014 07:30
Нужен LISP: получить список групп в которые входит объект koval_a_r LISP 9 05.04.2013 14:49
Два вопроса новичка: Доступ к свойствам полилинии и обработка всех полилиний Иван Морозов Программирование 7 02.11.2012 17:11
Подскажите где можно найти проекты крытого горнолыжного курорта (металлокаркас) cool4i Поиск литературы, чертежей, моделей и прочих материалов 0 13.11.2011 21:34