《Java教程第9章块和属性.ppt》由会员分享,可在线阅读,更多相关《Java教程第9章块和属性.ppt(38页珍藏版)》请在三一办公上搜索。
1、块和属性,主讲人:李恒凯联系电话:电子邮件:,本次课内容,1 创建不带属性的块2 创建带属性的块3 插入块参照4 遍历参照中的实体5 在当前文件中插入外部文件中的块,1 创建不带属性的块,说明思路步骤效果小结,说明,介绍如何创建不带属性的简单块。实例将会创建一个名为Room的块,它是由四条多段线组成的矩形,用来表示一个房间。,思路,AutoCAD的块是存储在块表记录中的实体对象的集合。每个块从一个BlockBegin对象开始,紧接着是一个或多个Enity对象,最后以BlockEnd对象结束。,创建块的基本步骤,创建一个BlockTableRecord对象并设置块的名称。利用Transactio
2、n类的GetObject()函数获得当前图形的块表对象。创建组成块的实体对象。调用BlockTableRecord类的成员函数AppendEntity将组成块的实体写入块表记录中。调用BlockTable类的Add函数将创建的块表记录写入当前图形的块表中。,步骤,新建一个类库项目,添加引用,添加CreateBlock函数,用于创建一个块。指定基点。注册命令CB,用于调试CreateBlock函数。,见VS.NET,效果,小结,BlockTableRecord类的常用属性与方法。创建块的基本步骤。通过Polyline2d类创建多段线。,2 创建带属性的块,说明思路步骤效果小结,说明,介绍如何创建
3、带属性的块。实例会创建一个名为RMNUM的块,它是在上一节创建的Room块的基础上再加上一个表示房间号码的属性NUMBER。,思路,属性块由构成块的实体和附加信息(属性)组成。因此,定义属性块主要包括块和属性的定义。其中块的定义与上一节不带属性的简单块完全相同,属性的定义主要是通过调用表示属性的AttributeDefinition类的有关属性和函数来实现。,具体方法,创建AttributeDefinition属性定义类对象的实例并设置对象的属性值。由于块的属性定义也可以看作为块中的实体,可以通过块表记录类的成员函数AppendEntity()将属性定义附加到块中。,属性定义的属性值主要包括,
4、属性文字的插入点、高度、旋转角度、对齐方式和宽度。属性提示(Prompt)。属性的默认值。属性的模式,如不可见方式(Invisible)、常量方式(Constant)、验证方式(Verify)、预置方式(Preset)。属性标签名(Tag)。,步骤,添加CreateBlockWithAttributes函数,用于创建一个带属性的图块。在MyBlock类中注册命令CBWA,用于调试CreateBlockWithAttributes函数。,效果,小结,块属性的定义及设置创建属性块的基本步骤属性定义类AttributeDefinition的使用,3 插入块参照,说明思路步骤效果小结,说明,如何将块插
5、入到AutoCAD的图形中?介绍插入参照块的方法。,思路,DatabaseServices命名空间中的BlockReference类代表块参照。public BlockReference(position,blockTableRecord),position参数表示块参照的插入点,blockTableRecord参数是块参照所属的块对象的0bjectId。,思路,块参照的插入与一般实体的插入过程是一样的,都是先后调用BlockTableRecord类的AppendEntity函数及Transaction类的AddNewlyCreatedDB0bject函数来进行。块参照中的属性实体由Datab
6、aseServices命名空间中的AttributeReference类表示,它其实是一个单行文本对象,由DBText类派生。,块参照添加属性实体的步骤,打开块参照所属的块表记录对象;对块表记录对象中的实体进行循环遍历,如果实体是属性定义对象,则根据它的标识(Tag属性)为块参照属性对象设置属性值;获取块参照对象的属性集合对象来为块参照添加新创建的属性参照对象。,步骤,打开上一节创建的类库项目,在MyBlock类中添加InsertBlockRef函数,用于在AutoCAD图形中插入不带属性的块参照。在MyBlock类中添加InsertBlockRefWithAtt函数,用于在AutoCAD图形
7、中插入带属性的块参照。,效果,小结,块参照的定义块属性参照的定义在当前图形中加入块参照及属性,4 遍历块参照中的实体,说明思路步骤效果小结,说明,介绍如何对块参照中的实体进行浏览与修改。实例主要介绍了对块参照属性的操作,块参照中的非属性实体的操作与之类似。,思路,块参照中的非属性对象是不能通过块参照访问的,只能先通过BlockReference类的BlockTableRecord属性获得块参照所属的块表记录对象的ObjectId,然后通过事务处理对象来对块表记录中的实体对象进行访问。块参照的属性由BlockReference类的AttributeCollection属性提供,它是一个集合对象,
8、因此可以使用循环语句对其包含的对象进行遍历,以达到访问它们的目的。,步骤,打开上一节创建的类库项目,注册BrowseBlock命令,用来显示中选择的块参照对象的有关信息添加ChangeBlock函数,用来改变块参照的相关属性。注册ChangeBlockAtt命令,用来调用ChangeBlock函数。,效果,小结,块参照中属性的遍历块参照中属性的修改,5 在当前文件中插入外部文件中的块,说明思路步骤效果小结,说明,将介绍如何在当前AutoCAD数据库中导入其他文件中的块,但文件本身是不会被当作一个块导入的。,思路,首先定义一个数据库对象来表示包含块的文件,该数据库对象会被加载到内存中但不会被显示
9、在AutoCAD窗口中。调用Database类的ReadDwgFile函数将外部Dwg文件读入到新创建的数据库对象中。调用Database类的WblockCloneObjects函数将外部Dwg文件中的块对象复制到当前数据库中。,步骤,添加ImportBlocksFromDw9函数,用于导入外部文件中的块,其中输入参数sourceFileName表示包含完整路径的外部文件名。在BlockImportClass类中注册ImportBlocks命令,用来调用ImportBlocksFromDwg函数。,效果,小结,新建数据库对象。将Dwg文件读入到数据库中进行有关的操作。在不同数据库之间进行对象复制。,