Примеры кода
habrahabr.ru/post/249015/
habrahabr.ru/post/259303/
through-the-interface.typepad.com/through_the_interface/2006/09/working_with_sp.html
arxdummies.blogspot.ru/2005/02/class-2-autocads-database.html
sites.google.com/site/bushmansnetlaboratory/translate-manual/sozdanie-i-redaktirovanie-obektov-autocad/rabota-s-vybrannymi-naborami
Доступ к базе данных открытого документа и итерирование по пространству модели с выводом в консоль типов всех объектов
ИТЕРИРОВАНИЕ ПО ВСЕМ СЛОЯМ С ПОЛУЧЕНИЕМ ОБЪЕКТОВ КАЖДОГО СЛОЯ
through-the-interface.typepad.com/through_the_interface/2008/05/finding-all-the.html
habrahabr.ru/post/259303/
through-the-interface.typepad.com/through_the_interface/2006/09/working_with_sp.html
arxdummies.blogspot.ru/2005/02/class-2-autocads-database.html
sites.google.com/site/bushmansnetlaboratory/translate-manual/sozdanie-i-redaktirovanie-obektov-autocad/rabota-s-vybrannymi-naborami
Доступ к базе данных открытого документа и итерирование по пространству модели с выводом в консоль типов всех объектов
//// Open the model space block table record.
////
AcDbBlockTable *pBlkTbl;
acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlkTbl, AcDb::kForRead);
AcDbBlockTableRecord *pBlkTblRcd;
pBlkTbl->getAt(ACDB_MODEL_SPACE, pBlkTblRcd,
AcDb::kForRead);
pBlkTbl->close();
AcDbBlockTableRecordIterator *pBlkTblRcdItr;
pBlkTblRcd->newIterator(pBlkTblRcdItr);
AcDbEntity *pEnt;
for (pBlkTblRcdItr->start(); !pBlkTblRcdItr->done(); pBlkTblRcdItr->step())
{
pBlkTblRcdItr->getEntity(pEnt,
AcDb::kForRead);
acutPrintf(L"\n-- %s",
(pEnt->isA())->name());
pEnt->close();
}
pBlkTblRcd->close();
delete pBlkTblRcdItr;
acedRetVoid();
public void CreateSolidsAndCheckIntersect() // This method can have any name
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
bool intersect = false;
Transaction tr =
db.TransactionManager.StartTransaction();
using (tr)
{
// Create the solid and set the history flag
Solid3d sol = new Solid3d();
// ранее здесь находился код создания цилиндра
sol1.CreateBox(100.0, 500.0, 35.0);
// Add the Solid3d to the modelspace
BlockTable bt = (BlockTable)tr.GetObject(
db.BlockTableId,
OpenMode.ForRead
);
BlockTableRecord ms = (BlockTableRecord)tr.GetObject(
bt[BlockTableRecord.ModelSpace],
OpenMode.ForWrite
);
ms.AppendEntity(sol1);
tr.AddNewlyCreatedDBObject(sol1, true);
// And transform it to the selected point
// основной метод для перемещения объектов
sol1.TransformBy(
Matrix3d.Displacement(pt - Point3d.Origin)
);
Point3dCollection pts = new Point3dCollection();
Plane one = new Plane(Point3d.Origin, new Vector3d(5d,0d,0d), new Vector3d(0d, 0d, 5d));
//ent.BoundingBoxIntersectWith(ent1, Intersect.OnBothOperands, pts, IntPtr.Zero, IntPtr.Zero);
Point3d thePoint = Point3d.Origin;
Autodesk.AutoCAD.BoundaryRepresentation.Brep brepEnt = new Brep(sol1);
PointContainment pointCont;
brepEnt.GetPointContainment(thePoint, out pointCont);
if (pointCont == PointContainment.Inside)
{
intersect = true;
}
foreach (ObjectId id in ms)
{
DBObject obj = (DBObject) tr.GetObject(id, OpenMode.ForRead);
Entity ent = (Entity)obj;
ed.WriteMessage("\nType:" + ent.GetType().ToString());
}
Point3d p3dMax = sol1.GeometricExtents.MaxPoint; //получаем самую верхнюю точку bounding box
Point3d p3dMin = sol1.GeometricExtents.MinPoint; //получаем самую нижнюю точку bounding box
Brep brep1 = new Brep(sol1); //получаем B-Rep - представление объекта
BrepVertexCollection vert_coll = brep1.Vertices; //Получаем массив вершин
List<Autodesk.AutoCAD.BoundaryRepresentation.Vertex> vert_list = new List<Autodesk.AutoCAD.BoundaryRepresentation.Vertex>();
foreach (Autodesk.AutoCAD.BoundaryRepresentation.Vertex vert in vert_coll)
{
vert_list.Add(vert);
}
Document document = Application.DocumentManager.MdiActiveDocument;
Editor editor;
if (document != null)
{
editor = document.Editor;
editor.WriteMessage("Min Point is" + p3dMin.ToString());
editor.WriteMessage("Intersect" + intersect.ToString());
}
tr.Commit();
}
}
ИТЕРИРОВАНИЕ ПО ВСЕМ СЛОЯМ С ПОЛУЧЕНИЕМ ОБЪЕКТОВ КАЖДОГО СЛОЯ
through-the-interface.typepad.com/through_the_interface/2008/05/finding-all-the.html