CAD二次开发实验报告(10)

2020-04-14 18:26

CreateFrustum(double height, double radiusAlongX, double radiusAlongY, double topRadius)

Height--表示平截头体的高度; radiusAlongX--表示底面在X轴方向的半径; radiusAlongY--表示底面在X轴方向的半径; topRadius—表示顶面半径,创建圆锥topRadius设置为0 代码:

[CommandMethod(\)]//创建锲体 public void CreateWedge() {

Document acDoc = Autodesk.AutoCAD.ApplicationServices.Application. DocumentManager.MdiActiveDocument; Database acCurDb = acDoc.Database;

using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction()) {

BlockTable acBlkTbl;

acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId,OpenMode.ForRead) as BlockTable; BlockTableRecord acBlkTblRec; acBlkTblRec = acTrans.GetObject(

acBlkTbl[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord; Solid3d pSolid3d = new Solid3d(); pSolid3d.CreateTorus(40, 20); acBlkTblRec.AppendEntity(pSolid3d);

acTrans.AddNewlyCreatedDBObject(pSolid3d, true); pSolid3d = new Solid3d();

pSolid3d.CreateWedge(10, 15, 12); acBlkTblRec.AppendEntity(pSolid3d);

acTrans.AddNewlyCreatedDBObject(pSolid3d, true); acTrans.Commit(); } }

[CommandMethod(\)]//创建三维实体 public void Create3DSolid() {

Database db = HostApplicationServices.WorkingDatabase;

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 Point3dCollection(); pc.Add(p1);

40

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( bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite); DBObjectCollection dbobc = new DBObjectCollection(); DBObjectCollection regions = new DBObjectCollection(); dbobc.Add(Polyline3d);

regions = Region.CreateFromCurves(dbobc); Region region = (Region)regions[0]; Solid3d sd = new Solid3d();

sd.Revolve(region, new Point3d(0, 0, 0), Vector3d.XAxis, 360); btr.AppendEntity(sd);

trans.AddNewlyCreatedDBObject(sd, true); trans.Commit(); }

}

41

实验三 ObjectARX .NET托管开发包的使用

一、主要内容

1、创建块定义及插入块参照

2、创建带有属性的块定义及插入带有属性的块参照 3、在对话框中查看块定义的图标 4、在当前文件中插入外部文件中的块 5、在当前文件中插入其他DWG文件

二、学时安排:2学时 三、预习内容

理解块的含义,回顾块和带属性块的定义

四、ObjectARX .NET托管开发包的使用过程

4.1创建块定义及插入块参照

using System;

using System.Collections.Generic; using System.Linq; using System.Text;

using System.Threading.Tasks; using Autodesk.AutoCAD.Runtime;

using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.Geometry; using Autodesk.AutoCAD.EditorInput; using Autodesk.AutoCAD.DatabaseServices;

[assembly: CommandClass(typeof(实验三.CADBlock))] namespace 实验三 {

public class CADBlock {

Editor pEd = Application.DocumentManager.MdiActiveDocument.Editor; public Document pDoc = Autodesk.AutoCAD.ApplicationServices.

Application.DocumentManager.MdiActiveDocument;

}

42

}

4.1.1 创建块定义

→创建一个名为“三角点”的块记录,包括以下实体:

? 一个点 ? 一个圆 ? 一个三角形

代码:

//创建块

[CommandMethod(\)] public void CreateBlock() {

Database acCurDb = pDoc.Database;

using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction()) {

BlockTable acBlkTbl = acTrans.GetObject(

acCurDb.BlockTableId,OpenMode.ForWrite) as BlockTable; // 创建新的块表记录

BlockTableRecord acBlkTblRec = new BlockTableRecord(); string blkname = \三角点\; acBlkTblRec.Name = blkname;

acBlkTblRec.Origin = new Point3d(0, 0, 0); Point3d pCenter = new Point3d(0, 0, 0); //创建中心点

DBPoint pDBPt = new DBPoint(pCenter); //创建圆

Circle pCir = new Circle(pCenter, new Vector3d(0, 0, 1), 0.25); //创建三角形

Polyline pTri = new Polyline(4);

pTri.AddVertexAt(0, new Point2d(0, 1), 0, 0, 0); pTri.AddVertexAt(1, new Point2d(0.866, -0.5), 0, 0, 0); pTri.AddVertexAt(2, new Point2d(-0.866, -0.5), 0, 0, 0); pTri.AddVertexAt(3, new Point2d(0, 1), 0, 0, 0); //给定块的原点

acBlkTblRec.Origin = new Point3d(0, 0, 0); //将图形实体添加到块表记录 acBlkTblRec.AppendEntity(pDBPt); acBlkTblRec.AppendEntity(pCir); acBlkTblRec.AppendEntity(pTri); //将块记录添加到块表 acBlkTbl.Add(acBlkTblRec);

acTrans.AddNewlyCreatedDBObject(acBlkTblRec, true);

43

// 提交修改并销毁事务 acTrans.Commit(); } }

→使用AutoCAD插入块命令浏览及插入上述定义的块

4.1.2 插入块参照

→打开块表BlockTable找到名为三角点的块表记录,创建块引用插入到当前活动块表记录中

代码:

//插入块

[CommandMethod(\)] public void InsertBlock() {

Database acCurDb = pDoc.Database; // 启动一个事务 Start a transaction

using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction()) {

BlockTable acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForWrite) as BlockTable; // 以写方式打开模型空间块表记录

BlockTableRecord acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord. ModelSpace], OpenMode.ForWrite) as BlockTableRecord; //获取三角点块,并创建块引用

BlockTableRecord pBlockTableRecord = acTrans.GetObject (acBlkTbl[\三角点\], OpenMode.ForRead) as BlockTableRecord; BlockReference bref = new BlockReference(new Point3d(10, 10, 0), pBlockTableRecord.ObjectId);

BlockReference bref2 = new BlockReference(new Point3d(30, 30, 0),

44


CAD二次开发实验报告(10).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:(全国通用版)2019版高考数学一轮复习 第二单元 函数的概念及其

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: