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

ADN Club => AutoCAD .NET API => Тема начата: Балиев от 30-07-2022, 19:09:38

Название: Как задать цвет Jig-геометрии?
Отправлено: Балиев от 30-07-2022, 19:09:38
Я использую DrawJig технологию для рисования линии составленной из одинаковых блоков. При этом уже нарисованная линия отображалась белым цветом, а линия в динамике - красным (Рис.1). Все бы хорошо, но я поменял способ создания входящих в линию блоков и у меня почему-то поменялся цвет линии в динамике - стал черным (Рис.2). Я попробовал задать  ее цвет явным образом:
draw.SubEntityTraits.Color = 1;
Не помогло. Других вариантов я не нашел.
Поэтому вопрос: как задать цвет Jig-геометрии?
Заранее благодарен.


(https://i.postimg.cc/gnxd95xY/1.png) (https://postimg.cc/gnxd95xY)

(https://i.postimg.cc/kD19p9X1/2.png) (https://postimg.cc/kD19p9X1)
Название: Re: Как задать цвет Jig-геометрии?
Отправлено: Александр Пекшев aka Modis от 30-07-2022, 19:16:02
А код-то какой-нибудь где?
Название: Re: Как задать цвет Jig-геометрии?
Отправлено: Балиев от 30-07-2022, 19:23:06
Вот код:
Код - C# [Выбрать]
  1.         protected override bool WorldDraw(Autodesk.AutoCAD.GraphicsInterface.WorldDraw draw)
  2.         {
  3.             Matrix3d curUCSMatrix = cad.DocumentManager.MdiActiveDocument.Editor.CurrentUserCoordinateSystem;
  4.             CoordinateSystem3d curUCS = curUCSMatrix.CoordinateSystem3d;
  5.             Vector3d vRot = m_basePoint[0].GetVectorTo(new Point3d(m_basePoint[0].X, m_basePoint[0].Y, m_basePoint[0].Z + 10));
  6.             int nBlocks = (int)Math.Floor(currentDistance / m_lBlock);
  7.             int n = 1;
  8.             do
  9.             {
  10.                 Point3d jigPt = new Point3d(m_lBlock * (n - 1), 0, 0);
  11.                 BlockReference inMemoryBlockInsert = new BlockReference(jigPt, _blockId);
  12.                 inMemoryBlockInsert.TransformBy(Matrix3d.Rotation(currentAngle, vRot, m_basePoint[0]));
  13.                 draw.SubEntityTraits.Color = 1;
  14.                 draw.Geometry.Draw(inMemoryBlockInsert);
  15.                 inMemoryBlockInsert.Dispose();
  16.                 n++;
  17.             } while (n < nBlocks + 1);
  18.             return true;
  19.         } // WorldDraw()    
  20.  
  21.  
Название: Re: Как задать цвет Jig-геометрии?
Отправлено: Александр Пекшев aka Modis от 30-07-2022, 19:30:39
Попробуйте
Код - C# [Выбрать]
  1. inMemoryBlockInsert.ColorIndex = 1
По крайней мере с кривыми это работает.

И еще вопрос - какое свойство цвета у объектов внутри блока? Должно быть ByBlock как я понимаю
Название: Re: Как задать цвет Jig-геометрии?
Отправлено: Балиев от 30-07-2022, 20:09:26
Попробуйте
Код - C# [Выбрать]

    inMemoryBlockInsert.ColorIndex = 1

По крайней мере с кривыми это работает.
Ничего не изменилось.

И еще вопрос - какое свойство цвета у объектов внутри блока? Должно быть ByBlock как я понимаю
Нет, ByLayer.