Текстовые примитивы в собственных примитивах не скрываются после команды СКРЫТЬ (HIDE)
Возьмем такой пример: Вы создали собственный примитив (Custom Entity) и среди других примитивов в методе worldDraw, вы рисуете текст (mode->geometry().text). После создания собственного примитива, когда выполнилась команда СКРЫТЬ (HIDE) в режиме 2D-каркас, текст в собственном примитиве оказывается не скрытым. Кроме того, когда текст рисуется как часть собственного примитива, некоторые другие примитивы могут быть скрыты неправильно. Такого не случается в собственных примитивах, не содержащих текстовые примитивы.
Возможно вы замечали, что и стандартные примитивы TEXT (экземпляры класса AcDbText) иногда не скрываются. Так в чем же проблема?
Для начала попробуйте установить системную переменную “HIDETEXT” в Вкл (если она была в состоянии Выкл). Если это не помогает, то попробуйте установить высоту (thickness) текста. Всё это потому, что текстовые объекты, созданные командами ТЕКСТ (TEXT), ДТЕКСТ(DTEXT) и МТЕКСТ(MTEXT) в некоторых случаях не влияют на команду СКРЫТЬ и необходимо установить ненулевую высоту, например, 0.0001
(Прим. переводчика: Не следует путать высоту текста, задаваемой методом setHeight() с высотой 3D, задаваемой методом setThickness())
Программный эквивалент этого действия такой:
- double thickOld = mode->subEntityTraits().thickness();
- mode->subEntityTraits().setThickness(0.001);
- mode->geometry().text( ... );
- mode->subEntityTraits().setThickness(thickOld);
Конечно для стандартных примитивов AcDbText и AcDbMText следует использовать функцию setThickness() непосредственно.
Обсуждение: http://adn-cis.org/forum/index.php?topic=85.0
Отредактировано 08.06.2013 в 02:29:32