第8章 自定义对象
vfp第8章

(3)继承性
继承是一个有力的工具,例如父类中实现了某一个 特定功能,那么在它的子类中就自动获得该功能,这样 就免去了重新为子类编写同样代码的重复劳动。 子类可以继承并保持父类的所有特性和功能,但也 可以修改、重置甚至取消有父类继承来的某些特性和功 能,使父类的功能在子类中有所变异,也可以增加父类 所没有的特性和功能,子类的任何变化都不影响它的父 类。继承性体现了类层次中的“共享”机制。 例如,由基本类型的电话(拨号、讲话、听音功 能),可以派生出电话传真机、移动电话、公用投币电 话等,这些电话都继承了电话基本类型的拨号、讲话、 听音功能,又添加了各自的独特功能。
8.1 面向对象程序设计基本概念
8.1.1 基本概念
VFP支持面向对象程序设计(Object-Oriented Programming),面向对象程序设计所追求的目标是将 现实世界的问题求解尽可能简单化,采用符合人类处理问 题的思维方式。它用“对象”表现事物,用“事件”表示 处理事物的动作,用“方法”表现处理事物的过程,用 “消息”传递对象与对象之间的相互联系。 面向对象程序设计方法不同于传统的结构化程序设计, 采用事件驱动编程机制。在事件驱动编程中,程序员只要 编写响应用户动作的程序,如选择命令、移动鼠标等,而 不必考虑按精确次序执行的每个步骤。在这种机制下,不 必编写一个大型的程序,而是建立一个由若干微小程序组 成的应用程序,这些微小程序可以由用户启动的事件来激 发。
光盘使用说明

光盘使用说明程序运行需要的软件环境操作系统:Windows 98及其以上版本(需要安装插件)。
网页浏览器:IE 4.0及其以上版本。
代码编辑器:各种文本编辑软件,比如:记事本、UltraEdit等等,比较专业的编辑软件有Microsoft FrontPage、Macromedia Dreamweaver以及Microsoft Visual InterDev等等,但是不能使用Word、WPS等文字排版工具进行编辑。
数据库系统:Microsoft Acess 2000或更高版本。
代码的使用方法本光盘的代码使用比较简单,只需按照下面步骤进行就可以:(1)将光盘放入光驱中,然后打开其文件夹,将会看到如图1所示的界面。
其中每个文件夹保存一章的内容,和书中章节相对应。
图1 光盘根目录(2)进入其中的一个文件夹(比如“第07章函数”),将会出现如图2所示的界面,在其中显示了多个HTML文件,其中的文件名和书中的代码编号一致。
图2 进入其中的一个目录(3)双击其中的一个文件(比如7.1html),将会出现如图3所示的运行效果,这是在IE浏览器中的运行效果。
(4)如果要查看源代码,可以在页面上右击鼠标,在弹出的快捷菜单中选择“查看源文件”命令,将会出现图4所示的窗口,这是一个文本编辑器,读者可以在其中进行编辑。
图3 运行效果图4 查看源文件查看实例过程中可能会遇到的问题在读者使用源代码的过程中可能会遇到以下问题:(1)html文件执行被拦截:因为html文件中含有脚本代码,所以在执行时IE会弹出安全提示信息,如图5所示。
图5安全提示信息图6 选择“允许阻止的内容”答复:右键单击IE中的黄色信息条,在弹出菜单中选择“允许阻止的内容”并在弹出的对话框中选择“确定”即可,如图6所示。
(2)程序执行与书中结果不同,如实例“19.4.4 Clone方法.html”,多次执行时可能会出现不一样的结果,后半部分没有执行。
答复:这是因为JavaScript代码中执行了数据插入操作,而数据库中又不允许重复插入导致的,此时,可以打开数据库并将相应的内容删除,再运行该程序即可。
VB教程 第8章

8.2.5 程序运行时向窗体添加控件
窗体是Windows应用程序的基本控件,Windows应用程序 应用程序的基本控件, 窗体是 应用程序的基本控件 应用程序 的运行本质上就是窗体的显示.窗体上可以添加各种控件. 的运行本质上就是窗体的显示.窗体上可以添加各种控件. 窗体上的控件通常都是在程序设计时,通过工具箱添加的. 窗体上的控件通常都是在程序设计时,通过工具箱添加的. 但也可以在窗体运行时添加控件. 但也可以在窗体运行时添加控件. 在窗体运行时添加控件,其实是创建一个新的对象, 在窗体运行时添加控件,其实是创建一个新的对象,在窗体 指定位置显示,并将其添加到窗体中.指定位置使用Point 指定位置显示,并将其添加到窗体中.指定位置使用 对象数组,向窗体添加对象调用Controls属性的 属性的Add方法. 方法. 对象数组,向窗体添加对象调用 属性的 方法
编写事件代码: 编写事件代码: ' 窗体Load事件代码 窗体 事件代码 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles MyBase.Load Me.BackColor = Color.Blue End Sub ' 窗体 窗体Click事件代码 事件代码 Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles Me.Click Me.BackColor = Color.Red End Sub ' 窗体 窗体DoubleClick事件代码 事件代码 Private Sub Form1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles Me.DoubleClick Me.BackColor = Color.Yellow End Sub
第8章VB图形设计

VB程序设计教程
沈美莉 马银晓 陈孟建 编著
10
第一节 坐标系统
3. 显示速度 显示速度是指显示图像或文字时的速度。由于显示分辨率和显示器的扫
描频率有关,显示分辨率高时,一个完整屏幕的像素点就增多了,所有像 素都要显示一遍,速度就要慢下来,这就需要提高扫描频率。 4. 颜色和灰度 颜色和灰度是衡量显示系统性能的又一重要参数。早期的显示卡MDA配单 色的显示器只能显示字符,仅有一般亮度和高亮度两种灰度,彩色显示系 统最多也只有16种颜色。而目前的颜色显示系统VGA,可达256种颜色甚至 更多。 5. 图形显示能力 图形显示能力是指屏幕上的每一个像素点可以设置成不同值的能力。早 期的单色显示系统MDA是字符型的,不支持图形显示,它的控制比较简单。 而随后出现的显示系统均能支持图形显示。
VB程序设计教程
沈美莉 马银晓 陈孟建 编著
9
第一节 坐标系统
三、图像分辨率
Visual Basic绘图中的点是以显示器像素为标准的,设置一个点 的颜色是设置窗体对应着的显示器的一个像素的颜色。
1. 显示器简介 显示器是计算机最主要的外部设备之一。显示系统由显示器和适
配卡(显示卡)组成,两者必须配对。 2. 显示分辨率 显示分辨率是指屏幕上有多少个基本像素点。显示系统的分辨率
功能:在<对象名>控件上,画出一条从( x1 , y1 )到( x2 , y2 )的线 段。其中[( x1 , y1 )]和[, <Color> ]为可选项。参数x和y既可以是整 数,又可以是小数。
运行该程序后,显示结果如下图所示。
《Visio 2010图形绘制案例教程》教学课件 第8章 使用容器、标注、墨迹和形状报表

单击“完成〞按钮,返回“报告〞对话框,此时可在“报告〞列 表中看到新创立的报告。接下来可按前面的步骤进行操作,查看生成 的报告。
2.编辑容器样式
创立容器对象后,用户还可以根据绘图页的整体风格重新定义 容器的样式,或设置容器中标题的样式。
选择容器,然后在“容器工具 格式〞对话框的“容器样式〞组 中单击“其他〞按钮 ,在展开的列表中重新选择容器样式,即可更 改容器的整体样式。
假设要重新定义容器的标题样式,可单击“容器样式〞组中的 “标题样式〞按钮 ,在展开的列表中选择需要的选项。
插入与编辑容器对象
使用标注、批注和墨迹
使用形状报表
一、插入与编辑容器对象
〔一〕插入容器对象 〔二〕编辑容器对象
〔一〕插入容器对象
容器是一种特殊的对象,它由预置的多种形状组成,可将绘图文档中 的内容与周围内容分割开来。
要为形状插入容器对象,可选中形状,然后在“插入〞选项卡的“图 局部〞组中单击“容器〞按钮,在展开的列表中单击所需的容器类型。
单击“墨迹〞按钮后,会自动显示“墨迹书写工具 笔〞选项卡, 在该选项卡,用户可在绘制墨迹前选择笔类型,设置墨迹的颜色和宽 度等。
在“墨迹书写工具 笔〞选项卡的“墨迹书写工具〞组中,用户 可选择墨迹笔的类型为“圆珠笔〞或“荧光笔〞;在“笔〞组中单击 “颜色〞按钮 ,在展开的列表中可设置墨迹的颜色;单击“粗细〞按 钮 ,在展开的列表中可设置墨迹的宽度。
4.嵌套容器
假设需要在容器外再嵌套一个容器,可选择容器后右击,在弹 出的快捷菜单中选择“容器〞>“添加到新容器〞选项。
二 、使用标注、批注和墨迹
〔一〕插入与编辑标注 〔二〕使用批注 〔三〕使用墨迹
〔一〕插入与编辑标注
要为形状插入标注,可选择要插入标注的形状,然后在“插入〞 选项卡的“图局部〞组中单击“标注〞按钮 ,在展开的列表中选择 所需的标注样式,然后输入标注文本即可。
第8章TArch绘制建筑平面图(天正建筑基础讲解知识分享

教学具体步骤及内容轴网柱子→两点轴标(LDZB)本命令对始末轴线间的一组平行轴线(直线轴网与圆弧轴网的进深)或者径向轴线(圆弧轴线的圆心角)进行轴号和尺寸标注。
单击【两点轴标】菜单命令后,首先显示无模式对话框如图所示:[起始轴号]希望起始轴号不是默认值1或者A时,在此处输入自定义的起始轴号,可以使用字母和数字组合轴号。
[共用轴号]勾选后表示起始轴号由所选择的已有轴号后继数字或字母决定。
[单侧标注]表示在当前选择一侧的开间(进深)标注轴号和尺寸。
[双侧标注]表示在两侧的开间(进深)均标注轴号和尺寸。
提示在命令行点取要标注的始末轴线,以下标注直线轴网,在单侧标注的情况下,选择轴线的哪一侧就标在哪一侧。
3、圆弧轴网的绘制与标注圆弧轴网由一组同心弧线和不过圆心的径向直线组成,常组合其他轴网,端径向轴线由两轴网共用,由命令【绘制轴网】中的“圆弧轴网”标签执行。
绘制如下表格的圆弧轴网:名称从圆心至外进深5000,2400,4000开间40,30说明:开间是角度,进深一定要注意是从圆心至外录入。
圆弧轴网的标注圆弧轴网的标注与直线轴网相近,特别注意开间圆心边不标轴号,只标开间尺寸。
教学总结:本次课完成的对天正基础进行了讲解,特别是天正绘图前的基本设置,以及与AutoCAD的联系与区别理解。
并完成的了轴网的绘制、标注、编辑;柱子的绘制、填充、编辑;轴线生墙,剪力墙绘制、轴线生墙等知识。
作业布置:1、复习本次课的相应内容。
2、预习绘制与编辑墙线的各种方法,门与窗的绘制方法。
上机作业:精品课程项目六-1;教学具体步骤及内容教学总结:本次课完成的对天正建筑的墙体各种绘制方法以及墙体的编辑等各种工具,还讲了门窗的各种操作方法与技巧。
这部份与第一次的轴网、柱是建筑平面施工图最重要的主成部份,它们的完标志着平面图完成了50%,所以同学们要加强练习。
理解各种操作技巧。
作业布置:1、复习本次课的相应内容。
2、预习房间与屋顶,楼梯与其它他。
第8章 自定义对象

第8章本章简介 8自定义对象†自定义对象的概念。
†从 AcDbObject 派生对象。
†从 AcDbEntity 派生自定义实体。
学习要点† 了解自定义对象的概念及其的应用。
† 掌握从 AcDbObject 派生对象。
† 掌握自定义实体的创建方法。
我们在前面介绍了通过扩充数据方式来存储扩充数据,虽然能满足一定的工程需求,但 是由于最终的扩展数据通过结果缓冲链表的方式存储,缺少面向对象特性,在处理的时候比 较繁琐, 我们完成可以定义自己的类来封装数据, 此种情况下我们需要通 AcDbObject 派生数 据库对象;另外,AutoCAD 是一个通用的 CAD 平台,提供如点、线等通用的对象类型,我 们可以针对行业特征派生自己的实体,如定义螺栓类、管道类等,这些派生的实体除了具有 自己的几何形体外,还包含自己所有的一些数据,如管道的管径、材质等属性。
本章我们介 绍一下自定义数据库对象的概念和方法,用户可以根据自己的实际需求派生一套面向行业的 对象类型。
8.1自定义对象在介绍自定义对象之前, 我们需要对 AutoCAD 中数据库对象的层次关系有所了解了 解,这有助于我们理解后面的实际应操作,AutoCAD 中数据库对象的层次关系如图 8-1 所示。
1PDF 文件使用 "pdfFactory Pro" 试用版本创建 图 8-1AutoCAD 中数据库对象的层次关系 从图 8-1 我们看出所有的数据库对象类都派生自 AcRxObject,该类是所有数据库对 象的基类,它主要实现对象运行时类型识别机制,提供一些用于类型识别的重要函数,它 提供的函数主要有一下几个: n desc() : 静态成员函数,返回指定类的类描述符对象。
n cast(): 返回指定类型的对象。
n isKindOf(): 用于判断对象是否属于指定类或者派生类。
n isA() :返回未知类对象的类描述符对象。
[计算机软件及应用]第8章第一部分 类与对象
![[计算机软件及应用]第8章第一部分 类与对象](https://img.taocdn.com/s3/m/d67b8b52b0717fd5370cdc7c.png)
class Date
{
public:
Date( );
// 默认构造函数
void setDate(int,int,int); // 设置年、月、日
17
class 类名
{ private:
私有数据和函数
public:
公有数据和函数
};
大括号后的分号“;”是类定义的结束
标志。类的成员分为数据和函数,分别
称为成员数据和成员函数。成员数据描
述类对象内部数据的结构,成员函数则
用于操作类对象的这些数据。
18
class Date
{ public:
Date( );
public: void putname(char *n); void getname(char *n);
private: long num;
public: void putnum(long n); long getnum();
};Leabharlann 24成员数据的说明 一般说来,类中的成员数据可以是任何类
型的。成员数据说明的形式等同C++程序中 一般变量的定义形式。
第八章 类与对象
1
80年代后期,在计算机软件领域发生了 许多变化,这些变化极大地影响着几乎所 有的程序设计者和系统分析员的工作。面 向对象的程序设计方法: (Object-Oriented Programming)就是其中之一。
OOP并不是一种程序设计语言,而是一 种新概念——关于数据、过程和它们之间 关系的一种新的思考方法。
int X,Y; 只是这里还要使用访问说明符(类型修饰 符)private、public和protected。在说明成员数 据时不再使用修饰符extern、auto、register。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第8章本章简介 8自定义对象†自定义对象的概念。
†从 AcDbObject 派生对象。
†从 AcDbEntity 派生自定义实体。
学习要点† 了解自定义对象的概念及其的应用。
† 掌握从 AcDbObject 派生对象。
† 掌握自定义实体的创建方法。
我们在前面介绍了通过扩充数据方式来存储扩充数据,虽然能满足一定的工程需求,但 是由于最终的扩展数据通过结果缓冲链表的方式存储,缺少面向对象特性,在处理的时候比 较繁琐, 我们完成可以定义自己的类来封装数据, 此种情况下我们需要通 AcDbObject 派生数 据库对象;另外,AutoCAD 是一个通用的 CAD 平台,提供如点、线等通用的对象类型,我 们可以针对行业特征派生自己的实体,如定义螺栓类、管道类等,这些派生的实体除了具有 自己的几何形体外,还包含自己所有的一些数据,如管道的管径、材质等属性。
本章我们介 绍一下自定义数据库对象的概念和方法,用户可以根据自己的实际需求派生一套面向行业的 对象类型。
8.1自定义对象在介绍自定义对象之前, 我们需要对 AutoCAD 中数据库对象的层次关系有所了解了 解,这有助于我们理解后面的实际应操作,AutoCAD 中数据库对象的层次关系如图 8-1 所示。
1PDF 文件使用 "pdfFactory Pro" 试用版本创建 图 8-1AutoCAD 中数据库对象的层次关系 从图 8-1 我们看出所有的数据库对象类都派生自 AcRxObject,该类是所有数据库对 象的基类,它主要实现对象运行时类型识别机制,提供一些用于类型识别的重要函数,它 提供的函数主要有一下几个: n desc() : 静态成员函数,返回指定类的类描述符对象。
n cast(): 返回指定类型的对象。
n isKindOf(): 用于判断对象是否属于指定类或者派生类。
n isA() :返回未知类对象的类描述符对象。
我们在介绍实体操作的时候讲过如何使用这些函数, 这里我们需要在这里介绍这些函 数的实现机制,从 AcRxObject 派生的类都包含一个相应的类描述符对象,用 AcRxClass 类表示, 它包含了运行使类型的识别信息,AcRxObject 的派生类包含一个指向 AcRxClass 对象的指针(gpDesc),可以通过 AcRxObject::desc()获取这个 AcRxClass 对象指针,而 AcRxClass 对象包含一个指向其父对象 AcRxClass 的指针, 这样构成了类的运行时类层次 表,如图 8-2,我们可以调用 AcRxObject::isKindOf()来判断对象是否是从某个类派生 出来。
图 8-2 行时类层次表 在派生自定义类中要实现运行类的识别信息, 也就是要重载上面提到的 desc()、 isKindOf()2PDF 文件使用 "pdfFactory Pro" 试用版本创建 等 函 数 , 这 可 以 通 过 ObjectARX 提 供 的 宏 来 实 现 , 通 过 使 用 类 声 明 宏 ACRX_DECLARE_MEMBERS(CLASS_NAME)可以声明 desc(), cast(), isA()函数,代码如 下: class CMyClass : public AcRxObject { public: ACRX_DECLARE_MEMBERS(CMyClass); …. } 该宏经过编译预处理后被扩展成一下代码: virtual AcRxClass* isA() const; static AcRxClass* gpDesc; static AcRxClass* desc(); static CMyClass * cast(const AcRxObject* inPtr) { return ((inPtr == 0) || !inPtr->isKindOf(CMyClass::desc())) ? 0 : (CMyClass *)inPtr; }; static void rxInit(); 自定义类的静态成员函数 rxInit()用于实现以下初始化操作: n 注册自定义类。
n 创建类的描述对象。
n 将类描述对象添加到类的描述词典中。
在应用程序的初始化函数中必须调用自定义类的静态成员函数 rxInit()来实现自定义类的 初始化,然后调用全局函数 acrxBuildClassHierarchy 把该类添加到 ACRX 运行类层次表中。
另外在应用程序的卸载时需要调用 deleteAcRxClass()把该类从 ACRX 运行类层次表中删 除,应用程序的初始化代码如下: extern "C" AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt) { switch (msg) { case AcRx::kInitAppMsg: acrxDynamicLinker->unlockApplication(pkt); // 自定义类的初始化 CMyClass::rxInit(); // 把该类添加到 ACRX 运行类层次表中 acrxBuildClassHierarchy(); break; case AcRx::kUnloadAppMsg: // 该类从 ACRX 运行类层次表中删除 deleteAcRxClass(CMyClass::desc()); } return AcRx::kRetOK;3PDF 文件使用 "pdfFactory Pro" 试用版本创建 } 所有永久或者临时的图形对象都实现可绘制接口,封装该接口的对象可以通过火绘制 API 完成绘制, 可显示的对象派生自 AcGiDrawable 类, 该类实现图形系统 (GS) 绘制协议。
AcDbObject 类执行文件操作协议, 从该类派生的对象通过重载文件操作函数可以被保存 为 DWG 或 DXF 文件,或者从 DWG 或 DXF 文件读入。
AcDbEntity 类是实体类,派生自 AcDbObject 类,从该类派生的对象除了可以支持文件 操作外,还可以通过重载绘制函数来按照开发者的要求绘制图形。
8.2 从 AcDbObject 派生从 AcDbObject 类派生的子类可以支持文件操作,即对象可以从 DWG 或者 DXF 文件中 读写, 也就是可以保存到 DWG 或者 DXF 文件中, 要实现文件读写操作派生类必须重载以下 四个函数: Acad::ErrorStatus dwgInFields(AcDbDwgFiler *filer); Acad::ErrorStatus dwgOutFieds(AcDbDwgFiler *filer); Acad::ErrorStatus dxfInFieds(AcDbDxfFiler *filer); Acad::ErrorStatus dxfOutFieds(AcDbDxfFiler *filer); 以上函数的参数是文件操作类 AcDbDwgFiler 或 AcDbDxfFiler 指针,文件操作类是一个 工具类,用于数据库对象的读写读写, ObjectARX 通过枚举类型 AcDb::FilerType 来检查文件 操方式和类型。
例如当调用 AutoCAD 的 SAVE 命令保存文件时,会调用数据库对象的 dwgOutFieds 函 数, 此时使用 kFileFiler 枚举类型; 而当使用 WBLOCK 命令时, 同样调用 dwgOutFieds 函数, 但使用的枚举类型为 kWblockCloneFiler 和 kIdXlateFiler, 如果调用 UNDO 命令取消操作时候, 会调用数据库对象的 dwgInFields 函数,使用的枚举类型是 kUndoFiler。
向文件操作类对象写入数据的过程中,不需要执行错误检查,文件操作类都有一个成员 函数 getFilerStatus()用于返回类的状态,有时候开发者需要检查文件操作类对象的状态。
在 自 定 义 类 中 重 载 文 件 操 作 函 数 时 , 必 须 首 次 调 用 assertReadEnabled() 或 assertWriteEnabled()函数来检查对象处于正确的打开状态, 然后调用自定义类父类的同名函数 来提供对父类数据的重载。
对于 DWG 文件操作函数 dwgInFields 和 dwgOutFieds,必须按照相同的顺序进行数据的 读写操作,否则派生类数据可能发生混乱。
文件操作类对象可以调用成员函数 readItem()和 writeItem()来读写数据,实际上这 两个函数会被所有支持的数据类型重载,另外还可以调用一些指定了数据类型的读写函数, 如 writeInt32 ) 这些函数在被调用时会自动转换参数的数据类型而忽略数据的实际类型, ( 等, 例如自定义类中包含整型数据,则可以调用 readInt32()和 writeInt32()进行相应的读写操 作。
Acad::ErrorStatus CPipeAttribute::dwgOutFields (AcDbDwgFiler *pFiler) const { // assertReadEnabled () ; //----- Save parent class information first. Acad::ErrorStatus es =AcDbObject::dwgOutFields (pFiler) ; if ( es != Acad::eOk ) return (es) ;4PDF 文件使用 "pdfFactory Pro" 试用版本创建 //----- Object version number needs to be saved first if ( (es =pFiler->writeUInt32 (CPipeAttribute::kCurrentVersionNumber)) != Acad::eOk ) return (es) ; ///写入数据开始 pFiler->writeItem(m_dRadius); pFiler->writeItem(m_dThickness); pFiler->writeItem(m_dDeep); pFiler->writeString(m_cMaterial); //写入数据结束 return (pFiler->filerStatus ()) ; }Acad::ErrorStatus CPipeAttribute::dwgInFields (AcDbDwgFiler *pFiler) { assertWriteEnabled () ; //----- Read parent class information first. Acad::ErrorStatus es =AcDbObject::dwgInFields (pFiler) ; if ( es != Acad::eOk ) return (es) ; //----- Object version number needs to be read first Adesk::UInt32 version =0 ; if ( (es =pFiler->readUInt32 (&version)) != Acad::eOk ) return (es) ; if ( version > CPipeAttribute::kCurrentVersionNumber ) return (Acad::eMakeMeProxy) ; //读取数据开始 pFiler->readItem(&m_dRadius); pFiler->readItem(&m_dThickness); pFiler->readItem(&m_dDeep); TCHAR *pString=NULL; pFiler->readString(&pString); _tcscpy(m_cMaterial,pString); // 读取数据结束 return (pFiler->filerStatus ()) ; } 对象可以用 DXF 格式来表示,DXF 格式由成对的 DXF 组码和数据构成,组码对应一种 指定的数据类型, 当定义自定义类对象的 DXF 格式时, 函数读写的的一组数据必须是派生类 的数据标记,这个数据标记的 DXF 组码是 100(AcDb::kDxfSubclass),然后是类名的字符串。