TRIM vs EXTEND

Автор Тема: TRIM vs EXTEND  (Прочитано 7417 раз)

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

Оффлайн Николай ГорловАвтор темы

  • ADN
  • *
  • Сообщений: 238
  • Карма: 34
TRIM vs EXTEND
« : 14-11-2014, 15:16:16 »
перед вопросом опишу сам принцип работы команд, как я их понимаю (возможно и не правильно понимаю :)) )
принцип работы TRIM
для объекта вызывается Class::intersectWith, потом полученные точки точно садят на траекторию через Class::getClosestPointTo/Class::getParamAtPoint/Class::getPointAtParam и т.д. и т.п.
дальше полученные точки передаются в отработку Class::getSplitCurves, где создаются несколько объектов из кусков начального объекта по указанным точкам.
всё. команда закончена, но, т.к. создавались объекты через "new" но акад производит их принудительную перерисовку.

принцип работы EXTEND
для объекта вызывается Class::intersectWith с параметром "улинняй объект"
дальше полученная точка передается в Class::extend
Код - C++ [Выбрать]
  1. Acad::ErrorStatus CAcDbCurveText::extend(Adesk::Boolean extendStart, const AcGePoint3d &toPoint)
  2. {
  3.         assertReadEnabled();
  4.         Acad::ErrorStatus es = Acad::eAmbiguousInput;
  5.         if (m_pCurve != NULL)
  6.         {
  7.                 es = m_pCurve->extend(extendStart, toPoint);
  8.         }
  9.         return es;
  10. }
  11.  
возврат из неё Acad::eOk. всё хорошо, вот только объект принудительно не перерисовывается. и даже нет входа в subWorldDraw


отрисовка становится правильной если поменять свойства объекта через окно свойств, перетянуть узловую точку или просто вызвать регенерацию чертежа. но хочется ведь чтоб сразу всё было, без танцев с бубном :).
что это может быть? объект наследник от AcDbCurve.
« Последнее редактирование: 14-11-2014, 15:26:32 от Александр Ривилис »

Отмечено как Решение Александр Ривилис 14-11-2014, 15:55:43

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: TRIM vs EXTEND
« Ответ #1 : 14-11-2014, 15:29:29 »
1) Не ленись выставлять правильные теги для языка.
2) Может быть всё-таки не:
Код - C++ [Выбрать]
  1. assertReadEnabled();
а
Код - C++ [Выбрать]
  1. assertWriteEnabled();
;)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Николай ГорловАвтор темы

  • ADN
  • *
  • Сообщений: 238
  • Карма: 34
Re: TRIM vs EXTEND
« Ответ #2 : 14-11-2014, 15:51:33 »
точно :):):)
пока не прикрутил точки привязки всё всех устраивало. прикрутил. полезли проблемы с extend, trim, break :)
вылечил всё кроме extend. но теперь уже всё работает. 

всё. пора на покой. а то разломаю проектик окончательно? если еще чего-то добавлять буду. :):):)
PS: в оригинале то write стоял.

PS: эт я пытаюсь усовершенствовать акадовский текст по кривой :):):), хотя сложно назвать усовершенствованием то, от чего осталось 30% начального кода :)
вот что получается, если в кратце