пересечение полилиний

Автор Тема: пересечение полилиний  (Прочитано 10521 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
пересечение полилиний
« : 18-11-2015, 23:44:50 »
Подскажите, что ни так делаю?
Пересечение объектов. Пробовал в acad 2012 b 2014 не получается.
Коллекция точек Point3dCollection возвращается пустая 

Код - vb.net [Выбрать]
  1.  
  2. Imports CAD_DBS = Autodesk.AutoCAD.DatabaseServices
  3. Imports CAD_GEO = Autodesk.AutoCAD.Geometry
  4.          '  ...
  5.           dim obj1 As CAD_DBS.Entity ' как пример это у меня 2d-полилиния замкнутая
  6.           dim obj2 As CAD_DBS.Entity ' как пример это у меня 2d-полилиния разомкнутая
  7.           '  ...      
  8.          dim retPnts = New CAD_GEO.Point3dCollection
  9.          obj2.IntersectWith(obj1, CAD_DBS.Intersect.OnBothOperands, retPnts, IntPtr.Zero, IntPtr.Zero)
  10.  
  11.  

Отмечено как Решение Алексей (IdeaSoft) 19-11-2015, 00:03:26

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: пересечение полилиний
« Ответ #1 : 19-11-2015, 00:00:38 »
Коллекция точек Point3dCollection возвращается пустая
1) Они реально пересекаются?
2) Они лежат в одной плоскости?
3) Может лучше проверить пересечение проекций на плоскость?
Код - C# [Выбрать]
  1. obj2.IntersectWith(obj1, CAD_DBS.Intersect.OnBothOperands, new Plane(), retPnts, IntPtr.Zero, IntPtr.Zero);
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: пересечение полилиний
« Ответ #2 : 19-11-2015, 00:05:39 »
Может лучше проверить пересечение проекций на плоскость?
Саша, спасибо большое! Проекция new Plane() помогла и все заработало.
Только вот не понятно зачем делать проекцию, если полилинии двухмерные?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: пересечение полилиний
« Ответ #3 : 19-11-2015, 00:08:05 »
Только вот не понятно зачем делать проекцию, если полилинии двухмерные?
Они в одной плоскости (на одном уровне)? Может есть отличие по Z скажем в 0.000001?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: пересечение полилиний
« Ответ #4 : 19-11-2015, 00:15:13 »
Z скажем в 0.000001
Не могу понять откуда  может взяться Z координата ведь объекты LWPOLYLINE плоские.
Может AutoCAD преобразует точки в point3d при расчете внутри библиотеки?
Или может класс Entity представляется по умолчанию - как трехмерный?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: пересечение полилиний
« Ответ #5 : 19-11-2015, 00:26:10 »
Не могу понять откуда  может взяться Z координата ведь объекты LWPOLYLINE плоские.
Мне даже как-то стыдно объяснять, что у полилинии есть еще понятие Уровень, и есть понятие Нормаль, которые и определяют плоскость, в которой расположена полилиния. И что пересечение примитивов происходит в пространстве, а не на плоскости...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: пересечение полилиний
« Ответ #6 : 19-11-2015, 09:57:45 »
полилинии есть еще понятие Уровень
Я знаю что есть уровень. И этот уровень тоже =0.
Ну вообщем уже думаю не стоить на эту тему дальше говорить.
Мне все понятно. Все работает и хорошо!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: пересечение полилиний
« Ответ #7 : 19-11-2015, 10:42:39 »
Ну вообщем уже думаю не стоить на эту тему дальше говорить.
Мне все понятно. Все работает и хорошо!
А зря. Выложи фрагмент чертежа с двумя полилиниями. Я проанализирую и скажу в чем причина.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: пересечение полилиний
« Ответ #8 : 19-11-2015, 11:33:44 »
Выложи фрагмент чертежа с двумя полилиниями
Хорошо, позднее выложу. Мне интересно в чем тут дело.