usingAutodesk.AutoCAD.Runtime;
using Autodesk. AutoCAD. ApplicationServices;
usingAutodesk. AutoCAD. DatabaseServices;
usingAutodesk.AutoCAD.Geometry;
[CommandMethod(HSingleCopyH)]
public static void SingleCopy()
{
// 获取当前文档和数据库
Document acDoc = Application.DocumentManager. MdiActiveDocument;
Database acCurDb = acDoc.Database;
// 启动事务
using (Transaction acTrans =acCurDb. TransactionManager. StartTransaction())
// 以读模式打开 Block
BlockTable acBlkTbl;
acBlkTbl =acTrans. GetObject(acCurDb.BlockTableld,
OpenMode.Fo
rRead) as BlockTable;
// 以写模式打开块表记录模型空间
BlockTableRecord acBlkTblRec :
acBlkTblRec =
acTrans. GetObject(acBlkTbl[BlockTableRecord. ModelSpace ] ,
OpenM
ode.ForWrite) as BlockTableRecord;
// 创建圆,圆心 (2 3) 半径 4.25
Circle acCirc = new Circle() ;
acCirc.Center = new Point3d(2, 3, 0);
acCirc.Radius = 4. 25;
// 将新对象添加到块表记录和事务
acBlkTblRec. AppendEntity(acCirc) ;
acTrans. AddNewlyCreatedDBObject(acCirc, true) ;
// 创建圆的拷贝,修改拷贝的半径
Circle acCircClone = acCirc.Clone() as Circle;
acCircClone. Radius = 1;
// 将拷贝的圆添加到块表记录和事务
acBlkTblRec. AppendEntity(acCircClone) ;
acTrans.AddNewlyCreatedDBObject(acCircClone, true);
// 保存新对象到数据库
acTrans. Commit() ;
}
C#cad二次开发复制对象,可用于同一数据库内的块复制
最新推荐文章于 2024-05-02 20:30:37 发布