Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: temurka1 от 14-10-2019, 09:15:18

Название: Артефакты при выводе Solid3d во Viewport в PaperSpace
Отправлено: temurka1 от 14-10-2019, 09:15:18
У меня в плагине для AutoCAD 2016 в paper space в отдельный вьюпорт выводится набор из Solid3d, при этом на боковых гранях солидов появляются артефакты, как на изображении:
(https://i.postimg.cc/dL8Y0BwD/image-2019-10-11-T11-13-21-581-Z.png) (https://postimg.cc/dL8Y0BwD)

Подскажите, пожалуйста, какой-нибудь способ избавиться этих артефактов?
Название: Re: Артефакты при выводе Solid3d во Viewport в PaperSpace
Отправлено: temurka1 от 14-10-2019, 09:26:21
Я нагуглил команду SOLPROF, которая создает 2D профили солидов и распределяет их на два слоя (для видимых и невидимых линий). Если применить эту команду из самого AutoCAD, то результат не имеет артефактов, но у меня не получилось вызвать эту команду из .NET.
Вызывал как-то так:

Код - C# [Выбрать]
  1.            
  2. Editor.SwitchToModelSpace();
  3. Editor.Command("_.solprof", SelectionSet.FromObjectIds(solidsObjectIds), "Y", "Y", "Y");
  4.  

Выдает эксепшен eInvalidInput
Название: Re: Артефакты при выводе Solid3d во Viewport в PaperSpace
Отправлено: Александр Ривилис от 14-10-2019, 13:46:30
Подскажите, пожалуйста, какой-нибудь способ избавиться этих артефактов?
Подозреваю, что это связано с аппаратным ускорением видео. Попробуй отключить его.
Название: Re: Артефакты при выводе Solid3d во Viewport в PaperSpace
Отправлено: Александр Ривилис от 14-10-2019, 13:50:12
Выдает эксепшен eInvalidInput
Во-первых, не "Y", а "_Y".
Во-вторых, в каком контексте запускается команда? Вполне возможно, что нужно запускать черед Editor.CommandAsync
Ну и главное. Прочитай у меня в подписи как следует форматировать код у нас на форуме!
Название: Re: Артефакты при выводе Solid3d во Viewport в PaperSpace
Отправлено: Дмитрий Загорулькин от 14-10-2019, 18:54:17
при этом на боковых гранях солидов появляются артефакты, как на изображении:
Хм, а о чём речь? Я не заметил ничего критичного.
Название: Re: Артефакты при выводе Solid3d во Viewport в PaperSpace
Отправлено: Александр Ривилис от 14-10-2019, 18:56:06
при этом на боковых гранях солидов появляются артефакты, как на изображении:
Хм, а о чём речь? Я не заметил ничего критичного.
Наверное имеется в виду пунктиры вдоль сплошных линий.
Название: Re: Артефакты при выводе Solid3d во Viewport в PaperSpace
Отправлено: Дмитрий Загорулькин от 14-10-2019, 19:10:34
Я бы "забил" на это :). Подозреваю, что при печати будет всё хорошо. Возможно, что это видеокарта так балуется. Возможно, что надо основные линии сделать чуток потолще, или невидимые потоньше.
Я нагуглил команду SOLPROF, которая создает 2D профили солидов и распределяет их на два слоя (для видимых и невидимых линий). Если применить эту команду из самого AutoCAD, то результат не имеет артефактов, но у меня не получилось вызвать эту команду из .NET.
Лучше тогда использовать "чистый" .NET, без команд: https://adn-cis.org/forum/index.php?topic=8974.0
Название: Re: Артефакты при выводе Solid3d во Viewport в PaperSpace
Отправлено: temurka1 от 16-10-2019, 12:58:01
Цитировать
Наверное имеется в виду пунктиры вдоль сплошных линий.
Да, именно эти пунктиры.

Цитировать
Я бы "забил" на это :). Подозреваю, что при печати будет всё хорошо.
Я бы тоже "забил", но при печати все было плохо :(

Цитировать
Во-вторых, в каком контексте запускается команда? Вполне возможно, что нужно запускать черед Editor.CommandAsync
Вы правы, я совсем забыл про контексты выполнения в AutoCAD. Спасибо!

В итоге смог запустить команду SOLPROF вот этим кодом:

Код - C# [Выбрать]
  1. await DocumentManager.ExecuteInCommandContextAsync(async _ => await Editor.CommandAsync("_solprof", SelectionSet.FromObjectIds(objectIds), "", "_Y", "_Y", "_Y"));
Название: Re: Артефакты при выводе Solid3d во Viewport в PaperSpace
Отправлено: Александр Ривилис от 16-10-2019, 13:11:48
temurka1,
Я смотрю, что в исходном коде в параметрах _SOLPROF у тебя не хватало "", т.е. вместо
Код - C# [Выбрать]
  1. Editor.Command("_.solprof", SelectionSet.FromObjectIds(solidsObjectIds), "Y", "Y", "Y");
должно было быть
Код - C# [Выбрать]
  1. Editor.Command("_.solprof", SelectionSet.FromObjectIds(solidsObjectIds), "", "_Y", "_Y", "_Y");