Метод Slice

Автор Тема: Метод Slice  (Прочитано 16255 раз)

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

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

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

  • ADN Club
  • ***
  • Сообщений: 188
  • Карма: 2
Метод Slice
« : 04-07-2016, 15:45:34 »
Насколько я понимаю, метод Slice с параметром "true" генерирует обе части разрезанного примитива, например, так:
Код - C# [Выбрать]
  1. Solid3d acSol3DSlice = acSol3D.Slice(acPlane, true);
При этом имя "acSol3DSlice" может использоваться для записи в Block Table Records только одной части.
Код - C# [Выбрать]
  1. acBlkTblRec.AppendEntity(acSol3DSlice);
Как записать вторую часть?

Заранее благодарен.

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Re: Метод Slice
« Ответ #1 : 04-07-2016, 16:05:53 »
А вторая часть - это не исходный солид?

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

  • ADN Club
  • ***
  • Сообщений: 188
  • Карма: 2
Re: Метод Slice
« Ответ #2 : 04-07-2016, 16:40:40 »
Думаю, что нет, поскольку в описании метода сказано, что параметр "true/false" есть "Input flag to indicate whether the other side of the solid is to be generated".

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Re: Метод Slice
« Ответ #3 : 04-07-2016, 16:47:39 »
Думаю, что нет
А проверить? :)
Input flag to indicate whether the other side of the solid is to be generated
Я думаю, что возвращаемое значение как раз и есть сгенерированный солид.

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

  • ADN Club
  • ***
  • Сообщений: 188
  • Карма: 2
Re: Метод Slice
« Ответ #4 : 04-07-2016, 17:14:59 »
А проверить?
Идея хорошая, только как это сделать? Исходный солид там, действительно, есть, но он, вполне возможно, что и должен оставаться. Во всяком случае, нигде не сказано, что он должен исчезать. А вторая часть разрезанного солида отсутствует, поскольку мы ее не занесли в Block Table Records.

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Re: Метод Slice
« Ответ #5 : 04-07-2016, 17:19:24 »
Запустить код и проверить на чертеже. Если исходный солид будет обрезан, а полученный солид будет отрезанная его часть - значит, предположение верно.

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

  • ADN Club
  • ***
  • Сообщений: 188
  • Карма: 2
Re: Метод Slice
« Ответ #6 : 04-07-2016, 17:35:08 »
Хм, тут у меня, вообще, какая то хрень происходит... Ладно, завтра запишу на видео - посмотришь. Но, похоже, я все-таки прав...

Отмечено как Решение Балиев 05-07-2016, 12:19:24

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Метод Slice
« Ответ #7 : 04-07-2016, 19:31:33 »
Насколько я понимаю, метод Slice с параметром "true" генерирует обе части разрезанного примитива, например, так:
Код - C# [Выбрать]
  1. Solid3d acSol3DSlice = acSol3D.Slice(acPlane, true);
При этом имя "acSol3DSlice" может использоваться для записи в Block Table Records только одной части.
Код - C# [Выбрать]
  1. acBlkTblRec.AppendEntity(acSol3DSlice);
Как записать вторую часть?

Заранее благодарен.
Если передан параметр false, то в исходном acSol3D остаётся "положительная" часть исходного Solid3d, а возвращается пустой Solid3d. Если параметр true, то одна часть ("положительная") остаётся в исходном acSol3D, а вторая ("отрицательная) часть возвращается в acSol3DSlice. Так что Дмитрий Загорулькин дал правильный ответ.
« Последнее редактирование: 04-07-2016, 20:06:28 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Re: Метод Slice
« Ответ #8 : 04-07-2016, 20:54:02 »
а возвращается пустой Solid3d
Off-Topic: показать
Как-то нелогично сделали. Потом его еще отдиспозить нужно не забыть. Лучше бы null возвращали или ссылку на исходный солид. Мысли вслух :)

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

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Re: Метод Slice
« Ответ #9 : 05-07-2016, 10:10:45 »
отдиспозить
Ой, какое неудачное слово, не с первого раза правильно прочитал )))

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

  • ADN Club
  • ***
  • Сообщений: 188
  • Карма: 2
Re: Метод Slice
« Ответ #10 : 05-07-2016, 12:12:32 »
Если передан параметр false, то в исходном acSol3D остаётся "положительная" часть исходного Solid3d, а возвращается пустой Solid3d. Если параметр true, то одна часть ("положительная") остаётся в исходном acSol3D, а вторая ("отрицательная) часть возвращается в acSol3DSlice.
Так оно и есть, спасибо. Но там все путает какой то баг в графике, из-за которого трудно разобраться. Вот смотри:
1. Запускаю код, создающий прямоугольную пластину (Solid3D), указываю базовую точку, после чего на некотором расстоянии от базовой точки пластина разрезается методом Slice с параметром true и  "положительная" часть окрашивается в красный цвет. И вот, что наблюдаю:
.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Метод Slice
« Ответ #11 : 05-07-2016, 22:35:56 »
Поиграйся с включением/выключением аппаратного ускорения AutoCAD. Если не поможет - покажи код команды, которая разрезает Solid3d.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • ***
  • Сообщений: 188
  • Карма: 2
Re: Метод Slice
« Ответ #12 : 06-07-2016, 12:48:49 »
А программно включать/выключать аппаратное ускорение можно? Потому что это помогает только, если переключать ускорение после отработки кода.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • ***
  • Сообщений: 188
  • Карма: 2
Re: Метод Slice
« Ответ #14 : 06-07-2016, 13:57:26 »
Да, все работает, спасибо!