1、acdb 类杂记从今天起我陆续贴给大家:AcApLayoutManager 类处理和访问 AcDbLayout 对象的应用程序特定程序的接口类。这个类也控制着与 GUI 属性相关的 Layout(布局)。继承自AcDbLayoutManager包含文件acaplmgr.h参见AcDbLayout, AcDbLayoutManager成员AcApLayoutManager Application Methods (应用程序方法)AcApLayoutManager:CreateViewports 函数virtual Adesk:BooleancreateViewports() = 0;当在图纸空间
2、布局里能默认建立一个视口时,这个函数返回 kTrue,否则返回 kFalse。AcApLayoutManager:findActiveTab 函数virtual const char *findActiveTab() = 0;这个函数返回一个指向当前选定布局标签的名称的指针常量,这个名称就是当前 AcDbLayout 对象的名称。AcApLayoutManager:getClipBoundaryElaboration 函数virtual Acad:ErrorStatusgetClipBoundaryElaboration(AcDbObjectId clipId,AcGePoint2dArray
3、 *clipId传递非矩形裁剪实体视口的 AcDbObjectIdclipBoundary返回指向裁剪实体视口的 AcGePoint2dArray 边界点的指针这个函数取得一个非矩形裁剪实体视口的 AcDbObjectId 并在一个 AcGePoint2dArray 对象数组中返回屏幕上的边界点。边界点在图纸空 间图形坐标中。如果在显示列表中找到一个边界且成功返回,则返回值为 eOK,调用者必须在使用后删除已返回的 clipBoundary。如果找不到实体的 边界,则返回错误状态。如果应用程序打开的要求有边界的 AcDbViewport,则 clipId 参数将传递给视口的 AcDbViewp
4、ort:nonRectClipEntityId()方法,这个方法将返回视口裁剪实体的 AcDbObjectId。AcApLayoutManager:getNextNewLayoutName 函数virtual char *getNextNewLayoutName(AcDbDatabase* useDb = NULL) = 0;useDb输入指向 AcDbDatabase 的指针,可选的;默认使用当前数据库这个函数扫描名称与“Layout#“类型相匹配的已有的布局(包含已删除的布局),其中“#”是一个从 1 开始的数。这个函数从“Layout1”开始,试图找出未在这个格式中使用的布局类型,并返回
5、该布局类型。AcApLayoutManager:pageSetup 函数virtual intpageSetup(AcDbObjectId layoutBTRId = AcDbObjectId:kNull,void* pParent = NULL,Adesk:Boolean isPageSetupDlg = TRUE) = 0;layoutBTRId输入 AcDbLayout 块表记录用于初始化对话框的 AcDbObjectId,可选的;默认值 AcDbObjectId:kNull 表示使用活动的 AcDbLayout 对象。pParent输入指向父窗口调用对话框的指针,可选的;默认值 NUL
6、L 表示使用 AutoCAD 的主窗口。isPageSetupDlg输入布尔值,在页面设置和绘图对话框之间进行切换。在默认情况下,这个函数使用当前的 AcDbLayout 对象加载“ 页面设置 ”对话框。另外可选的,这个函数使用一个不同的 AcDbLayout 对象、一个指向父窗口的指针以及表示是否使用共享的绘图对话框代替“页面设置”对话框的布尔值作为参数进行初始化。如果“页面设置”对话框被取消,则这个函数返回 0;如果“ 页面设置”对话框成功,则这个函数返回 1;在任何错误的情况下,返回-1。AcApLayoutManager:pointInViewports 函数virtual Acad:
7、ErrorStatuspointInViewports(const AcGePoint3d pickPt传递在世界坐标系下图纸空间的选择点。viewports返回指向要返回的 AcDbViewport 实体的 Ids 的 AcDbObjectIdArray 的指针。这个函数传递在图纸空间的选择点,并返回一个表,表是以覆盖每个选取点的 AcDbViewport,包括非矩形视口的 AcDbObjectId 实体的 AcDbObjectIdArray 的形式返回。如果每个视口在该点重迭,那么将返回所有的视口,但是如果用户双击该点,则将选中在阵列中的第一个 AcDbViewport 的 ID 的视口。
8、图纸空间视口将不会包含在阵列中。如果没有视口含有该点,则返回 ePointNotOnEntity,且不会建立 AcDbObjectIdArray。如果至少有一个视口包含该点,则返回 eOK。用户必须在完成后删除返回的 AcDbObjectIdArray。这个 函数使应用程序可简易地判断一个给定点是否在非矩形(裁剪的)视口内。AcApLayoutManager:setCreateViewports 函数virtual voidsetCreateViewports(Adesk:Boolean createViewports) = 0;createViewports输入的布尔值;表示视口是否默认地在
9、初始入口创建至图纸空间中这个函数确定一个视口是否默认地在初始入口创建至图纸空间布局中。AcApLayoutManager:setDefaultPlotConfig 函数virtual voidsetDefaultPlotConfig(AcDbObjectId layoutBTRId) = 0;layoutBTRId输入用于初始化的 AcDbLayout 对象的 AcDbobjectId。这个函数用适当的默认值初始化给定的 AcDbLayout 对象。AcApLayoutManager:setShowPageSetup 函数virtual voidsetShowPageSetup(Adesk:B
10、oolean showPageSetupDlg) = 0;showPageSetupDlg输入布尔值,“页面设置” 对话框是否在默认的入口加载至图纸空间布局标签中。这个函数设置“页面设置” 对话框是否在默认的入口加载至图纸空间布局标签中。AcApLayoutManager:setShowPaperBackground 函数virtual voidsetShowPaperBackground(Adesk:Boolean showPaperBackground) = 0;showPaperBackground输入布尔值,表示是否显示图纸背景。这个函数设置是否显示当前或活动的 AcDbLayout
11、对象的图纸背景。 kTrue 值设定显示图纸背景;kFalse 值设定不显示图纸背景。AcApLayoutManager:setShowPaperMargins 函数virtual voidsetShowPaperMargins(Adesk:Boolean showPaperMargins) = 0;showPaperMargins输入的布尔值;表示是否显示图纸边缘。这个函数设置是否显示当前或活动的 AcDbLayout 对象的可打印区域或图纸边缘(虚线围成的矩形)。 kTrue 值表示显示图纸边缘;kFalse 值表示不显示图纸边缘。AcApLayoutManager:setShowPrin
12、tBorder 函数virtual voidsetShowPrintBorder(Adesk:Boolean showPrintBorder) = 0;showPrintBorder输入的布尔值;表示是否显示打印边界线。这个函数设置是否显示当前或活动的 AcDbLayout 对象的打印边界线(图纸边界线)。 kTrue 值表示显示打印边界线;kFalse 值表示不显示打印边界线。AcApLayoutManager:setShowTabs 函数virtual voidsetShowTabs(Adesk:Boolean showTabs) = 0;showTabs输入的布尔值;表示是否显示布局标签
13、。这个函数设置是否显示布局标签。kTrue 值表示显示布局标签;kFalse 值表示不显示布局标签。AcApLayoutManager:showPageSetup 函数virtual Adesk:BooleanshowPageSetup() = 0;这个函数返回是否“页面设置” 对话框自动地在初始入口加载至一个图纸空间布局中。返回 1 表示加载;返回 0 表示不加载。AcApLayoutManager:showPaperBackground 函数virtual Adesk:BooleanshowPaperBackground() = 0;这个函数返回当前的 AcDbLayout 对象的图纸背景
14、是否可见。返回 1 表示可见;返回 0 表示不可见。AcApLayoutManager:showPaperMargins 函数virtual Adesk:BooleanshowPaperMargins() = 0;这个函数返回当前的 AcDbLayout 对象的图纸标签是否可见。返回 1 表示可见;返回 0 表示不可见。AcApLayoutManager:showPrintBorder 函数virtual Adesk:BooleanshowPrintBorder() = 0;这个函数返回当前的 AcDbLayout 对象的打印边界线是否可见。返回 1 表示可见;返回 0 表示不可见。AcApL
15、ayoutManager:showTabs 函数virtual Adesk:BooleanshowTabs() = 0;这个函数返回布局标签是否可见。返回 1 表示可见;返回 0 表示不可见。AcApLayoutManager:updateCurrentPaper 函数virtual voidupdateCurrentPaper(Adesk:Boolean zoomToPaper = FALSE) = 0;zoomToPaper输入布尔值,可选的;决定是否在重生视图后 zoom(缩放) 至当前图纸图像的边界。这个函数更新图纸空间的图纸图像以反映活动的 AcDbLayout 对象的当前状态。可选
16、地,传递 kTrue 值将表示将传入执行 zoom(缩放)命令来改变视点以扩展图纸映象的边界。AcApLayoutManager:updateLayoutTabs 函数virtual voidupdateLayoutTabs() = 0;这个函数重生布局标签来将它们更新至它们表示的 AcDbLayout 对象的当前状态。AcDbArc 类AcDbArc 类表示 AutoCAD 中的弧实体。继承自AcDbCurve包含文件dbents.h参见AcDbObject, AcDbEntity, AcGePoint3d, AcGeVector3d成员AcDbArc 建构器和析构器AcDbArc:AcDb
17、Arc 函数AcDbArc();析构器。AcDbArc:AcDbArc 函数AcDbArc(const AcGePoint3dcenter输入弧的中点radius输入弧的半径startAngle输入弧的开始角endAngle输入弧的终止角个建构器使用传递的值创建一个弧。center 必须在 WCS 坐标中。弧使用(0,0,1)作为法向矢量和 0.0 作为厚度初始化。-AcDbArc(const AcGePoint3dcenter输入弧的中点normal输入包含弧的平面的法向矢量radius输入弧的半径startAngle输入弧的开始角endAngle输入弧的终止角这个建构器使用传递的值创建一个
18、弧。center 必须在 WCS 坐标中。弧使用 0.0 作为厚度初始化。-AcDbArc();默认建构器。初始化将法向矢量初始化为(0,0,1),中点初始化为(0,0,0),半径、开始角、终止角初始化为 0.0。在第一次关闭弧之间,半径需要改变为一个非零值。中点和法向矢量必须在 WCS 坐标中。AcDbArc 编辑函数AcDbArc:setCenter 函数Acad:ErrorStatussetCenter(const AcGePoint3dcenter输入弧的中点此函数设置 center 为弧的中心。Center 必须在 WCS 坐标中。中点值对应于 DXF 群组码 10 的 WCS 值。
19、如果成功返回 Acad:eOk,如果传递的数据非法则返回 Acad:eInvalidInput。AcDbArc:setEndAngle 函数Acad:ErrorStatussetEndAngle(double endAngle);endAngle输入弧的终止角(弧度)此函数设置 endAngle 为弧的终止角。endAngle 必须为弧度。角度相对于弧的 OCS 的 X 轴,如视线沿 Z 轴指向原点则正角度方向为逆时针。OCS 的 X 轴使用弧的法向矢量、WCS 的 Z 轴,以及任意的轴运算法则确定。如果角度为负值,则弧仍以逆时针绘出,但从相反的方向度量。例如,4.7124 弧度(270 度)
20、的弧与-1.5708 弧度(-90 度)相等。终止角对应 DXF 群组码 51。如果成功返回 Acad:eOk,如果传递的数据非法则返回 Acad:eInvalidInput。AcDbArc:setNormal 函数Acad:ErrorStatussetNormal(const AcGeVector3dnormal输入弧的法向矢量此函数设置 normal 指向包含弧的平面的法向矢量。normal 必须在 WCS 坐标中且必须为非零长度。法向矢量值对应 DXF 群组码 210。如果成功返回 Acad:eOk,如果传递的数据非法则返回 Acad:eInvalidInput。AcDbArc:setR
21、adius 函数Acad:ErrorStatussetRadius(double radius);radius输入弧的半径此函数设置 radius 为弧的半径。 Radius 必须大于 0。半径值对应 DXF 群组码 40。如果成功返回 Acad:eOk,如果传递的数据非法则返回 Acad:eInvalidInput。AcDbArc:setStartAngle 函数Acad:ErrorStatussetStartAngle(double startAngle);startAngle输入弧的开始角(弧度)此函数设置 startAngle 为弧的终止角。 startAngle 必须为弧度。角度相对
22、于弧的 OCS 的 X 轴,如视线沿 Z 轴指向原点则正角度方向为逆时针。OCS 的 X 轴使用弧的法向矢量、 WCS 的 Z 轴,以及任意的轴运算法则确定。如果角度为负值,则弧仍以逆时针绘出,但从相反的方向度量。例如,4.7124 弧度(270 度)的弧与-1.5708 弧度(-90 度)相等。开始角对应 DXF 群组码 50。如果成功返回 Acad:eOk,如果传递的数据非法则返回 Acad:eInvalidInput。AcDbArc:setThickness 函数Acad:ErrorStatussetThickness(double thickness);thickness输入弧的厚度此
23、函数设置 thickness 为弧的厚度。厚度是弧沿它法向矢量方向(有些称为拉伸方向)的标注。厚度值对应 DXF 群组码 39。如果成功返回 Acad:eOk,如果传递的数据非法则返回 Acad:eInvalidInput。AcDbArc 杂项函数AcDbArc:getClassID 函数virtual Acad:ErrorStatusgetClassID(CLSID* pClsid) const;pClsid未说明Description to come。AcDbArc:getTransformedCopy 函数DBCURVE_METHODS Acad:ErrorStatusgetTransf
24、ormedCopy(const AcGeMatrix3dxform未说明ent未说明Description to come。AcDbArc 查询函数AcDbArc:center 函数AcGePoint3dcenter() const;此函数返回弧在 WCS 坐标中的中点。中点值对应于 DXF 群组码 10 的 WCS 值。AcDbArc:endAngle 函数doubleendAngle() const;此函数返回弧的终止角的弧度。角度相对于弧的 OCS 的 X 轴,如视线沿 Z 轴指向原点则正角度方向为逆时针。OCS 的 X 轴使用弧的法向矢量、WCS 的 Z 轴,以及任意的轴运算法则确定。
25、终止角对应 DXF 群组码 51。AcDbArc:normal 函数AcGeVector3dnormal() const;此函数在 WCS 坐标中返回弧的单位法向矢量。normal 必须在 WCS 坐标中且必须为非零长度。法向矢量值对应 DXF 群组码 210。AcDbArc:radius 函数doubleradius() const;此函数返回弧的半径。半径值对应 DXF 群组码 40。AcDbArc:startAngle 函数doublestartAngle() const;此函数以弧度返回弧的终止角。角度相对于弧的 OCS 的 X 轴,如视线沿 Z 轴指向原点则正角度方向为逆时针。OCS
26、 的 X 轴使用弧的法向矢量、 WCS 的 Z 轴,以及任意的轴运算法则确定。开始角对应 DXF 群组码 50。AcDbArc:thickness 函数doublethickness() const;此函数返回弧的厚度。厚度是弧沿它法向矢量方向(有些称为拉伸方向)的标注。厚度值对应 DXF 群组码 39。AcDbFilter 类此类定义了一个“查询” 。这提供了 AcDbCompositeFilteredBlockIterator 的关键字,与 AcDbCompositeFilteredBlockIterator 相关的索引通过indexClass()方法取得。AcDbSpatialFilte
27、r:indexClass()方法将返回 AcDbSpatialIndex:desc()。需要提供它们自己的索引方式的应用程序需要提供以下三个类的版本:AcDbIndexAcDbFilterAcDbFilteredBlockIterator继承自AcDbObject包含文件dbfilter.h参见AcDbIndexFilterManager, AcDbIndex成员AcDbFilter 建构器和析构器AcDbFilter:AcDbFilter 函数virtualAcDbFilter();析构器。AcDbFilter:AcDbFilter 函数AcDbFilter();默认建构器。AcDbFilt
28、er 函数AcDbFilter:indexClass 函数virtual AcRxClass *indexClass() const;此函数用于 AcDbCompositeFilteredBlockIterator 的 init()方法中。例如,如果过滤在裁剪的 xref 的图形的重生以建立索引遍历器定义过程中过滤生效,则此函数于内部使用。返回此过滤器的 AcDbIndex 的类描述符。AcDbRasterImage 类AcDbRasterImage 实体(或“图像实体”)与 AcDbRasterImageDef 对象(或“图像定义对象”)一起使用,以处理 AutoCAD 中的光栅图像。这两个
29、类之间的关系就象一个 AutoCAD 块定义对象和一个块插入实体之间的关系。以下的 OMT 图表示了图像对象模型的结构。AutoCAD 图像对象模型图像实体是一个可绘的、可选择的 AutoCAD 实体,以一个特定点和方向将一个光栅图像放置在模型或图纸空间中。图像实体链接至一个图像定义对象,并将显示和绘出图像的需要的图像处理操作的请求送至这个对象。因为图像定义对象管理所有图像信息,所有图像实体相对较 小。除了图像位置和方向外,它还包括一个裁剪区域、图像淡出、对比度和亮度参数以其他的典型的 AcDbEntity 属性如层和颜色。两个或更多的图像实体可被链接至一个图像定义实体。因为每个图像实体都有自
30、己的裁剪区域,所以这是一个在图形中不同的位置显示一个光栅图像的不同区域的有效的方法。AcDbRasterImage 实体有时必须在两个坐标系统之间转换:AcDbEntities 的 3D 模型坐标和AcDbRasterImageDef 的 2D 像素坐标。为了这个目的,图像实体包含一个在 3D 世界坐标中指定的平面边界矩形,描述了它在空间中的原始图形的边界。有几个 API 函数可用于在像素和模型坐标之间进行转换。图像定义对象与块定义一样在“幕后”工作,储存至源图像文件的链接并管理用于显示和绘图的底层图像处理。图像定义对象储存在一个特殊的名为 ISM_RASTER_IMAGE_DICT 的 Ac
31、DbDictionary 中。这些对象不是 AutoCAD 实体,因此它们不能被显示或直接由最终用户选择。它们只处理 2D 像素坐标,因此所有图像处理请求必须表示为 2D 操作。图像处理操作如缩放和旋转图形用于显示是由 Autodesk 的图像引擎执行。图像引擎有自己众多的开发人员的 API,在其上可建立复杂的图像处理的应用程序。(Autodesk 图像引擎的信息可通过 Autodesk 开发人员程序取得)。链接至 ism.libAcDbRasterVariables 类在一个 ObjectARX 应用程序中调用 ism.arx 执行。应用程序必须链接至 ObjectARX API 库 ism
32、.lib 以使用针对此类的任何方法。注意:此类上的 AcDbObject 可被访问而无需链接至 ism.lib。只须简单地将对象的指针(例如,acdbOpenObject 返回的)转换为 AcDbObject 类。作为复合实体的 AcDbRasterImageAcDbRasterImage 实体不能被自己使用。它必须链接至一个 AcDbRasterImageDef 对象,通过调用 AcDbRasterImage:setImageDefId 显示图像。而且,必须建构一个 AcDbRasterImageDefReactor 并链接至 AcDbRasterImage 实体和 AcDbRasterIm
33、ageDef 对象。(显示如何创建和链接 AcDbRasterImage, AcDbRasterImageDef 和 AcDbRasterImageDefReactor的范例代码在 ObjectARX 开发包的 samplesism 文件夹下) 。库文件ism.lib继承自AcDbImage包含文件imgent.h参见AcDbObject, AcDbEntity, AcDbImage, AcDbRasterImageDef, AcDbRasterImageDefReactor,AcDbRasterVariables, Image Support Module Overview成员AcDbRas
34、terImage 和 AcDbRasterImageDef 链接函数AcDbRasterImage:imageDefId 函数virtual AcDbObjectIdimageDefId() const;未公布AcDbRasterImage:reactorId 函数virtual AcDbObjectIdreactorId() const;未公布AcDbRasterImage:setImageDefId 函数virtual Acad:ErrorStatussetImageDefId(AcDbObjectId imageId);imageId 未公布未公布AcDbRasterImage:setR
35、eactorId 函数virtual voidsetReactorId(AcDbObjectId reactorId);reactorId 未公布未公布AcDbText 类AcDbText 类表示 AutoCAD 中的 TEXT 实体。继承自AcDbEntity包含文件dbents.h参见AcDbObject, AcDbAttribute, AcDbAttributeDefinition, AcDbShape, AcGePoint3d, AcGeVector3d成员AcDbText 建构器和析构器AcDbText:AcDbText 函数AcDbText();析构器。AcDbText:AcDbT
36、ext 函数AcDbText(const AcGePoint3dposition 输入文本插入点text 输入文本字符串style 输入要使用的 AcDbTextStyleTableRecord 的对象 IDheight 输入形的高度rotation 输入旋转角此建构器初始化文本实体。AcDbLine 类AcDbLine 类表示 AutoCAD 中的线实体。一个线对象是由它的开始点,终止点和法向矢量指定的一个 3D 对象。另外,线对象支持沿其法向矢量方向的厚度(即,高度或“拉伸”) 。继承自AcDbCurve包含文件dbents.h参见AcDbObject, AcDbEntity, AcGeP
37、oint3d, AcGeVector3d成员AcDbLine 建构器和析构器AcDbLine:AcDbLine 函数AcDbLine();建构器。AcDbLine:AcDbLine 函数AcDbLine(const AcGePoint3dstart输入线的起点(WCS 坐标中)end输入线的终点(WCS 坐标中)此建构器初始化线对象使用 start 作为起点,以 end 作为终点。两个点都必须在 WCS 坐标中。AcDbLine();默认建构器。初始化法向矢量为(0,0,1),起点和终点为(0,0,0),厚度为 0.0。所有坐标必须在 WCS 中。AcDbLine 编辑函数AcDbLine:s
38、etEndPoint 函数Acad:ErrorStatussetEndPoint(const AcGePoint3dendPt输入作为线的终点的一个 WCS 点将 endPt 设为线的新终点。endPt 必须在 WCS 坐标中。终点值对应 DXF 群组码 11。如果成功返回 Acad:eOk,如果传递的数据非法则返回 Acad:eInvalidInput。AcDbLine:setNormal 函数Acad:ErrorStatussetNormal(const AcGeVector3dnormal输入作为线的法向矢量的的一个 WCS 矢量将 normal 设为线的法向矢量。normal 必须在
39、WCS 坐标中。法向矢量对应 DXF 群组码 210。如果成功返回 Acad:eOk,如果传递的数据非法则返回 Acad:eInvalidInput。AcDbLine:setStartPoint 函数Acad:ErrorStatussetStartPoint(const AcGePoint3dstartPt输入作为线的终点的一个 WCS 点将 startPt 设为线的新起点。 startPt 必须在 WCS 坐标中。起点值对应 DXF 群组码 10。如果成功返回 Acad:eOk,如果传递的数据非法则返回 Acad:eInvalidInput。AcDbLine:setThickness 函数A
40、cad:ErrorStatussetThickness(double thickness);thickness输入线的新的厚度值将 thickness 设为线的厚度值。厚度值是线沿其法向矢量方向(有时也称为拉伸方向) 的长度。厚度值对应 DXF 群组码 39。如果成功返回 Acad:eOk,如果传递的数据非法则返回 Acad:eInvalidInput。AcDbLine 其他函数AcDbLine:getClassID 函数virtual Acad:ErrorStatusgetClassID(CLSID* pClsid) const;AcDbLine:getOffsetCurvesGivenPl
41、aneNormal 函数Acad:ErrorStatusgetOffsetCurvesGivenPlaneNormal(const AcGeVector3dAcDbLine:getTransformedCopy 函数DBCURVE_METHODS Acad:ErrorStatusgetTransformedCopy(const AcGeMatrix3dAcDbLine 查询函数AcDbLine:endPoint 函数AcGePoint3dendPoint() const;此函数在 WCS 坐标中返回线的终点。终点值对象 DXF 群组码 11。AcDbLine:normal 函数AcGeVect
42、or3dnormal() const;此函数在 WCS 坐标中返回线的单位法向矢量。法向矢量值对应 DXF 群组码 210。AcDbLine:startPoint 函数AcGePoint3dstartPoint() const;此函数在 WCS 坐标中返回线的起点。起点值对应 DXF 群组码 10。AcDbLine:thickness 函数doublethickness() const;此函数返回线的厚度值。厚度值是线沿其法向矢量方向(有时也称为拉伸方向 )的长度。厚度值对应 DXF 群组码 39。AcDbSpline 类此类执行对 AutoCAD 的 SPLINE 实体进行操作。AcDbSp
43、line 类的对象使用一个内嵌的 gelib 对象储存实际的样条曲线信息。样条曲线自身可是一条通过“拟合点” 集的简单的曲线拟合(指定的误差 可能为 0),或是一条 NURBS 样条曲线(即,用于定义样条曲线路径的一个控制点、节点和权值的集合)。在内部,一个曲线拟合的样条曲线仍有NURBS 数 据,然而反过来则不正确。以下的书是样条曲线知识的基础:Curves and Surfaces for CAGD by Gerald FarinMathematical Elements for Computer Graphics by David Rogers and Alan AdamsAn Intr
44、oduction To Splines For Use In Computer Graphics 析构器。AcDbSpline:AcDbSpline 函数AcDbSpline(const AcGePoint3dArrayAcDbSpline(const AcGePoint3dArrayAcDbSpline(int degree,Adesk:Boolean rational,Adesk:Boolean closed,Adesk:Boolean periodic,const AcGePoint3dArrayAcDbSpline(const AcGePoint3dAcDbSpline();默认建构器
45、。AcDbEllipse 类此类表示 AutoCAD 中的椭圆实体。它包含了创建、修改了获取椭圆属性的方法。继承自AcDbCurve包含文件dbelipse.h参见AcDbEntity, AcGePoint3d, AcGeVector3d成员AcDbEllipse 建构器和析构器AcDbEllipse:AcDbEllipse 函数virtualAcDbEllipse();析构器。AcDbEllipse:AcDbEllipse 函数AcDbEllipse(const AcGePoint3dcenter输入椭圆的中点unitNormal输入指定法向矢量的矢量。这确定了椭圆的平面。majorAxis
46、输入表示椭圆 1/2 主轴的矢量radiusRatio输入长轴对短轴的比startAngle输入椭圆的起始角(弧度)endAngle输入椭圆的终止角(弧度)这个建构器使用传递的值创建一个椭圆。center、unitNormal 和 majorAxis 用于计算起始点。majorAxis 矢量表示椭圆的主轴的 一半(即,从中点至椭圆的起始点),而且还是 startAngle 和 endAngle 的零度角。如果视线从法向矢量向下,则正角度为逆时针(即,右手定 则)。startAngle为 0 且 endAngle 为 2pi 将生成一个封闭的椭圆。radiusRatio 必须在 1E-6 至 1
47、.0 范围内。unitNormal 与自身的点积及 majorAxis 与自身的点积必须大于 1E-12。majorAxis 必须垂直于 1E-6 以内法向矢量 must perpendicular to normal within.startAngle 与 endAngle 差必须大于 1E-6。如果任何对参数的要求不能满足,则椭圆的 gelib 对象不会创建且此建构器将与默认的建构器一样工作(即,传递的值将不被使用且椭圆的数据查询方法将返回无效值)。AcDbEllipse:isNull()方法可用于确定此建构器是否成功地使用传递的值初始化椭圆。如果 isNull()返回 Adesk:kFa
48、lse,则初始化成功。AcDbEllipse();此类的默认建构器。初始化 XY 平面上的圆的半径为 1,圆心为(0,0,0) 。AcDbEllipse 编辑函数AcDbEllipse:set 函数Acad:ErrorStatusset(const AcGePoint3dcenter输入椭圆的中点(WCS 坐标中)unitNormal输入法向矢量(WCS 坐标中),其定义了椭圆所在的平面majorAxis输入椭圆的长轴(WCS 坐标中)radiusRatio输入需要的长轴与短轴之比startAngle输入椭圆的起始角(弧度)endAngle输入椭圆的终止角(弧度)此函数使用参数中的指定值设置椭
49、圆的属性。center、unitNormal 和 majorAxis 用于计算起始点。majorAxis 矢量表示椭圆的主轴的一半(即,从中点至椭圆的起始点),而 且还是startAngle 和 endAngle 的零度角。如果视线从法向矢量向下,则正角度为逆时针(即,右手定则)。 startAngle 为 0 且 endAngle 为 2pi 将生成一个封闭的椭圆。radiusRatio 必须在 1E-6 至 1.0 范围内。unitNormal 与自身的点积及 majorAxis 与自身的点积必须大于 1E-12。majorAxis 必须垂直于 1E-6 以内法向矢量 must perpendicu