Тема: Создание PolyFacesMesh из дотнета - не пойму смысл экзепшена
Пытаюсь из C# создать полигональную сетку, не выходит. Вылетает исключение Autodesk.AutoCAD.Runtime.Exception: eNoDatabse.
PolyFaceMesh mesh = new PolyFaceMesh(); mesh.AppendVertex(new PolyFaceMeshVertex(new Point3d(width / 2, depth / 2, depth))); mesh.AppendVertex(new PolyFaceMeshVertex(new Point3d(width / 2, -depth / 2, depth))); mesh.AppendVertex(new PolyFaceMeshVertex(new Point3d(-width / 2, depth / 2, depth))); mesh.AppendVertex(new PolyFaceMeshVertex(new Point3d(-width / 2, -depth / 2, depth))); mesh.AppendVertex(new PolyFaceMeshVertex(new Point3d(width / 2, depth / 2, 0))); mesh.AppendVertex(new PolyFaceMeshVertex(new Point3d(width / 2, -depth / 2, 0))); mesh.AppendVertex(new PolyFaceMeshVertex(new Point3d(-width / 2, depth / 2, 0))); mesh.AppendVertex(new PolyFaceMeshVertex(new Point3d(-width / 2, -depth / 2, 0))); mesh.AppendFaceRecord(new FaceRecord(1, 3, 7, 5)); BlockTable bt = (BlockTable)tm.GetObject(db.BlockTableId, OpenMode.ForRead, false); BlockTableRecord btr = (BlockTableRecord)tm.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite, false); btr.AppendEntity(mesh); tm.AddNewlyCreatedDBObject(mesh, true);
А если этот кусок меняю на взытый из примера, то все работает :(
Point3d center = new Point3d(9.0, 3.0, 0.0); Vector3d normal = new Vector3d(0.0, 0.0, 1.0); BlockTable bt = (BlockTable)tm.GetObject(db.BlockTableId, OpenMode.ForRead, false); BlockTableRecord btr = (BlockTableRecord)tm.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite, false); using (Circle pcirc = new Circle(center, normal, 10.0)) { btr.AppendEntity(pcirc); tm.AddNewlyCreatedDBObject(pcirc, true); }
Справка в ObjectARX дурацкая - справочник функций и все... Занимаюсь с автокадом только третий день, не бейте сильно за глупость вопроса:)