Тема: for each для ICollection
Здравствуйте, разрабатываю плагин для автокада, который позволяет работать со специфическими объектами, оперируя данными из ООСУБД Cache. Решение представляет из себя два проекта arx и dbx с опцией смешанного с .Net кода.
Вот в другом проекте чисто ObjectARX.Net
Такая конструкция работает без ошибок:
ASCTP.Geometry.Shape ExpShape = ASCTP.Geometry.Shape.OpenId(CacheConnect, reader[reader.GetOrdinal("ID")].ToString()); foreach (ASCTP.Geometry.Primitive ExpPrim in ExpShape.Primitives.Values) { if (ExpPrim.ClassName == "ASCTP.Geometry.Line") { ASCTP.Geometry.Line ExpLine = (ASCTP.Geometry.Line)ExpPrim; Autodesk.AutoCAD.DatabaseServices.Line AutoLine = new Autodesk.AutoCAD.DatabaseServices.Line(new Point3d(ExpLine.Start.X.Value, ExpLine.Start.Y.Value, ExpLine.Start.Z.Value), new Point3d(ExpLine.End.X.Value, ExpLine.End.Y.Value, ExpLine.End.Z.Value)); BTR.AppendEntity(AutoLine); TM.AddNewlyCreatedDBObject(AutoLine, true); } }
А в этом:
Adesk::Boolean ZLOICacheProxy::worldDraw (AcGiWorldDraw *mode) { assertReadEnabled () ; cnCache = new CacheConnection("Server=localhost; Port=1972; Namespace=USER; Password=SYS; User ID=_SYSTEM;"); cnCache->Open(); Shape *Sp=Shape::OpenId(cnCache,"30"); System::Collections::ICollection *zzz=Sp->Primitives->Values;//Чтобы поняли тип переменной for each(Primitive *BufPrim in zzz)//ERROR 1 { if (BufPrim->ClassName=="ASCTP.Geometry.Line") { Line *Ln=(Line*)BufPrim; AcGePoint3d pts[2]; pts[0]=AcGePoint3d((double)Ln->Start->X,(double)Ln->Start->Y,(double)Ln->Start->Z); pts[1]=AcGePoint3d((double)Ln->End->X,(double)Ln->End->Y,(double)Ln->End->Z); mode->geometry().worldLine(pts); } } Sp->Close(); cnCache->Close(); //------ Returning Adesk::kFalse here will force viewportDraw() call return (Adesk::kFalse) ; }
Выдаёт ошибки:
Error 1 error C3285: for each statement cannot operate on variables of type 'System::Collections::ICollection __gc *' d:\mydoc\Visual Studio 2005\Projects\CacheClientARX\CacheClientDBX\ZLOICacheProxy.cpp 209
ну а дальше не по делу, из за того, что zzz не воспринимает.
Есть идеи как работать в моих проектах с этими ICollection?