云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > CAD二次开发复习题121

CAD二次开发复习题121

  • 62 次阅读
  • 3 次下载
  • 2025/12/9 4:12:09

public string appName = \; [CommandMethod(\)] public void setXData() { //选择实体 PromptEntityOptions pEntityOptions = new PromptEntityOptions(\请选择道路\); PromptEntityResult pEntityResult = pEd.GetEntity(pEntityOptions); if (pEntityResult.Status == PromptStatus.OK) { ObjectId pEntId = pEntityResult.ObjectId; using(Transaction pTrans = m_db.TransactionManager.StartTransaction()) { Entity pRoadEnt = (Entity)pTrans.GetObject(pEntId, OpenMode.ForWrite); TypedValue[] vals = new TypedValue[]{ //注册应用程序 new TypedValue(Convert.ToInt16(DxfCode.ExtendedDataRegAppName),appName), new TypedValue(Convert.ToInt16(DxfCode.ExtendedDataAsciiString),\中央路\), new TypedValue(Convert.ToInt16(DxfCode.ExtendedDataAsciiString),\沥青路面\), new TypedValue(Convert.ToInt16(DxfCode.ExtendedDataAsciiString),\), new TypedValue(Convert.ToInt16(DxfCode.ExtendedDataAsciiString), \双向\) }; //创建缓存 ResultBuffer pResBuff = new ResultBuffer(vals); //设置扩展数据 pRoadEnt.XData = pResBuff; pTrans.Commit(); } } }

[CommandMethod(\)] public void ReadXData() { //选择实体 PromptEntityOptions pEntityOptions = new PromptEntityOptions(\请选择道路\); PromptEntityResult pEntityResult = pEd.GetEntity(pEntityOptions); if (pEntityResult.Status == PromptStatus.OK) { ObjectId pEntId = pEntityResult.ObjectId; using (Transaction pTrans = m_db.TransactionManager.StartTransaction()) { Entity pRoadEnt = (Entity)pTrans.GetObject(pEntId, OpenMode.ForRead); if (pRoadEnt.XData == null) return; //得到实体扩展数据缓存 ResultBuffer pResBuff = pRoadEnt.XData; //转换成TypedValue数组 TypedValue[] getvals = pResBuff.AsArray(); string pRoadName = getvals[1].Value.ToString(); string pRoadMtia = getvals[2].Value.ToString(); string pRoadYear = getvals[3].Value.ToString(); string pSingle = getvals[4].Value.ToString(); pTrans.Commit(); } } }

25、如何使用DBDictionary对象给一设计图或一图形对象添加属性信息? 实 例:使用扩充词典(XRecord)存储扩展数据

[CommandMethod(\)] public void setXRecord() { using (Transaction pTrans = m_db.TransactionManager.StartTransaction()) { DBDictionary dbDictionary = pTrans.GetObject( m_db.NamedObjectsDictionaryId, OpenMode.ForWrite) as DBDictionary; //创建存储图纸设计者信息数据字典 if (!dbDictionary.Contains(\设计者\)) { DBDictionary pDesDict = new DBDictionary(); dbDictionary.SetAt(\设计者信息\, pDesDict); Xrecord pDesRecord = new Xrecord(); TypedValue[] vals = new TypedValue[]{ new TypedValue(Convert.ToInt16(DxfCode.ExtendedDataAsciiString),\李明\), new TypedValue(Convert.ToInt16(DxfCode.ExtendedDataAsciiString),\深圳建筑设计院\), new TypedValue(Convert.ToInt16(DxfCode.ExtendedDataAsciiString),\), new TypedValue(Convert.ToInt16(DxfCode.ExtendedDataAsciiString), \年\) }; //创建缓存 ResultBuffer pResBuff = new ResultBuffer(vals); pDesRecord.XData = pResBuff; pDesDict.SetAt(\设计者\, pDesRecord); } pTrans.Commit(); } }

17 / 23

2、 “当一个对象要被修改时,使用Database对象的ObjectOpendForModify事件应该被通知”这句话是否

正确?

26、AutoCAD中的词典和符号表有什么区别和联系?

AutoCAD 中的词典是一般的容器对象,这类似于AutoCAD中的符号表,但符号表只能存储指定类型的对象,而词典则可以保存任意的DbObject对象或其派生类的对象,实际上词典是通用非图形数据库对象的容器

在AutoCAD中词典用DbDictionary类表示,和符号表一样包含一个唯一的字符串关键字,它的操作也非常类似于符号表操作方法

27、简述创建字体样式的基本过程。

28、ObjectARX .NET API提供了哪几种创建二维圆弧CircularArc2d的方法?

使用Autodesk.AutoCAD.DatabaseServices下的Arc类创建圆弧,该类提供了三种定义圆弧的方法: Arc():不带参数

Arc(Point3d center, double radius, double startAngle, double endAngle)

Arc(Point3d center, Vector3d normal, double radius, double startAngle, double endAngle)

29、采用交互方式,绘制一个已知圆心和半径的圆,并将圆的颜色设置成红色。

[DllImport(\, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)] //调用绘制圆命令 private static extern int acedCommand( int type1, string command, int type2, string center, int type3, string radius, int end); [CommandMethod(\)] public void DrawCircle() { acedCommand(5005, \, 5005, \, 5005, \, 5000); }

18 / 23

第一段代码是交互式创建圆,但没有颜色;第二段代码是静态创建圆,其中pCir.ColorIndex = 1,参数“1”代表红色,4代表绿色,2代表黄色

块操作:

创建块定义的一般步骤:

1)启动数据库事务

2)获得当前图形数据库的块表,向其中添加一条新的块表记录 3)创建组成块定义的实体,并将其添加到新的块表记录中 4)在当前数据库块表添加新建块表记录 5)通知事务处理添加新创建的块表记录

acTrans.AddNewlyCreatedDBObject(acBlkTblRec, true);

6)提交事务

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

一个点 一个圆 一个三角形

19 / 23

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); // 提交修改并销毁事务 acTrans.Commit(); }

程序插入块参照的一般过程:

1)输入块名 2)启动数据库事务

3)获得当前图形数据库的块表 4)根据块名从块表中得到对应块记录 5)使用BlockReference类定义快引用 6)判断块中是否含有属性 7)如果有,则创建新的属性对象

8)将新的新的属性对添加到块参照BlockReference类的对象中 9)通知事务处理添加新创的属性

在当前文件中插入外部文件中的块

20 / 23

搜索更多关于: CAD二次开发复习题121 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

public string appName = \; [CommandMethod(\)] public void setXData() { //选择实体 PromptEntityOptions pEntityOptions = new PromptEntityOptions(\请选择道路\); PromptEntityResult pEntityResult = pEd.GetEntity(pEntityOptions); if (pEntityResult.Status == PromptStatus.OK) { ObjectId pEntId = pEntityResult.Obje

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com