Тема: не могу замкнуть контур полилинии
Вот собственно код:
COleSafeArray points;
points.CreateOneDim(VT_R8, 1);
points.ResizeOneDim(15);
long index;
double value;
points.PutElement(&(index = 0), &(value = 0.0));
points.PutElement(&(index = 1), &(value = 0.0));
points.PutElement(&(index = 2), &(value = 0.0));
points.PutElement(&(index = 3), &(value = 5.0));
points.PutElement(&(index = 4), &(value = 0.0));
points.PutElement(&(index = 5), &(value = 0.0));
points.PutElement(&(index = 6), &(value = 5.0));
points.PutElement(&(index = 7), &(value = 5.0));
points.PutElement(&(index = 8), &(value = 0.0));
points.PutElement(&(index = 9), &(value = 0.0));
points.PutElement(&(index = 10), &(value = 5.0));
points.PutElement(&(index = 11), &(value = 0.0));
points.PutElement(&(index = 12), &(value = 0.0));
points.PutElement(&(index = 13), &(value = 0.0));
points.PutElement(&(index = 14), &(value = 0.0));
AutoCAD::IAcad3DPolylinePtr pline = m_AcadApplication->ActiveDocument->ModelSpace->Add3DPoly(points);
pline->Closed = true;
Во-первых, последняя точка в массиве такая же, как и первая. Во-вторых, явно устанавливаем Closed в true.
Тем не менее, в контекстном меню построенного полигона есть пункт "Замкнуть".
Это приводит к тому, что при использовании этого полигона в качестве контура для заливки получаю сообщение "Ассоциативность контура штриховки отменена":
double angle =0 + 2 * 3.14159 / 4;
double spacing = 0.1;
AutoCAD::IAcadHatchPtr hatch = m_AcadApplication->ActiveDocument->ModelSpace->AddHatch(0, _bstr_t(L"ANSI31"), FALSE);
hatch->put_PatternAngle(angle);
hatch->put_PatternScale(spacing);
hatch->put_HatchStyle(AutoCAD::acHatchStyleNormal);
COleSafeArray objects;
objects.CreateOneDim(VT_DISPATCH, 1);
objects.PutElement(&(index = 0), pline.GetInterfacePtr());
hatch->AppendOuterLoop(objects);
hatch->Evaluate();