Временная графика

Автор Тема: Временная графика  (Прочитано 13794 раз)

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

Оффлайн D_TRexАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 104
  • Карма: 0
Временная графика
« : 23-03-2023, 16:55:46 »
Здравствуйте, подскажите как выполнить обозначение как на картинке. Код что приведён ниже не подходит так как пропадает сразу же при движении модели. acedGrDraw - не получилось (видимо нужна ссылка на библиотеку) но судя по видео не подходит. Спасибо
Код - vb.net [Выбрать]
  1. Dim ed As Editor = Application.DocumentManager.MdiActiveDocument.Editor
  2. ed.DrawVector(sp, ep, 256, True)


Оффлайн Алексей Терно

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Re: Временная графика
« Ответ #1 : 23-03-2023, 17:20:31 »
Красные кружки?

Отмечено как Решение D_TRex 28-03-2023, 05:48:14

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

  • Administrator
  • *****
  • Сообщений: 13832
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Временная графика
« Ответ #2 : 23-03-2023, 17:28:22 »
acedGrDraw и acedGrVecs - это то же самое, что Editor.DrawVector / Editor.DrawVectors. Соответственно они тебе не подойдут. Для того чтобы графика была временной, но не стиралась, нужно использовать транзитивную графику (TransientManager). Один из примеров можешь глянуть здесь: https://adn-cis.org/vyiravnivanie-primitiva-po-trem-tochkam.html
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей Терно

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Re: Временная графика
« Ответ #3 : 23-03-2023, 17:53:30 »
Для того чтобы графика была временной, но не стиралась, нужно использовать транзитивную графику (TransientManager).
Александр, а почему не DrawJig?

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

  • Administrator
  • *****
  • Сообщений: 13832
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Временная графика
« Ответ #4 : 23-03-2023, 18:12:31 »
Александр, а почему не DrawJig?
Вообще-то DrawJig используется для других целей. Впрочем, я не знаю как D_TRex собирается использовать временную графику.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей Терно

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Re: Временная графика
« Ответ #5 : 23-03-2023, 18:59:24 »
Вообще-то DrawJig используется для других целей.
Я посмотрел приложенный Вами пример, и мне показалось, что с той задачей прекрасно справится и DrawJig

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

  • Administrator
  • *****
  • Сообщений: 13832
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Временная графика
« Ответ #6 : 23-03-2023, 20:18:47 »
Вообще-то DrawJig используется для других целей.
Я посмотрел приложенный Вами пример, и мне показалось, что с той задачей прекрасно справится и DrawJig
Да. В данном конкретном случае DrawJig можно было бы использовать, хотя DrawJig явно сложнее.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн D_TRexАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 104
  • Карма: 0
Re: Временная графика
« Ответ #7 : 24-03-2023, 04:56:18 »
Спасибо много сообщений на каждое отвечать не к чему.
Алексей Терно да нужны красные кружки при чем они масштабируются при зумировании (это наверное допиливать надо). Задача в пометке точек полилинии и не только, просто зачастую приходится обводить по полилинии, а точек с малым радиусом не видно.
Александр Ривилис Ваш пример обязательно попробую, по результатам напишу.
DrawJig (на всякий случай), а что это такое и как использовать?

Почему то ни чего не происходит, весь код мне не нужен, круг точно получает данные - я их потом считывал, но вот на чертеже ни чего не появляется, есть один нюанс что в примере происходило конвертирование координат, но там весь пример на это был заточен.
Код - vb.net [Выбрать]
  1.         Dim activeDoc As Document = Application.DocumentManager.MdiActiveDocument
  2.         Dim ed As Editor = Application.DocumentManager.MdiActiveDocument.Editor
  3.         Dim selPline = New PromptEntityOptions(vbLf & "Выберите полилинию")
  4.         selPline.SetRejectMessage(vbLf & "Должна быть полилиния")
  5.         selPline.AddAllowedClass(GetType(Polyline), True)
  6.         Dim res = ed.GetEntity(selPline)
  7.         If res.Status <> PromptStatus.OK Then Return
  8.         Dim PID As ObjectId = res.ObjectId
  9.         Dim cPline As Polyline
  10.  
  11.         Application.DocumentManager.MdiActiveDocument.LockDocument()
  12.         Using tr As Transaction = Application.DocumentManager.MdiActiveDocument.Database.TransactionManager.StartTransaction()
  13.             cPline = tr.GetObject(PID, OpenMode.ForWrite, False, True)
  14.             tr.Commit()
  15.         End Using
  16.  
  17.         Dim sp As New Point3d(cPLine.StartPoint(0), cPLine.StartPoint(1), 0)
  18.         Dim ep As New Point3d(cPLine.EndPoint(0), cPLine.EndPoint(1), 0)
  19.         Dim tCircle As New Circle
  20.         tCircle.Center = sp
  21.         tCircle.Radius = 2.5
  22.         Dim coll As New IntegerCollection
  23.         Autodesk.AutoCAD.GraphicsInterface.TransientManager.CurrentTransientManager.AddTransient(tCircle, Autodesk.AutoCAD.GraphicsInterface.TransientDrawingMode.DirectShortTerm, 128, coll)
  24.         ' тут я прерываю и смотрю получилось ли, точнее прочто не выполняю остаток кода
  25.         Autodesk.AutoCAD.GraphicsInterface.TransientManager.CurrentTransientManager.EraseTransient(tCircle, coll)
  26.         tCircle.Dispose()
« Последнее редактирование: 24-03-2023, 07:09:37 от D_TRex »

Оффлайн Алексей Терно

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Re: Временная графика
« Ответ #8 : 24-03-2023, 11:42:24 »
DrawJig (на всякий случай), а что это такое и как использовать?
DrawJig позволяет показывать временную графику во время выполнения собственных команд. Пример использования:

Оффлайн D_TRexАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 104
  • Карма: 0
Re: Временная графика
« Ответ #9 : 24-03-2023, 13:22:20 »
DrawJig позволяет показывать временную графику во время выполнения собственных команд
Тогда не подходит, мне надо подсветить все вершины полилинии или начало и конец трубы

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

  • Administrator
  • *****
  • Сообщений: 13832
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Временная графика
« Ответ #10 : 24-03-2023, 14:04:19 »
D_TRex,
В твоём коде ты создаешь временную графику и сразу ее удаляешь.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн D_TRexАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 104
  • Карма: 0
Re: Временная графика
« Ответ #11 : 24-03-2023, 14:19:03 »
В твоём коде ты создаешь временную графику и сразу ее удаляешь.
Я же прокомментировал что там у меня остановка, а точнее просто удаление не выполняется

Оффлайн Алексей Терно

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Re: Временная графика
« Ответ #12 : 24-03-2023, 15:35:55 »
мне надо подсветить все вершины полилинии или начало и конец трубы
Опиши весь процесс - что именно тебе надо сделать, когда нужно удалять временную графику?

Оффлайн D_TRexАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 104
  • Карма: 0
Re: Временная графика
« Ответ #13 : 24-03-2023, 16:37:33 »
Опиши весь процесс
Я намечаю будущую сеть на чертеже полилинией (так быстрее и удобнее) потом по этой полилинии навожу трубопроводную сеть, так вот хотел временной графикой подсвечивать все вершины полилинии (так как отклонение в несколько градусов визуально не видно - пока не прочертишь сеть. Графика нужна как при нанесении шриховки, удаляемая командой реген.
DrawJig тоже интересно, но это отдельная тема и в конкретном вопросе не помогает

Оффлайн Алексей Терно

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Re: Временная графика
« Ответ #14 : 26-03-2023, 21:31:24 »
Я намечаю будущую сеть на чертеже полилинией (так быстрее и удобнее) потом по этой полилинии навожу трубопроводную сеть
А почему не создать трубопроводную сеть программно по выбранной полилинии? Так вообще не будет никаких отклонений