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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как узнать пересекает прямоугольник объект или нет на LISP

Как узнать пересекает прямоугольник объект или нет на LISP

Ответ
Поиск в этой теме
Непрочитано 04.03.2016, 10:31 #1
Как узнать пересекает прямоугольник объект или нет на LISP
onix
 
Регистрация: 20.05.2011
Сообщений: 38

Здравствуйте!
Есть координаты диагонально противоположных углов прямоугольника '(76270.2 21472.9 1400.0) '(74270.2 19472.9 1400.0).
Есть набор объектов, где дамп одного объекта
Код:
[Выделить все]
 
(
    (-1 . <Имя объекта: 7ffffb142e0>)
    (0 . "MAGIELECTRICALDEVICE")
    (330 . <Имя объекта: 7ffffb039f0>)
    (5 . "25E2E")
    (100 . "AcDbEntity")
    (67 . 0)
    (410 . "Model")
    (8 . "ПР_ЭС_САО_1_СВЕТ_")
    (62 . 1)
    (100 . "MAGIELECTRICALENTITY")
    (70 . 801)
    (71 . 0)
    (72 . 4)
    (40 . 1.0)
    (41 . 1.0)
    (73 . 0)
    (74 . 0)
    (75 . 0)
    (76 . 0)
    (70 . 2)
    (70 . 2001)
    (70 . 1)
    (70 . 2002)
    (70 . -3)
    (70 . 15)
    (70 . 2001)
    (70 . 1002)
    (70 . 1011)
    (280 . 0)
    (70 . 6046)
    (300 . "3SnYMQ1hj9VeBw0M4TNwxB")
    (70 . 2015)
    (70 . 1)
    (70 . 3001)
    (90 . 1)
    (70 . 3002)
    (90 . 4)
    (70 . 3003)
    (90 . 110)
    (70 . 3004)
    (90 . 45)
    (70 . 4001)
    (40 . 1276.0)
    (70 . 4002)
    (40 . 158.0)
    (70 . 4003)
    (40 . 113.0)
    (70 . 6005)
    (300 . "Рђ2.4.1-11")
    (70 . 6006)
    (300 . "ЩАО-2.4.1")
    (70 . 11002)
    (330 . <Имя объекта: 7ffffb1c610>)
    (70 . 1006)
    (280 . 1)
    (100 . "MAGIELECTRICALSYMBOL")
    (10 33146.9 10320.2 2400.0)
    (210 1.0 0.0 0.0)
    (211 0.0 0.0 1.0)
    (340 . <Имя объекта: 7ffffb03910>)
    (340 . <Имя объекта: 7ffffb13ee0>)
    (70 . 256)
    (71 . 0)
    (72 . 2)
    (212 1.0 0.0 0.0)
    (73 . 0)
    (40 . 0.0)
    (340 . <Имя объекта: 0>)
    (340 . <Имя объекта: 7ffffb13ef0>)
    (340 . <Имя объекта: 7ffffb13f10>)
    (340 . <Имя объекта: 0>)
    (74 . 0)
    (70 . 0)
    (70 . 0)
    (70 . 0)
  )
Как не используя ssget на LISP узнать какие объекты из набора пересекает данный прямоугольник?
Просмотров: 2919
 
Непрочитано 04.03.2016, 10:48
#2
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,095


Цитата:
Сообщение от onix Посмотреть сообщение
Как не используя ssget на LISP узнать какие объекты из набора пересекает данный прямоугольник?
"прогнать" по набору функцию vla-intersectwith, одним из аргументов указать "данный прямоугольник". Много раз обсуждалось. Правда, в данном случае трудно сказать, как она отработает на специфическом объекте MagiCAD'a. Пробуйте.Offtop:
PS
Кстати, а почему такое условие - не использовать ssget? Из-за того, что неизвестно, будет ли "данный прямоугольник" в "данный момент" хорошо виден на экране?
kp+ вне форума  
 
Автор темы   Непрочитано 04.03.2016, 11:04
#3
onix


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


Цитата:
Сообщение от kp+ Посмотреть сообщение
"прогнать" по набору функцию vla-intersectwith, одним из аргументов указать "данный прямоугольник". Много раз обсуждалось. Правда, в данном случае трудно сказать, как она отработает на специфическом объекте MagiCAD'a. Пробуйте.Offtop:
PS
Кстати, а почему такое условие - не использовать ssget? Из-за того, что неизвестно, будет ли "данный прямоугольник" в "данный момент" хорошо виден на экране?
да из-за этого приходится перед (ssget "_C" '(76270.2 21472.9 1400.0) '(74270.2 19472.9 1400.0)) дополнительно зумировать (command "_zoom" "_w" '(76270.2 21472.9 1400.0) '(74270.2 19472.9 1400.0)), объектов много и время выполнения программы около 3 минут и более)))

вот хочу альтернативу найти)

Сейчас попробовал (setq int (vla-IntersectWith (vlax-ename->vla-object (car (entsel "\nFirst : "))) (vlax-ename->vla-object (car (entsel "\nSecond : "))) acExtendNone))
первым выбираю прямоугольник , вторым объект магикад , выдаёт Ошибка Automation. Пока не реализовано

Последний раз редактировалось onix, 04.03.2016 в 11:11.
onix вне форума  
 
Непрочитано 04.03.2016, 11:50
#4
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,095


Цитата:
Сообщение от onix Посмотреть сообщение
первым выбираю прямоугольник , вторым объект магикад , выдаёт Ошибка Automation. Пока не реализовано
MagiCAD или Enabler для него установлен?
kp+ вне форума  
 
Автор темы   Непрочитано 04.03.2016, 11:57
#5
onix


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


Цитата:
Сообщение от kp+ Посмотреть сообщение
MagiCAD или Enabler для него установлен?
magicad установлен
а можно как-то объект magicad по контуру полилинией обвести на лиспе???
onix вне форума  
 
Непрочитано 04.03.2016, 11:59
#6
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,095


Прямого ответа не знаю, и MagiCAD'a у меня нет, как и Enabler'a. Выложите пример DWG, попробую посмотреть.
kp+ вне форума  
 
Непрочитано 04.03.2016, 15:53
#7
stas_org


 
Регистрация: 05.04.2007
Самара
Сообщений: 1,199


ЛИСП не знаю, но уверен что ответ можно получить тут.
stas_org вне форума  
 
Автор темы   Непрочитано 09.03.2016, 09:33
#8
onix


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


Цитата:
Сообщение от stas_org Посмотреть сообщение
ЛИСП не знаю, но уверен что ответ можно получить тут.
Спасибо за ссылку, но к сожалению маджикадовские объекты не обводит)
onix вне форума  
 
Непрочитано 09.03.2016, 10:13
#9
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,095


Кажется, примера DWG с магическим прямоугольником не будет
Если не подтянутся гуру Магикада, говорить больше не о чем.
kp+ вне форума  
 
Автор темы   Непрочитано 09.03.2016, 16:58
#10
onix


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


Цитата:
Сообщение от kp+ Посмотреть сообщение
Кажется, примера DWG с магическим прямоугольником не будет
Если не подтянутся гуру Магикада, говорить больше не о чем.
Нельзя файлы скидывать)
onix вне форума  
 
Непрочитано 09.03.2016, 17:16
#11
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,095


Цитата:
Сообщение от onix Посмотреть сообщение
Нельзя файлы скидывать)
Я же не предлагаю рабочий файл в полном объеме скинуть. Только пример с тем самым прямоугольником и парочкой других объектов, которые он должен пересекать. И не обязательно делать это с рабочего компа, можно с домашнего. Ну Вы поняли...
kp+ вне форума  
 
Непрочитано 10.03.2016, 17:49
#12
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,407
Отправить сообщение для Александр Ривилис с помощью Skype™


Точно нужно пересечение этого объекта с прямоугольником или достаточно пересечения BoundingBox этого объекта и прямоугольника?
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 11.03.2016, 14:51
#13
onix


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


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Точно нужно пересечение этого объекта с прямоугольником или достаточно пересечения BoundingBox этого объекта и прямоугольника?
BoundingBox для данного объекта не работает)
и BoundingBox для круглого объекта - это квадрат, а это не совсем то)
onix вне форума  
 
Непрочитано 11.03.2016, 14:56
#14
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,407
Отправить сообщение для Александр Ривилис с помощью Skype™


Это максимум из того, что можно получить не имея исходники MagiCAD.
Александр Ривилис вне форума  
 
Непрочитано 11.03.2016, 15:04
#15
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


Сначала купят, а потом думают, обращайтесь в Progman OY за SDK и API.
Sleekka вне форума  
 
Непрочитано 11.03.2016, 15:27
#16
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,407
Отправить сообщение для Александр Ривилис с помощью Skype™


Кстати может быть полезна эта документация: https://www.dropbox.com/s/zkobivwiue...ace_201311.pdf
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 15.03.2016, 10:48
#17
onix


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


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Кстати может быть полезна эта документация: https://www.dropbox.com/s/zkobivwiue...ace_201311.pdf
Спасибо, это уже есть, но версия маджикада выше, некоторые свойства поменялись похоже)

----- добавлено через -----
Цитата:
Сообщение от Sleekka Посмотреть сообщение
Сначала купят, а потом думают, обращайтесь в Progman OY за SDK и API.
Спасибо за совет, чуть позже запрос направлю на получение COM для маджикада
onix вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как узнать пересекает прямоугольник объект или нет на LISP

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Revit 2012: не отображаются некоторые объекты в плане, видимость включена. Rudy Revit 3 04.12.2017 22:41
Объединение дуг, линий в единый объект, Как объединить? Vladimir.P AutoCAD 41 25.01.2015 08:03
Проектируемая дорога пересекает газ высокого давления 12 МПа. Какие нюансы? Является ли объект особоопасным? inbit Автомобильные и железные дороги, мосты, тоннели и организация движения 11 23.08.2012 17:14
LISP. Как получить объект по хэндлу? LastGraff LISP 2 15.11.2011 11:29
Как можно из LISP создать КОМ объект и передать его методу BSTR строку? lexluther LISP 2 01.08.2009 00:27