Сопряжение

Автор Тема: Сопряжение  (Прочитано 9574 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

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

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Сопряжение
« : 27-11-2016, 13:29:42 »
Подскажите, есть ли метод API c
помощью которого можно сделать
сопряжение  2 отрезков.
В результате получить либо объект дуги либо 3 точки дуги
 
Подойдут оба варианта передачи аргументов в функцию :
1) передать 2 отрезка Line
2) передать 4 точки point3d (p1 и p2 - точки первого отрезка
                                                p3 и p4 - точки первого отрезка)



 

 

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

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Сопряжение
« Ответ #1 : 27-11-2016, 13:39:25 »
Для задачи может быть вполне и 3 аргументов-точек хватит
p1, p2 точки двух отрезков p3- точка пересечения отрезков.


Да и еще забыл про радиус дуги R его тоже нужно передать в функцию.

Код - vb.net [Выбрать]
  1. Public function GetArc(Byval R as Double, Byval p1 as point3d, _
  2.                          Byval p2 as point3d, Byval p3 as point3d) as Arc
  3.  
  4. End function

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

  • Administrator
  • *****
  • Сообщений: 13894
  • Карма: 1789
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Сопряжение
« Ответ #2 : 27-11-2016, 18:08:58 »
Подскажите, есть ли метод API c
помощью которого можно сделать
сопряжение  2 отрезков.
Метода API такого нет. Нужна чистая аналитическая геометрия.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Сопряжение
« Ответ #3 : 27-11-2016, 19:59:46 »
Ясно, тогда буду использовать геометрию.

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 738
Re: Сопряжение
« Ответ #4 : 28-11-2016, 08:07:40 »
Вот тут получали полилинию со скругленными углами: http://through-the-interface.typepad.com/through_the_interface/2012/09/overriding-the-grips-of-an-autocad-polyline-to-maintain-fillet-segments-using-net.html. Можно попробовать вытащить код для скругления.

Отмечено как Решение Алексей (IdeaSoft) 29-11-2016, 00:47:51

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

  • Administrator
  • *****
  • Сообщений: 13894
  • Карма: 1789
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Сопряжение
« Ответ #5 : 28-11-2016, 11:39:41 »
Ясно, тогда буду использовать геометрию.
Вот такой алгоритм:

Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Сопряжение
« Ответ #6 : 29-11-2016, 00:47:04 »
Спасибо большое за ответ!

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 624
  • Карма: 158
    • ПГСу Бложик
Re: Сопряжение
« Ответ #7 : 29-11-2016, 08:05:45 »
ИМХО, код опубликованный тут будет интересен
http://www.acadnetwork.com/index.php?PHPSESSID=843b94a2f86a2fcd72c4b0959b7781a7&topic=250.0

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

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Сопряжение
« Ответ #8 : 29-11-2016, 09:17:22 »
ИМХО, код опубликованный тут будет интересен
Проверил этот код
 (по ссылке http://www.acadnetwork.com/index.php?PHPSESSID=843b94a2f86a2fcd72c4b0959b7781a7&topic=250.0)
Все OK работает.
В строке кода на VB первый аргумент pLine забыли написать 
Код - vb.net [Выбрать]
  1. i += 1 + pline.FilletAt(? , i , radius)






Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Re: Сопряжение
« Ответ #9 : 29-11-2016, 09:44:22 »
Вот такой алгоритм:
Александр - для такой задачи использовать Offset а затем видимо еще IntersectWith с окружностью - это халтура:

см. рис

после чего вытащить центр и крайние точки или углы дуги...

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

  • Administrator
  • *****
  • Сообщений: 13894
  • Карма: 1789
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Сопряжение
« Ответ #10 : 29-11-2016, 09:56:21 »
Дима_
Алексей просил через API. :) А если серьёзно, то я просто показал картинку - набросок идеи.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Re: Сопряжение
« Ответ #11 : 29-11-2016, 10:02:07 »
Неправда, он спросил
Цитировать
Подскажите, есть ли метод API

з.ы. Мы уже по моему с Вами обсуждали как "честнее" решать геометрию...

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

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Сопряжение
« Ответ #12 : 29-11-2016, 10:04:52 »
для такой задачи использовать Offset а затем видимо еще IntersectWith с окружностью
В реальной задаче я не использую offset и IntersectWith.
У меня просто координаты точек в памяти.
Я геометрически вычисляю все что мне нужно, а потом вывожу результат в AutoCAD.

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Re: Сопряжение
« Ответ #13 : 29-11-2016, 10:08:48 »
Ну тогда формулы "что ни на есть те". Или у Вас еще третий метод?
з.ы. я собственно за то, что если это возможно в "разумных пределах" - считать математически.