нумератор линий в чертеже с сортировкой по длине и присваиванием номера

Автор Тема: нумератор линий в чертеже с сортировкой по длине и присваиванием номера  (Прочитано 7640 раз)

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

Оффлайн ДмитрийПетровАвтор темы

  • ADN OPEN
  • Сообщений: 42
  • Карма: 0
  • Skype: petroffdv
Здравствуйте!

Вопрос. Каким образом я могу реализовать нумератор и отсортировать примитивы по длинам углам линий с присваиванием порядкового номера, начиная с середины как на чертеже в плане? Эти номера нужно будет поместить в буфер, что бы с ними работать дальше.
p.s. пишу плагин под autocad2015 и нигде не мог найти чего-то похожего!
Заранее спасибо!



Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 809
  • Карма: 166
    • Мои плагины к Автокаду
А в чем собственно проблема? Считываете линии, анализируете их геометрию, составляете какие вам нужны списки, вставляете в чертеж MText'ы, копируете что надо в clipboard... все примитивные задачи, на все есть примеры...

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Только тогда, когда Вы сможете сформулировать четкое ТЗ - только тогда Вы сможете рассчитывать на помощь. Впрочем, при четком ТЗ Вы и сами сможете его реализовать. Я вижу две абстрактных картинки, на нижней из них отрезки пронумерованы, но не по длине, а сверху вниз.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
отсортировать примитивы по длинам углам линий
Я так понимаю, что под линиями подразумеваются отрезки (класс Line). В этом случае угол наклона отрезка к оси 0X вычисляется как угол между векторами Line.EndPoint - Line.StartPoint и Vector3d.XAxis, т.е. (без проверки):
Код - C# [Выбрать]
  1. public double angleLineAndXAxis(Line ln)
  2. {
  3.    return (ln.EndPoint - ln.StartPoint).GetAngleTo(Vector3d.XAxis);
  4. }
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ДмитрийПетровАвтор темы

  • ADN OPEN
  • Сообщений: 42
  • Карма: 0
  • Skype: petroffdv
Только тогда, когда Вы сможете сформулировать четкое ТЗ - только тогда Вы сможете рассчитывать на помощь. Впрочем, при четком ТЗ Вы и сами сможете его реализовать. Я вижу две абстрактных картинки, на нижней из них отрезки пронумерованы, но не по длине, а сверху вниз.

Да четкого ТЗ нет признаю, тк задача довольно объемная. Пардон, я немного скорректировал вопрос, сортировку необходимо сделать по углам начиная с середины с присваиванием номера и буферизировать эти порядковые номера. Да там где разрез, отрезки пронумерованы с верху вниз 1-5, так как мы видим в разрезе среднюю часть плана. А нужна нумерация именно как на плане и именно что бы в нижней части плана была нумерация со звездочкой (*), т.к. длины нижней части если смотреть на план = верхней части плана.
p.s. Мне бы пример хоть какой, что бы хоть как-то сориентироваться.

Оффлайн ДмитрийПетровАвтор темы

  • ADN OPEN
  • Сообщений: 42
  • Карма: 0
  • Skype: petroffdv
Я так понимаю, что под линиями подразумеваются отрезки (класс Line). В этом случае угол наклона отрезка к оси 0X вычисляется как угол между векторами Line.EndPoint - Line.StartPoint и Vector3d.XAxis, т.е. (без проверки):

Да, совершенно верно отрезки это Line

Оффлайн ДмитрийПетровАвтор темы

  • ADN OPEN
  • Сообщений: 42
  • Карма: 0
  • Skype: petroffdv
отсортировать примитивы по длинам углам линий
Я так понимаю, что под линиями подразумеваются отрезки (класс Line). В этом случае угол наклона отрезка к оси 0X вычисляется как угол между векторами Line.EndPoint - Line.StartPoint и Vector3d.XAxis, т.е. (без проверки):
Код - C# [Выбрать]
  1. public double angleLineAndXAxis(Line ln)
  2. {
  3.    return (ln.EndPoint - ln.StartPoint).GetAngleTo(Vector3d.XAxis);
  4. }

Дело в том, что в плагине все длины уже посчитаны на основе плана и разреза и уже имеют конечную длину в объеме и оформлены в дебагерную таблицу .csv теперь в следующем этапе необходимо пронумеровать это хозяйство как в чертеже (см.план)

Если нужен сам плагин для контроля, скомпилированный под acad2015, могу прикрепить

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
ДмитрийПетров,
Задача явно не объемная. Только Ваши объяснения меня уже совсем запутали. Как получить угол я уже показал. Что-такое угол начиная с середины я не знаю, но догадываюсь, что речь идет о том, что нужно сортировать по углу наклона отрезка с осью 0X (или по модулю угла наклона).
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Дело в том, что в плагине все длины уже посчитаны на основе плана и разреза и уже имеют конечную длину в объеме и оформлены в дебагерную таблицу .csv теперь в следующем этапе необходимо пронумеровать это хозяйство как в чертеже (см.план)
Я пас. Тем более, что длина никак не определяет угол.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ДмитрийПетровАвтор темы

  • ADN OPEN
  • Сообщений: 42
  • Карма: 0
  • Skype: petroffdv
Я пас. Тем более, что длина никак не определяет угол.

Согласен что длина не определяет угол. Просто с середины (см. план) начинается счет (угол средней линии = 0), а сортировка это как вспомогательный метод для получения нумерации (как на плане).

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Я пас. Тем более, что длина никак не определяет угол.

Согласен что длина не определяет угол. Просто с середины (см. план) начинается счет (угол средней линии = 0), а сортировка это как вспомогательный метод для получения нумерации (как на плане).
Еще раз повторюсь. Ваша формулировка задачи не позволяет её решить. Или Вы:
1. формулируете задачу нормально
2. разбиваете её на отдельные этапы
3. на тех этапах, на которых не знаете что делать - просите помощь
Или Вам придётся искать исполнителя для этой задачи. И тогда Вам сюда: https://adn-cis.org/forum/index.php?board=38.0

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

Оффлайн ДмитрийПетровАвтор темы

  • ADN OPEN
  • Сообщений: 42
  • Карма: 0
  • Skype: petroffdv
Ваша формулировка задачи не позволяет её решить. Или Вы:
1. формулируете задачу нормально
2. разбиваете её на отдельные этапы
3. на тех этапах, на которых не знаете что делать - просите помощь
Или Вам придётся искать исполнителя для этой задачи. И тогда Вам сюда: https://adn-cis.org/forum/index.php?board=38.0

..чуть не нажал галочку - Решение).. ладно попробую разбить на еще более мелкие этапы.
 
И тогда Вам сюда: https://adn-cis.org/forum/index.php?board=38.0

так для исполнителя тоже нужно будет все тоже самое объяснять..

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
так для исполнителя тоже нужно будет все тоже самое объяснять..
Безусловно. И в процессе последовательного объяснения ТЗ Вы и сами поймёте как разложить эту задачу на составные части. И тогда возможно и исполнитель не понадобится.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ДмитрийПетровАвтор темы

  • ADN OPEN
  • Сообщений: 42
  • Карма: 0
  • Skype: petroffdv
Безусловно. И в процессе последовательного объяснения ТЗ Вы и сами поймёте как разложить эту задачу на составные части. И тогда возможно и исполнитель не понадобится.

возможно вы правы

Оффлайн Привалов Дмитрий

  • ADN Club
  • *****
  • Сообщений: 534
  • Карма: 117
Просто с середины (см. план) начинается счет (угол средней линии = 0)
Если средняя линия не определена четко в ТЗ, как горизонталь, вертикаль, средняя между отрезками, средняя линия веера и т.д. то рекомендую явно указать отрезок который является средней линией и от него отсчитывать углы.