Обновление геометрии Hatch

Автор Тема: Обновление геометрии Hatch  (Прочитано 3325 раз)

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

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

  • ADN OPEN
  • Сообщений: 9
  • Карма: 0
Обновление геометрии Hatch
« : 25-07-2024, 05:12:49 »
Длительное время не могу решить проблему, как обновить геометрию штриховки?

Есть замкнутая полилиния с которой ассоциирована штриховка, если изменить полилинию путём перемещения грипов мышкой - то Hatch перестроится, но если изменить полилинию программным путём, то Hatch не перестроит свою геометрию. Связь между Hatch и полилинией не разрывается, последующее изменение полилинии через перемещение грипа вызовет перестроение геометрии штриховки.
На данный момент нашёл единственный вариант: после изменения геометрии полилинии из Hatch удалить луп, и заново добавить через AppendLoop.

Можно ли как-то иначе заставить Hatch перестроить свою геометрию?

Пробовал вызывать EvaluateHatch - не помогает.
« Последнее редактирование: 25-07-2024, 05:49:36 от Blesya »

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

  • ADN Club
  • *****
  • Сообщений: 546
  • Карма: 119
Re: Обновление геометрии Hatch
« Ответ #1 : 25-07-2024, 09:07:14 »
Можно ли как-то иначе заставить Hatch перестроить свою геометрию?
Если связь не разрывается, возможно нужно вызвать регенерацию экрана, после изменения контура.
Также можешь попробовать включить/выключить свойство Associative, если связь с контуром не удалится или вызвать метод SetHatchPattern

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

  • ADN OPEN
  • Сообщений: 9
  • Карма: 0
Re: Обновление геометрии Hatch
« Ответ #2 : 25-07-2024, 10:21:23 »
Цитировать
Если связь не разрывается, возможно нужно вызвать регенерацию экрана, после изменения контура.
Также можешь попробовать включить/выключить свойство Associative, если связь с контуром не удалится или вызвать метод SetHatchPattern

Пробовал все эти варианты, штриховка упорно отказывалась перестраиваться)

Надеюсь найти какой-то вариант, кроме как пересоздавать лупы, а иначе - остановлюсь на нём.

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

  • ADN Club
  • *****
  • Сообщений: 546
  • Карма: 119
Re: Обновление геометрии Hatch
« Ответ #3 : 25-07-2024, 12:14:47 »
Надеюсь найти какой-то вариант, кроме как пересоздавать лупы, а иначе - остановлюсь на нём.
Возможно это единственный вариант.

Посмотри тут:
https://adndevblog.typepad.com/autocad/2012/07/hatch-using-the-autocad-net-api.html

Поэкспериментируй с этой последовательностью действий:
oHatch.SetHatchPattern
oHatch.Associative = true;
oHatch.AppendLoop
oHatch.EvaluateHatch(true)
Tx.Commit();

Попробуй выполнить все, потом закомментируй AppendLoop,
возможно только oHatch.AppendLoop обновляет, может еще что-то.

Еще можешь попробовать передать не заполненный массив id, возможно этого достаточно для запуска регенерации, примерно так:
var objectIdCollection = new ObjectIdCollection();
Hatch.AppendLoop(HatchLoopTypes, objectIdCollection)

Или так попробовать.
Hatch.AppendLoop(HatchLoopTypes, null)


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

  • ADN OPEN
  • Сообщений: 9
  • Карма: 0
Re: Обновление геометрии Hatch
« Ответ #4 : 25-07-2024, 17:32:43 »
Цитировать
Еще можешь попробовать передать не заполненный массив id, возможно этого достаточно для запуска регенерации, примерно так:
var objectIdCollection = new ObjectIdCollection();
Hatch.AppendLoop(HatchLoopTypes, objectIdCollection)

Или так попробовать.
Hatch.AppendLoop(HatchLoopTypes, null)

Попробовал, оба варианта не работают и приводят к ошибке)
Выходи, что да: единственный вариант - это пересоздать лупы, но, в целом, меня этот вариант устроил, проблем с производительностью нет.
Спасибо!