1、AutoCAD二次开发实验二实验二 AutoCAD基本图形对象创建与编辑1,创建直线对象代码如下:CommandMethod(CreatLine) public void creatline() Database db = HostApplicationServices.WorkingDatabase; using (Transaction trans = db.TransactionManager.StartTransaction() /创建直线 Point3d pt1 = new Point3d(2000, 2000, 0); Point3d pt2 = new Point3d(1000,
2、 1000, 0); Line lineEnt = new Line(pt1, pt2); /获得块表 BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead); /获得特定块表记录 BlockTableRecord btr = (BlockTableRecord)trans.GetObject(btBlockTableRecord.ModelSpace, OpenMode.ForWrite); /把图形对象的记录加入到块表中 pModifyEntID = btr.AppendEntity(li
3、neEnt); /将直线添加到事务处理中 trans.AddNewlyCreatedDBObject(lineEnt, true); trans.Commit(); 运行效果如下图所示修改直线代码如下:CommandMethod(ModifyLine) public void ModifyLine() Database db = HostApplicationServices.WorkingDatabase; using (Transaction trans = db.TransactionManager.StartTransaction() /打开要修改的图形对象,定义一个实体对象 Enti
4、ty pEnt = (Entity)trans.GetObject(pModifyEntID, OpenMode.ForWrite); /修改颜色 pEnt.ColorIndex = 5; pEnt.Close(); trans.Commit(); 2,创建圆对象代码如下:CommandMethod(CreatCir) public void Circle() /声明圆对象 Circle c = new Circle(); c.Center = new Point3d(0, 0, 0); c.Radius = 100; Database db = HostApplicationServices
5、.WorkingDatabase; /启动事务 using (Transaction trans = db.TransactionManager.StartTransaction() /创建块表 BlockTable c_block = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead);/读取,0 BlockTableRecord c_block_record = (BlockTableRecord)trans.GetObject(c_blockBlockTableRecord.ModelSpace, OpenMode
6、.ForWrite);/写入,1 c_block_record.AppendEntity(c);/块表记录追加实体,把图形对象的记录加入到块表记录 trans.AddNewlyCreatedDBObject(c, true);/将圆添加到事务处理中 trans.Commit();/提交事务 3,创建圆弧对象代码如下:/创建圆弧 CommandMethod(CreatArc) public void CreatArc() Database db = HostApplicationServices.WorkingDatabase; using (Transaction trans = db.Tra
7、nsactionManager.StartTransaction() /创建圆弧,指定圆心,半径,起始角,终止角 Arc pArc = new Arc(new Point3d(100,100,0),3000,0,30); /获得块表 BlockTable pBlkTbl = (BlockTable)trans.GetObject(db.BlockTableId,OpenMode.ForRead); /获得特定块表记录 BlockTableRecord pBlkTblRec = (BlockTableRecord)trans.GetObject(pBlkTblBlockTableRecord.M
8、odelSpace,OpenMode.ForWrite); /将图形对象的记录加到块表记录中 pBlkTblRec.AppendEntity(pArc); /将圆弧添加到事务处理中 trans.AddNewlyCreatedDBObject(pArc,true); trans.Commit(); 4,创建多段线:代码如下:/创建多段线 CommandMethod(CreatPloyline) public void createPloyline1() Polyline pl = new Polyline(5); Database db = HostApplicationServices.Wor
9、kingDatabase; using (Transaction trans = db.TransactionManager.StartTransaction() Point2d p1 = new Point2d(50, 10); Point2d p2 = new Point2d(100, 30); Point2d p3 = new Point2d(150, 60); Point2d p4 = new Point2d(200, 90); Point2d p5 = new Point2d(250, 120); Point2dCollection pc = new Point2dCollectio
10、n(); pc.Add(p1); pc.Add(p2); pc.Add(p3); pc.Add(p4); pc.Add(p5); for (int i = 0; i 5; i+) pl.AddVertexAt(i, pci, 0.5, 5, 5); BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead); BlockTableRecord btr = (BlockTableRecord)trans.GetObject(btBlockTableRecord.ModelSpace, OpenMod
11、e.ForWrite); btr.AppendEntity(pl); trans.AddNewlyCreatedDBObject(pl, true); trans.Commit(); 5,创建椭圆代码如下:/创建椭圆 CommandMethod(CEllipse) public void Ellipse() Database db = HostApplicationServices.WorkingDatabase; using (Transaction trans = db.TransactionManager.StartTransaction() Ellipse pEllipse = new
12、 Ellipse(new Point3d(150, 150, 0), new Vector3d(0, 0, 50), new Vector3d(50, 50, 0), 0.8, 0, 0); BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead); BlockTableRecord btr = (BlockTableRecord)trans.GetObject(btBlockTableRecord.ModelSpace, OpenMode.ForWrite); btr.AppendEntity
13、(pEllipse); trans.AddNewlyCreatedDBObject(pEllipse, true); trans.Commit(); 6,创建样条曲线代码如下:/创建样条曲线 CommandMethod(CreatSpline) public void CreateSpline() Database db = HostApplicationServices.WorkingDatabase; using (Transaction trans = db.TransactionManager.StartTransaction() Point3d p1 = new Point3d(50
14、, 30, 0); Point3d p2 = new Point3d(100, 60, 0); Point3d p3 = new Point3d(150, 520, 0); Point3d p4 = new Point3d(200, 240, 0); Point3d p5 = new Point3d(250, 300, 0); Point3dCollection pc = new Point3dCollection(); pc.Add(p1); pc.Add(p2); pc.Add(p3); pc.Add(p4); pc.Add(p5); Spline spline = new Spline(
15、pc, 2, 5); BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead); BlockTableRecord btr = (BlockTableRecord)trans.GetObject(btBlockTableRecord.ModelSpace, OpenMode.ForWrite); btr.AppendEntity(spline); trans.AddNewlyCreatedDBObject(spline, true); trans.Commit(); 7,创建面域代码如下:/创建
16、面域 CommandMethod(Polygon) public void CreatePolygon() Database db = HostApplicationServices.WorkingDatabase; using (Transaction Trans = db.TransactionManager.StartTransaction() Point3d center = new Point3d(50, 50, 0); Circle entity = new Circle(center, Vector3d.ZAxis, 150); DBObjectCollection curveS
17、egments = new DBObjectCollection(); DBObjectCollection regions = new DBObjectCollection(); curveSegments.Add(entity); regions = Region.CreateFromCurves(curveSegments); Region newRegion = (Region)regions0; newRegion.SetDatabaseDefaults(); BlockTable bt = (BlockTable)Trans.GetObject(db.BlockTableId, O
18、penMode.ForRead); BlockTableRecord btr = (BlockTableRecord)Trans.GetObject(btBlockTableRecord.ModelSpace, OpenMode.ForWrite); btr.AppendEntity(newRegion); Trans.AddNewlyCreatedDBObject(newRegion, true); Trans.Commit(); 8,创建文字代码如下:/创建文字 CommandMethod(CreatText) public void AddText() Database db = Hos
19、tApplicationServices.WorkingDatabase; using (Transaction trans = db.TransactionManager.StartTransaction() DBText text = new DBText(); text.Position = new Point3d(5, 5, 0); text.ColorIndex = 3; text.TextString = AutoCAD二次开发!; MText text1 = new MText(); text1.Contents = ; text1.Color = Autodesk.AutoCA
20、D.Colors.Color.FromColorIndex(Autodesk.AutoCAD.Colors.ColorMethod.ByAci, 2); BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead); BlockTableRecord btr = (BlockTableRecord)trans.GetObject(btBlockTableRecord.ModelSpace, OpenMode.ForWrite); btr.AppendEntity(text); btr.AppendE
21、ntity(text1); trans.AddNewlyCreatedDBObject(text, true); trans.AddNewlyCreatedDBObject(text1, true); trans.Commit(); 9,创建填充代码如下/创建填充 CommandMethod(CreatHatch) public void AddHatch() Database db = HostApplicationServices.WorkingDatabase; using (Transaction trans = db.TransactionManager.StartTransacti
22、on() Circle circle = new Circle(); circle.Center = new Point3d(150, 150, 0); circle.Radius = 200; BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead); BlockTableRecord btr = (BlockTableRecord)trans.GetObject(btBlockTableRecord.ModelSpace, OpenMode.ForWrite); btr.AppendEnti
23、ty(circle); trans.AddNewlyCreatedDBObject(circle, true); ObjectIdCollection collection = new ObjectIdCollection(); collection.Add(circle.ObjectId); Hatch hatch = new Hatch(); hatch.Elevation = 0; hatch.HatchStyle = HatchStyle.Normal; hatch.ColorIndex = 5; hatch.SetHatchPattern(HatchPatternType.PreDe
24、fined, SOLID); hatch.AppendLoop(HatchLoopTypes.Default, collection); hatch.EvaluateHatch(true); btr.AppendEntity(hatch); trans.AddNewlyCreatedDBObject(hatch, true); trans.Commit(); 10,创建三维实体代码如下:CommandMethod(Create3DSolid) public void Create3DSolid() Database db = HostApplicationServices.WorkingDat
25、abase; using (Transaction trans = db.TransactionManager.StartTransaction() Point3d p1 = new Point3d(50, 50, 0); Point3d p2 = new Point3d(110, 100, 0); Point3d p3 = new Point3d(150, 160, 0); Point3d p4 = new Point3d(210, 190, 0); Point3d p5 = new Point3d(270, 230, 0); Point3dCollection pc = new Point
26、3dCollection(); pc.Add(p1); pc.Add(p2); pc.Add(p3); pc.Add(p4); pc.Add(p5); Polyline3d Polyline3d = new Polyline3d(0, pc, true); BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead); BlockTableRecord btr = (BlockTableRecord)trans.GetObject(btBlockTableRecord.ModelSpace, Ope
27、nMode.ForWrite); DBObjectCollection dbobc = new DBObjectCollection(); DBObjectCollection regions = new DBObjectCollection(); dbobc.Add(Polyline3d); regions = Region.CreateFromCurves(dbobc); Region region = (Region)regions0; Solid3d sd = new Solid3d(); sd.Revolve(region, new Point3d(0, 0, 0), Vector3d.XAxis, 360); PModifyEntID = btr.AppendEntity(sd); trans.AddNewlyCreatedDBObject(sd, true); trans.Commit();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1