找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 12552|回复: 43

[ARX程序]:关于ARX函数讲座(1-14)(注:该主题不准发表评论!!)

[复制链接]
发表于 2003-10-19 15:29:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
从今天起我陆续贴给大家:
AcApLayoutManager 类



处理和访问AcDbLayout对象的应用程序特定程序的接口类。这个类也控制着与GUI属性相关的Layout(布局)。



继承自

AcDbLayoutManager



包含文件

acaplmgr.h



参见

AcDbLayout, AcDbLayoutManager



成员



AcApLayoutManager Application Methods (应用程序方法)



AcApLayoutManager::CreateViewports函数
virtual Adesk::Boolean
createViewports() = 0;

当在图纸空间布局里能默认建立一个视口时,这个函数返回kTrue,否则返回kFalse。



AcApLayoutManager::findActiveTab函数

virtual const char *
findActiveTab() = 0;

这个函数返回一个指向当前选定布局标签的名称的指针常量,这个名称就是当前AcDbLayout对象的名称。



AcApLayoutManager::getClipBoundaryElaboration函数
virtual Acad::ErrorStatus
getClipBoundaryElaboration(
AcDbObjectId clipId,
AcGePoint2dArray *& clipBoundary) = 0;

clipId
传递非矩形裁剪实体视口的AcDbObjectId

clipBoundary
返回指向裁剪实体视口的AcGePoint2dArray边界点的指针


这个函数取得一个非矩形裁剪实体视口的AcDbObjectId并在一个AcGePoint2dArray对象数组中返回屏幕上的边界点。边界点在图纸空间图形坐标中。如果在显示列表中找到一个边界且成功返回,则返回值为eOK,调用者必须在使用后删除已返回的clipBoundary。如果找不到实体的边界,则返回错误状态。如果应用程序打开的要求有边界的AcDbViewport,则clipId参数将传递给视口的AcDbViewport::nonRectClipEntityId()方法,这个方法将返回视口裁剪实体的AcDbObjectId。



AcApLayoutManager::getNextNewLayoutName函数
virtual char *
getNextNewLayoutName(
AcDbDatabase* useDb = NULL) = 0;

useDb
输入指向AcDbDatabase的指针,可选的;默认使用当前数据库


这个函数扫描名称与"Layout#"类型相匹配的已有的布局(包含已删除的布局),其中“#”是一个从1开始的数。这个函数从“Layout1”开始,试图找出未在这个格式中使用的布局类型,并返回该布局类型。



AcApLayoutManager::pageSetup函数
virtual int
pageSetup(
AcDbObjectId layoutBTRId = AcDbObjectId::kNull,
void* pParent = NULL,
Adesk::Boolean isPageSetupDlg = TRUE) = 0;

layoutBTRId
输入AcDbLayout块表记录用于初始化对话框的AcDbObjectId,可选的;默认值AcDbObjectId::kNull表示使用活动的AcDbLayout对象。

pParent
输入指向父窗口调用对话框的指针,可选的;默认值NULL表示使用AutoCAD的主窗口。

isPageSetupDlg
输入布尔值,在页面设置和绘图对话框之间进行切换。


在默认情况下,这个函数使用当前的AcDbLayout对象加载“页面设置”对话框。另外可选的,这个函数使用一个不同的AcDbLayout对象、一个指向父窗口的指针以及表示是否使用共享的绘图对话框代替“页面设置”对话框的布尔值作为参数进行初始化。

如果“页面设置”对话框被取消,则这个函数返回0;如果“页面设置”对话框成功,则这个函数返回1;在任何错误的情况下,返回-1。



AcApLayoutManager::pointInViewports函数
virtual Acad::ErrorStatus
pointInViewports(
const AcGePoint3d & pickPt,
AcDbObjectIdArray & viewports) = 0;

pickPt
传递在世界坐标系下图纸空间的选择点。

viewports
返回指向要返回的AcDbViewport实体的Ids 的AcDbObjectIdArray的指针。


这个函数传递在图纸空间的选择点,并返回一个表,表是以覆盖每个选取点的AcDbViewport,包括非矩形视口的AcDbObjectId实体的AcDbObjectIdArray的形式返回。如果每个视口在该点重迭,那么将返回所有的视口,但是如果用户双击该点,则将选中在阵列中的第一个AcDbViewport的ID的视口。图纸空间视口将不会包含在阵列中。如果没有视口含有该点,则返回ePointNotOnEntity,且不会建立AcDbObjectIdArray。如果至少有一个视口包含该点,则返回eOK。用户必须在完成后删除返回的AcDbObjectIdArray。这个函数使应用程序可简易地判断一个给定点是否在非矩形(裁剪的)视口内。



AcApLayoutManager::setCreateViewports函数
virtual void
setCreateViewports(
Adesk::Boolean createViewports) = 0;

createViewports
输入的布尔值;表示视口是否默认地在初始入口创建至图纸空间中


这个函数确定一个视口是否默认地在初始入口创建至图纸空间布局中。



AcApLayoutManager::setDefaultPlotConfig函数
virtual void
setDefaultPlotConfig(
AcDbObjectId layoutBTRId) = 0;

layoutBTRId
输入用于初始化的AcDbLayout对象的AcDbobjectId。


这个函数用适当的默认值初始化给定的AcDbLayout对象。



AcApLayoutManager::setShowPageSetup函数
virtual void
setShowPageSetup(
Adesk::Boolean showPageSetupDlg) = 0;

showPageSetupDlg
输入布尔值,“页面设置”对话框是否在默认的入口加载至图纸空间布局标签中。


这个函数设置“页面设置”对话框是否在默认的入口加载至图纸空间布局标签中。



AcApLayoutManager::setShowPaperBackground函数
virtual void
setShowPaperBackground(
Adesk::Boolean showPaperBackground) = 0;

showPaperBackground
输入布尔值,表示是否显示图纸背景。


这个函数设置是否显示当前或活动的AcDbLayout对象的图纸背景。kTrue值设定显示图纸背景;kFalse值设定不显示图纸背景。



AcApLayoutManager::setShowPaperMargins函数
virtual void
setShowPaperMargins(
Adesk::Boolean showPaperMargins) = 0;

showPaperMargins
输入的布尔值;表示是否显示图纸边缘。


这个函数设置是否显示当前或活动的AcDbLayout对象的可打印区域或图纸边缘(虚线围成的矩形)。kTrue值表示显示图纸边缘;kFalse值表示不显示图纸边缘。



AcApLayoutManager::setShowPrintBorder函数
virtual void
setShowPrintBorder(
Adesk::Boolean showPrintBorder) = 0;

showPrintBorder
输入的布尔值;表示是否显示打印边界线。


这个函数设置是否显示当前或活动的AcDbLayout对象的打印边界线(图纸边界线)。kTrue值表示显示打印边界线;kFalse值表示不显示打印边界线。



AcApLayoutManager::setShowTabs函数

virtual void
setShowTabs(
Adesk::Boolean showTabs) = 0;

showTabs
输入的布尔值;表示是否显示布局标签。


这个函数设置是否显示布局标签。kTrue值表示显示布局标签;kFalse值表示不显示布局标签。



AcApLayoutManager::showPageSetup函数
virtual Adesk::Boolean
showPageSetup() = 0;

这个函数返回是否“页面设置”对话框自动地在初始入口加载至一个图纸空间布局中。返回1表示加载;返回0表示不加载。



AcApLayoutManager::showPaperBackground函数
virtual Adesk::Boolean
showPaperBackground() = 0;

这个函数返回当前的AcDbLayout对象的图纸背景是否可见。返回1表示可见;返回0表示不可见。



AcApLayoutManager::showPaperMargins函数
virtual Adesk::Boolean
showPaperMargins() = 0;

这个函数返回当前的AcDbLayout对象的图纸标签是否可见。返回1表示可见;返回0表示不可见。



AcApLayoutManager::showPrintBorder函数
virtual Adesk::Boolean
showPrintBorder() = 0;

这个函数返回当前的AcDbLayout对象的打印边界线是否可见。返回1表示可见;返回0表示不可见。



AcApLayoutManager::showTabs函数
virtual Adesk::Boolean
showTabs() = 0;

这个函数返回布局标签是否可见。返回1表示可见;返回0表示不可见。



AcApLayoutManager::updateCurrentPaper函数

virtual void
updateCurrentPaper(
Adesk::Boolean zoomToPaper = FALSE) = 0;

zoomToPaper
输入布尔值,可选的;决定是否在重生视图后zoom(缩放)至当前图纸图像的边界。


这个函数更新图纸空间的图纸图像以反映活动的AcDbLayout对象的当前状态。可选地,传递kTrue值将表示将传入执行zoom(缩放)命令来改变视点以扩展图纸映象的边界。



AcApLayoutManager::updateLayoutTabs函数
virtual void
updateLayoutTabs() = 0;

这个函数重生布局标签来将它们更新至它们表示的AcDbLayout对象的当前状态。

评分

参与人数 2D豆 +1 贡献 +1 收起 理由
ScmTools + 1 技术引导讨论
XDSoft + 1 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2003-10-19 15:36:19 | 显示全部楼层

[ARX函数]:关于ARX函数讲座2

AcDbArc类
AcDbArc类表示AutoCAD中的弧实体。
继承自
AcDbCurve
包含文件
dbents.h
参见
AcDbObject, AcDbEntity, AcGePoint3d, AcGeVector3d
成员
AcDbArc建构器和析构器
AcDbArc::~AcDbArc 函数
~AcDbArc();
析构器。
AcDbArc::AcDbArc 函数
AcDbArc(
const AcGePoint3d& center,
double radius,
double startAngle,
double endAngle);
center
输入弧的中点  
radius
输入弧的半径
startAngle
输入弧的开始角
endAngle
输入弧的终止角个建构器使用传递的值创建一个弧。center必须在WCS坐标中。弧使用(0,0,1)作为法向矢量和0.0作为厚度初始化。
--------------------------------------------------------------------------------

AcDbArc(
const AcGePoint3d& center,
const AcGeVector3d& normal,
double radius,
double startAngle,
double endAngle);
center
输入弧的中点  
normal
输入包含弧的平面的法向矢量  
radius
输入弧的半径
startAngle
输入弧的开始角
endAngle
输入弧的终止角

这个建构器使用传递的值创建一个弧。center必须在WCS坐标中。弧使用0.0作为厚度初始化。
--------------------------------------------------------------------------------
AcDbArc();
默认建构器。初始化将法向矢量初始化为(0,0,1),中点初始化为(0,0,0),
半径、开始角、终止角初始化为0.0。在第一次关闭弧之间,半径需要改变为一个非零值。中点和法向矢量必须在WCS坐标中。
AcDbArc编辑函数
AcDbArc::setCenter 函数
Acad::ErrorStatus
setCenter(
const AcGePoint3d& center);
center
输入弧的中点

此函数设置center为弧的中心。Center必须在WCS坐标中。

中点值对应于DXF群组码10的WCS值。

如果成功返回Acad::eOk,如果传递的数据非法则返回Acad::eInvalidInput。
AcDbArc::setEndAngle 函数
Acad::ErrorStatus
setEndAngle(
double endAngle);
endAngle
输入弧的终止角(弧度)
此函数设置endAngle为弧的终止角。endAngle必须为弧度。角度相对于弧的OCS的X轴,
如视线沿Z轴指向原点则正角度方向为逆时针。OCS的X轴使用弧的法向矢量、WCS的Z轴,以及任意的轴运算法则确定。

如果角度为负值,则弧仍以逆时针绘出,但从相反的方向度量。例如,4.7124弧度(270度)的弧与-1.5708弧度(-90度)相等。

终止角对应DXF群组码51。

如果成功返回Acad::eOk,如果传递的数据非法则返回Acad::eInvalidInput。
AcDbArc::setNormal 函数

Acad::ErrorStatus

setNormal(

const AcGeVector3d& normal);

normal
输入弧的法向矢量


此函数设置normal指向包含弧的平面的法向矢量。normal必须在WCS坐标中且必须为非零长度。

法向矢量值对应DXF群组码210。

如果成功返回Acad::eOk,如果传递的数据非法则返回Acad::eInvalidInput。
AcDbArc::setRadius 函数
Acad::ErrorStatus
setRadius(
double radius);
radius
输入弧的半径
此函数设置radius为弧的半径。Radius必须大于0。
半径值对应DXF群组码40。
如果成功返回Acad::eOk,如果传递的数据非法则返回Acad::eInvalidInput。
AcDbArc::setStartAngle 函数
Acad::ErrorStatus
setStartAngle(
double startAngle);
startAngle
输入弧的开始角(弧度)
此函数设置startAngle为弧的终止角。startAngle必须为弧度。角度相对于弧的OCS的X轴,如视线沿Z轴指向原点则正角度方向为逆时针。OCS的X轴使用弧的法向矢量、WCS的Z轴,以及任意的轴运算法则确定。
如果角度为负值,则弧仍以逆时针绘出,但从相反的方向度量。例如,4.7124弧度(270度)的弧与-1.5708弧度(-90度)相等。
开始角对应DXF群组码50。
如果成功返回Acad::eOk,如果传递的数据非法则返回Acad::eInvalidInput。
AcDbArc::setThickness 函数
Acad::ErrorStatus
setThickness(
double thickness);
thickness
输入弧的厚度
此函数设置thickness 为弧的厚度。厚度是弧沿它法向矢量方向(有些称为拉伸方向)的标注。
厚度值对应DXF群组码39。
如果成功返回Acad::eOk,如果传递的数据非法则返回Acad::eInvalidInput。
AcDbArc杂项函数
AcDbArc::getClassID 函数
virtual Acad::ErrorStatus
getClassID(
CLSID* pClsid) const;
pClsid
未说明
Description to come。
AcDbArc::getTransformedCopy 函数
DBCURVE_METHODS Acad::ErrorStatus
getTransformedCopy(
const AcGeMatrix3d& xform,
AcDbEntity*& ent) const;
xform
未说明
ent
未说明
Description to come。
AcDbArc查询函数
AcDbArc::center 函数
AcGePoint3d
center() const;
此函数返回弧在WCS坐标中的中点。
中点值对应于DXF群组码10的WCS值。
AcDbArc::endAngle 函数
double
endAngle() const;
此函数返回弧的终止角的弧度。角度相对于弧的OCS的X轴,
如视线沿Z轴指向原点则正角度方向为逆时针。OCS的X轴使用弧的法向矢量、
WCS的Z轴,以及任意的轴运算法则确定。
终止角对应DXF群组码51。
AcDbArc::normal 函数
AcGeVector3d
normal() const;
此函数在WCS坐标中返回弧的单位法向矢量。normal必须在WCS坐标中且必须为非零长度。
法向矢量值对应DXF群组码210。
AcDbArc::radius 函数
double
radius() const;
此函数返回弧的半径。
半径值对应DXF群组码40。
AcDbArc::startAngle 函数
double
startAngle() const;
此函数以弧度返回弧的终止角。角度相对于弧的OCS的X轴,如视线沿Z轴指向原点则正角度方向为逆时针
。OCS的X轴使用弧的法向矢量、WCS的Z轴,以及任意的轴运算法则确定。
开始角对应DXF群组码50。
AcDbArc::thickness 函数
double
thickness() const;
此函数返回弧的厚度。厚度是弧沿它法向矢量方向(有些称为拉伸方向)的标注。
厚度值对应DXF群组码39。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-10-19 15:41:46 | 显示全部楼层

[ARX函数]:[ARX函数]:[ARX函数]:ARX讲座3

AcDbFilter类
此类定义了一个“查询”。这提供了AcDbCompositeFilteredBlockIterator的关键字,与AcDbCompositeFilteredBlockIterator相关的索引通过indexClass()方法取得。
AcDbSpatialFilter::indexClass()方法将返回AcDbSpatialIndex::desc()。
需要提供它们自己的索引方式的应用程序需要提供以下三个类的版本:
AcDbIndex
AcDbFilter
AcDbFilteredBlockIterator
继承自
AcDbObject
包含文件
dbfilter.h
参见
AcDbIndexFilterManager, AcDbIndex
成员
AcDbFilter建构器和析构器
AcDbFilter::~AcDbFilter 函数
virtual
~AcDbFilter();
析构器。
AcDbFilter::AcDbFilter 函数
AcDbFilter();
默认建构器。
AcDbFilter函数
AcDbFilter::indexClass 函数
virtual AcRxClass *
indexClass() const;
此函数用于AcDbCompositeFilteredBlockIterator的init()方法中。
例如,如果过滤在裁剪的xref的图形的重生以建立索引遍历
器定义过程中过滤生效,则此函数于内部使用。
返回此过滤器的AcDbIndex的类描述符。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-10-19 15:48:46 | 显示全部楼层

[ARX函数]:ARX讲座4-AcDbRasterImage类

AcDbRasterImage类
AcDbRasterImage实体(或“图像实体”)与AcDbRasterImageDef对象(或“图像定义对象”)一起使用,

以处理AutoCAD中的光栅图像。这两个类之间的关系就象一个AutoCAD块定义对象和一个块插入实体之间的关系。
以下的OMT图表示了图像对象模型的结构。
AutoCAD图像对象模型
图像实体是一个可绘的、可选择的AutoCAD实体,以一个特定点和方向将一个光栅图像放置在模型或图纸空间中。
图像实体链接至一个图像定义对象,并将显示和绘出图像的需要的图像处理操作的请求送至这个对象。因为图像定义对象管理所有图像信息,所有图像实体相对较小。除了图像位置和方向外,它还包括一个裁剪区域、图像淡出、对比度和亮度参数以其他的典型的AcDbEntity属性如层和颜色。
两个或更多的图像实体可被链接至一个图像定义实体。因为每个图像实体都有自己的裁剪区域,
所以这是一个在图形中不同的位置显示一个光栅图像的不同区域的有效的方法。
AcDbRasterImage实体有时必须在两个坐标系统之间转换:AcDbEntities的3D模型坐标和
AcDbRasterImageDef的2D像素坐标。为了这个目的,图像实体包含一个在3D世界坐标中
指定的平面边界矩形,描述了它在空间中的原始图形的边界。有几个API函数可用于在像素和模型坐标之间进行转换。
图像定义对象与块定义一样在“幕后”工作,储存至源图像文件的链接并管理用于显示和
绘图的底层图像处理。图像定义对象储存在一个特殊的名为ISM_RASTER_IMAGE_DICT的AcDbDictionary中。
这些对象不是AutoCAD实体,因此它们不能被显示或直接由最终用户选择。它们只处理2D像素坐标,
因此所有图像处理请求必须表示为2D操作。
图像处理操作如缩放和旋转图形用于显示是由Autodesk的图像引擎执行。图像引擎有
自己众多的开发人员的API,在其上可建立复杂的图像处理的应用程序。(Autodesk图像
引擎的信息可通过Autodesk开发人员程序取得)。
链接至ism.lib
AcDbRasterVariables类在一个ObjectARX应用程序中调用ism.arx执行。应用程序必须
链接至ObjectARX API库ism.lib以使用针对此类的任何方法。
注意:此类上的AcDbObject可被访问而无需链接至ism.lib。只须简单地将对象的指针
(例如,acdbOpenObject返回的)转换为AcDbObject类。
作为复合实体的AcDbRasterImage
AcDbRasterImage实体不能被自己使用。它必须链接至一个AcDbRasterImageDef对象,
通过调用AcDbRasterImage::setImageDefId显示图像。而且,必须建构一个AcDbRasterImageDefReactor并链接至AcDbRasterImage实体和AcDbRasterImageDef对象。
(显示如何创建和链接AcDbRasterImage, AcDbRasterImageDef和AcDbRasterImageDefReactor
的范例代码在ObjectARX开发包的samples\ism文件夹下)。
库文件
ism.lib
继承自
AcDbImage
包含文件
imgent.h
参见
AcDbObject, AcDbEntity, AcDbImage, AcDbRasterImageDef, AcDbRasterImageDefReactor,
AcDbRasterVariables, Image Support Module Overview
成员
AcDbRasterImage和AcDbRasterImageDef链接函数
AcDbRasterImage::imageDefId 函数
virtual AcDbObjectId
imageDefId() const;
未公布
AcDbRasterImage::reactorId 函数
virtual AcDbObjectId
reactorId() const;
未公布
AcDbRasterImage::setImageDefId 函数
virtual Acad::ErrorStatus
setImageDefId(
AcDbObjectId imageId);
imageId 未公布
未公布
AcDbRasterImage::setReactorId 函数
virtual void
setReactorId(
AcDbObjectId reactorId);
reactorId 未公布
未公布
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-10-19 15:55:50 | 显示全部楼层

[ARX程序]:ARX讲座5-AcDbText类

AcDbText类
AcDbText类表示AutoCAD中的TEXT实体。
继承自
AcDbEntity
包含文件
dbents.h
参见
AcDbObject, AcDbAttribute, AcDbAttributeDefinition, AcDbShape, AcGePoint3d, AcGeVector3d
成员
AcDbText建构器和析构器
AcDbText::~AcDbText 函数
~AcDbText();
析构器。
AcDbText::AcDbText 函数
AcDbText(
const AcGePoint3d& position,
const char* text,
AcDbObjectId style = AcDbObjectId::kNull,
double height = 0,
double rotation = 0);
position 输入文本插入点
text 输入文本字符串
style 输入要使用的AcDbTextStyleTableRecord的对象ID
height 输入形的高度
rotation 输入旋转角
此建构器初始化文本实体。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2003-10-19 16:03:37 | 显示全部楼层
这好象是铁道出版社出版的一本书上的所附光盘(chm文件),它几乎翻译了ARX所有类!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-10-19 23:21:20 | 显示全部楼层
这样的chm文件 可以上传吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2003-10-20 08:30:38 | 显示全部楼层
文件大不好传
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-10-20 09:12:44 | 显示全部楼层

[ARX函数]:ARXj讲座5-AcDbLine类

AcDbLine类
AcDbLine类表示AutoCAD中的线实体。一个线对象是由它的开始点,终止点和法向矢量指定的一个3D对象。另外,线对象支持沿其法向矢量方向的厚度(即,高度或“拉伸”)。
继承自
AcDbCurve
包含文件
dbents.h
参见
AcDbObject, AcDbEntity, AcGePoint3d, AcGeVector3d
成员
AcDbLine建构器和析构器
AcDbLine::~AcDbLine 函数
~AcDbLine();
建构器。
AcDbLine::AcDbLine 函数
AcDbLine(
const AcGePoint3d& start,
const AcGePoint3d& end);
start
输入线的起点(WCS坐标中)
end
输入线的终点(WCS坐标中)
此建构器初始化线对象使用start作为起点,以end作为终点。两个点都必须在WCS坐标中。
AcDbLine();
默认建构器。初始化法向矢量为(0,0,1),起点和终点为(0,0,0),厚度为0.0。所有坐标必须在WCS中。
AcDbLine编辑函数
AcDbLine::setEndPoint 函数
Acad::ErrorStatus
setEndPoint(
const AcGePoint3d& endPt);
endPt
输入作为线的终点的一个WCS点
将endPt设为线的新终点。endPt必须在WCS坐标中。
终点值对应DXF群组码11。
如果成功返回Acad::eOk,如果传递的数据非法则返回Acad::eInvalidInput。
AcDbLine::setNormal 函数
Acad::ErrorStatus
setNormal(
const AcGeVector3d& normal);
normal
输入作为线的法向矢量的的一个WCS矢量
将normal设为线的法向矢量。normal必须在WCS坐标中。
法向矢量对应DXF群组码210。
如果成功返回Acad::eOk,如果传递的数据非法则返回Acad::eInvalidInput。
AcDbLine::setStartPoint 函数
Acad::ErrorStatus
setStartPoint(
const AcGePoint3d& startPt);
startPt
输入作为线的终点的一个WCS点
将startPt设为线的新起点。startPt必须在WCS坐标中。
起点值对应DXF群组码10。
如果成功返回Acad::eOk,如果传递的数据非法则返回Acad::eInvalidInput。
AcDbLine::setThickness 函数
Acad::ErrorStatus
setThickness(
double thickness);
thickness
输入线的新的厚度值
将thickness设为线的厚度值。厚度值是线沿其法向矢量方向(有时也称为拉伸方向)的长度。
厚度值对应DXF群组码39。
如果成功返回Acad::eOk,如果传递的数据非法则返回Acad::eInvalidInput。

AcDbLine其他函数
AcDbLine::getClassID 函数

virtual Acad::ErrorStatus

getClassID(

CLSID* pClsid) const;

AcDbLine::getOffsetCurvesGivenPlaneNormal 函数
Acad::ErrorStatus
getOffsetCurvesGivenPlaneNormal(
const AcGeVector3d& normal,
double offsetDist,
AcDbVoidPtrArray& offsetCurves) const;
AcDbLine::getTransformedCopy 函数
DBCURVE_METHODS Acad::ErrorStatus
getTransformedCopy(

const AcGeMatrix3d& xform,

AcDbEntity*& ent) const;

AcDbLine查询函数
AcDbLine::endPoint 函数
AcGePoint3d
endPoint() const;
此函数在WCS坐标中返回线的终点。
终点值对象DXF群组码11。
AcDbLine::normal 函数
AcGeVector3d
normal() const;
此函数在WCS坐标中返回线的单位法向矢量。
法向矢量值对应DXF群组码210。
AcDbLine::startPoint 函数
AcGePoint3d
startPoint() const;
此函数在WCS坐标中返回线的起点。
起点值对应DXF群组码10。
AcDbLine::thickness 函数
double
thickness() const;
此函数返回线的厚度值。厚度值是线沿其法向矢量方向(有时也称为拉伸方向)的长度。
厚度值对应DXF群组码39。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-10-20 09:18:36 | 显示全部楼层
联机帮助上的例子多位英文,很多初学的朋友看不懂,于是我便把自己看到的好的资料贴在这里,以供大家参考!希望大家能够重中有所收获!1希望大家今后能够资源共享!!1
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-10-20 09:26:58 | 显示全部楼层

[ARX函数]:ARX讲座6-AcDbSpline类

AcDbSpline类
此类执行对AutoCAD的SPLINE实体进行操作。
AcDbSpline类的对象使用一个内嵌的gelib对象储存实际的样条曲线信息。样条曲线自身可是一条通过“拟合点”集的简单的曲线拟合(指定的误差可能为0),或是一条NURBS样条曲线(即,用于定义样条曲线路径的一个控制点、节点和权值的集合)。在内部,一个曲线拟合的样条曲线仍有NURBS数据,然而反过来则不正确。
以下的书是样条曲线知识的基础:
Curves and Surfaces for CAGD by Gerald Farin
Mathematical Elements for Computer Graphics by David Rogers and Alan Adams
An Introduction To Splines For Use In Computer Graphics & Geometric Modeling by Richard H. Bartels, John C. Beatty, and Brian A Barsky
继承自
AcDbCurve
包含文件
dbspline.h
提示

AcDbSpline类提供函数查询和设置一条曲线拟合的样条曲线和一个函数集合用于查询和设置一条NURBS样条曲线。不建议在一条NURBS样条曲线上调用曲线拟合函数或在一条曲线拟合的样条曲线上调用NURBS函数。这将可能导致无效的数据或更坏的情况发生。AcDbSpline::hasFitData()方法可用于确定处理的样条曲线的类型。

使用一个连续序列的相同控制点创建一条NURBS样条曲线将导致一条不可用的样条曲线,因为连续性的问题。
AcDbSpline建构器和析构器
AcDbSpline::~AcDbSpline 函数
virtual
~AcDbSpline();
析构器。
AcDbSpline::AcDbSpline 函数
AcDbSpline(
const AcGePoint3dArray& points,
int order = 4,
double fitTolerance = 0.0);
AcDbSpline(
const AcGePoint3dArray& points,
const AcGeVector3d& startTangent,
const AcGeVector3d& endTangent,
int order = 4,
double fitTolerance = 0.0);
AcDbSpline(
int degree,
Adesk::Boolean rational,
Adesk::Boolean closed,
Adesk::Boolean periodic,
const AcGePoint3dArray& controlPoints,
const AcGeDoubleArray& knots,
const AcGeDoubleArray& weights,
double controlPtTol = 0.0,
double knotTol = 0.0);
AcDbSpline(
const AcGePoint3d& center,
const AcGeVector3d& unitNormal,
const AcGeVector3d& majorAxis,
double radiusRatio,
double startAngle = 0.0,
double endAngle = 6.28318530717958647692);
AcDbSpline();
默认建构器。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-10-20 09:36:17 | 显示全部楼层

[ARX函数]:ARX讲座7-AcDbEllipse类

AcDbEllipse类
此类表示AutoCAD中的椭圆实体。它包含了创建、修改了获取椭圆属性的方法。
继承自
AcDbCurve
包含文件
dbelipse.h
参见
AcDbEntity, AcGePoint3d, AcGeVector3d
成员
AcDbEllipse建构器和析构器
AcDbEllipse::~AcDbEllipse 函数
virtual
~AcDbEllipse();
析构器。
AcDbEllipse::AcDbEllipse 函数
AcDbEllipse(
const AcGePoint3d& center,
const AcGeVector3d& unitNormal,
const AcGeVector3d& majorAxis,
double radiusRatio,
double startAngle = 0.0,
double endAngle = 6.28318530717958647692);
center
输入椭圆的中点
unitNormal
输入指定法向矢量的矢量。这确定了椭圆的平面。
majorAxis
输入表示椭圆1/2主轴的矢量  
radiusRatio
输入长轴对短轴的比  
startAngle
输入椭圆的起始角(弧度)
endAngle
输入椭圆的终止角(弧度)
这个建构器使用传递的值创建一个椭圆。center、unitNormal和majorAxis用于计算起始点。majorAxis矢量表示椭圆的主轴的一半(即,从中点至椭圆的起始点),而且还是startAngle和endAngle的零度角。如果视线从法向矢量向下,则正角度为逆时针(即,右手定则)。startAngle为0且endAngle为2pi将生成一个封闭的椭圆。
radiusRatio必须在1E-6至1.0范围内。
unitNormal与自身的点积及majorAxis与自身的点积必须大于1E-12。
majorAxis必须垂直于1E-6以内法向矢量 must perpendicular to normal within.
startAngle与endAngle差必须大于1E-6。
如果任何对参数的要求不能满足,则椭圆的gelib对象不会创建且此建构器将与默认的建构器一样工作(即,传递的值将不被使用且椭圆的数据查询方法将返回无效值)。
AcDbEllipse::isNull()方法可用于确定此建构器是否成功地使用传递的值初始化椭圆。如果isNull()返回Adesk::kFalse,则初始化成功。
AcDbEllipse();
此类的默认建构器。初始化XY平面上的圆的半径为1,圆心为(0,0,0)。
AcDbEllipse编辑函数
AcDbEllipse::set 函数
Acad::ErrorStatus
set(
const AcGePoint3d& center,
const AcGeVector3d& unitNormal,
const AcGeVector3d& majorAxis,
double radiusRatio,
double startAngle = 0.0,
double endAngle = 6.28318530717958647692);
center
输入椭圆的中点(WCS坐标中)
unitNormal
输入法向矢量(WCS坐标中),其定义了椭圆所在的平面
majorAxis
输入椭圆的长轴(WCS坐标中)
radiusRatio
输入需要的长轴与短轴之比
startAngle
输入椭圆的起始角(弧度)
endAngle
输入椭圆的终止角(弧度)
此函数使用参数中的指定值设置椭圆的属性。
center、unitNormal和majorAxis用于计算起始点。majorAxis矢量表示椭圆的主轴的一半(即,从中点至椭圆的起始点),而且还是startAngle和endAngle的零度角。如果视线从法向矢量向下,则正角度为逆时针(即,右手定则)。startAngle为0且endAngle为2pi将生成一个封闭的椭圆。
radiusRatio必须在1E-6至1.0范围内。
unitNormal与自身的点积及majorAxis与自身的点积必须大于1E-12。
majorAxis必须垂直于1E-6以内法向矢量 must perpendicular to normal within.
startAngle与endAngle差必须大于1E-6。
如果成功返回Acad::eOk。
如果有任何参数不能满足,则此方法失败且返回Acad::eGeneralModelingFailure。
AcDbEllipse::setCenter 函数
Acad::ErrorStatus
setCenter(
const AcGePoint3d& center);
center
输入椭圆的新的中点
设置center(WCS坐标中)为椭圆的中点。
如果成功返回Acad::eOk。否则返回Acad::eGeneralModelingFailure。
AcDbEllipse::setEndAngle 函数
Acad::ErrorStatus
setEndAngle(
double endAngle);
endAngle
输入椭圆的新的终止角度(弧度)
设置endAngle为椭圆的终止角度。
如果成功返回Acad::eOk。
如果椭圆没有任何gelib对象(即,AcDbEllipse::isNull()返回Adesk::kTrue),则返回Acad::eDegenerateGeometry。
AcDbEllipse::setEndParam 函数
Acad::ErrorStatus
setEndParam(
double endParam);
endParam
输入椭圆新的终止参数
设置endParam为椭圆的新的终止参数。如果endParam小于当前的开始参数,则以2pi为步距增加直至大于当前的开始参数。
如果成功返回Acad::eOk。
如果椭圆没有任何gelib对象(即,AcDbEllipse::isNull()返回Adesk::kTrue),则返回Acad::eDegenerateGeometry。
AcDbEllipse::setRadiusRatio 函数
Acad::ErrorStatus
setRadiusRatio(
double ratio);
ratio
输入椭圆长径与短径比
设置ratio为椭圆的新的长短径比。Ratio必须在1e-6和1.0之间。
如果成功返回Acad::eOk。
如果椭圆没有任何gelib对象(即,AcDbEllipse::isNull()返回Adesk::kTrue),则返回Acad::eDegenerateGeometry。
AcDbEllipse::setStartAngle 函数
Acad::ErrorStatus
setStartAngle(
double startAngle);
startAngle
输入椭圆的新的开始角度(弧度)
设置startAngle为椭圆的新的开始角度。
如果成功返回Acad::eOk。
如果椭圆没有任何gelib对象(即,AcDbEllipse::isNull()返回Adesk::kTrue),则返回Acad::eDegenerateGeometry。
AcDbEllipse::setStartParam 函数
Acad::ErrorStatus
setStartParam(
double startParam);
startParam
输入椭圆的新的开始参数
设置startParam为椭圆的新的始参数。如果startParam大于当前终止参数,则以2pi为步距减小直至小于当前的终止参数。
如果成功返回Acad::eOk,否则返回Acad::eGeneralModelingFailure。
AcDbEllipse杂项函数
AcDbEllipse::getClassID 函数
virtual Acad::ErrorStatus
getClassID(
CLSID* pClsid) const;
pClsid
Description to com
AcDbEllipse::getGripPoints 函数
virtual DBCURVE_METHODS Acad::ErrorStatus
getGripPoints(

AcGePoint3dArray& gripPoints,

AcDbIntArray& osnapMasks,

AcDbIntArray& geomIds) const;

Description to come。
AcDbEllipse::getTransformedCopy 函数
virtual Acad::ErrorStatus

getTransformedCopy(

const AcGeMatrix3d& xform,

AcDbEntity*& ent) const;

Description to come。

AcDbEllipse::intersectWith 函数

virtual Acad::ErrorStatus

intersectWith(

const AcDbEntity* ent,

AcDb::Intersect intType,

const AcGePlane& projPlane,

AcGePoint3dArray& points,

int thisGsMarker = 0,

int otherGsMarker = 0) const;

virtual Acad::ErrorStatus

intersectWith(

const AcDbEntity* ent,

AcDb::Intersect intType,

AcGePoint3dArray& points,

int thisGsMarker = 0,

int otherGsMarker = 0) const;

Description to come。



AcDbEllipse::moveGripPointsAt 函数

virtual Acad::ErrorStatus

moveGripPointsAt(

const AcDbIntArray& indices,

const AcGeVector3d& offset);
Description to come。
AcDbEllipse查询函数

AcDbEllipse::angleAtParam 函数

double

angleAtParam(

double param) const;

param
输入要求值的参数


此函数返回椭圆上param位置上的角度的第一象限值。返回的角度将在-pi到pi范围内。

椭圆的majorAxis矢量为零角度。如果视线从椭圆的法向矢量向下,则正角度为逆时针方向(即,右手定则)。
AcDbEllipse::center 函数
AcGePoint3d
center() const;
返回椭圆的中点(WCS坐标中)
AcDbEllipse::endAngle 函数
double
endAngle() const;

返回椭圆的终止角(弧度)的第一象限值。返回角的范围在-pi到pi之间。

椭圆的majorAxis矢量为零角度。如果视线从椭圆的法向矢量向下,则正角度为逆时针方向(即,右手定则)。



AcDbEllipse::get 函数

Acad::ErrorStatus

get(

AcGePoint3d& center,

AcGeVector3d& unitNormal,

AcGeVector3d& majorAxis,

double& radiusRatio,

double& startAngle,

double& endAngle) const;

center
返回椭圆的中点(WCS坐标中)

unitNormal
返回包含椭圆的平面的单位法向矢量(WCS坐标中)

majorAxis
返回椭圆的长轴矢量(WCS坐标中)

radiusRatio
返回椭圆的长半径与短半径比

startAngle
返回椭圆的开始角(在-pi到pi之间)(弧度)

endAngle
返回椭圆的开始角(在-pi到pi之间)(弧度)


此函数在指定的参数中返回椭圆的参数。

Center、unitNormal和majorAxis在WCS坐标中。startAngle和endAngle为弧度,范围在-pi到pi之间。

majorAxis是从中点至椭圆开始点的矢量是startAngle和endAngle的零角度值。如果沿法向矢量向下,则正角度为逆时针方向(即,右手定则)。封闭的椭圆的startAngle为0且endAngle为2pi。

如果成功返回Acad::eOk。

如果椭圆没有任何gelib对象(即,AcDbEllipse::isNull()返回Adesk::kTrue),则返回Acad::eDegenerateGeometry。



AcDbEllipse::isNull 函数

Adesk::Boolean

isNull() const;

如果此椭圆自身没有gelib对象,则返回Adesk::kTrue。



AcDbEllipse::majorAxis 函数

AcGeVector3d

majorAxis() const;

返回椭圆的长轴矢量(WCS坐标中)。

长轴矢量是从椭圆的中点至它的开始点的矢量。主轴矢量的大小表示长轴的1/2长度。

AcDbEllipse::minorAxis 函数

AcGeVector3d

minorAxis() const;

返回椭圆的短轴矢量(WCS坐标中)。

短轴矢量与长轴矢量垂直。它的大小表示短轴的1/2长度。



AcDbEllipse::normal 函数

AcGeVector3d

normal() const;

返回椭圆的单位法向矢量(WCS坐标中)。

法向矢量指定包含椭圆的平面。

AcDbEllipse::paramAtAngle 函数
double
paramAtAngle(
double angle) const;
angle
输入所需要参数上的角度(弧度)
返回angle上的一阶参数值。参数值在0至2pi范围内。
椭圆的majorAxis矢量为angle的零角度。如果沿法向矢量向下,则正角度为逆时针方向(即,右手定则)。
AcDbEllipse::radiusRatio 函数
double
radiusRatio() const;
返回椭圆的长半径与短半径之比。返回的值在1e-6至1.0范围内。
AcDbEllipse::startAngle 函数
double
startAngle() const;
返回椭圆的开始角(弧度)的第一象限值。返回的角度在-pi至pi范围内。
椭圆的majorAxis矢量为startAngle和endAngle的零角度。如果沿法向矢量向下,则正角度为逆时针方向(即,右手定则)。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-10-20 19:53:37 | 显示全部楼层

[ARX函数]:ARX讲座8-AcDbLinetypeTable类

AcDbLinetypeTable类
此类是AcDbLinetypeTableRecords的符号表,它表示一个图形数据库中的线型。
继承自
AcDbSymbolTable
包含文件
dbsymtb.h
成员
AcDbLinetypeTable建构器和析构器
AcDbLinetypeTable::~AcDbLinetypeTable 函数
virtual
~AcDbLinetypeTable();
析构器。AcDbLinetypeTable::AcDbLinetypeTable 函数
AcDbLinetypeTable();
Default constructor.
ObjectARX应用程序不需要使用这个遍历器。AcDbDatabase类创建它自己的拷贝且没有其他地方需要使用这个建构器。
AcDbLinetypeTable编辑函数
AcDbLinetypeTable::add 函数
Acad::ErrorStatus
add(
AcDbObjectId& recordId,
AcDbLinetypeTableRecord* pRecord);
recordId
返回pRecord的objectId
pRecord
输入要增加至表的记录的指针
此函数将pRecord指向的记录增加至包含表的数据库和表自身。如果增加成功,则在增加至数据库后recordId将设为pRecord的AcDbObjectId。

可能的返回ErrorStatus值为:Acad::eOk, Acad::eOutOfMemory, Acad::eDuplicateRecordName, Acad::eNoDatabase (如果LinetypeTable不在一个数据库中)。
Acad::ErrorStatus
add(

AcDbLinetypeTableRecord* pRecord);

pRecord
输入要增加至表的记录的指针
此函数将pRecord指向的记录增加至包含表的数据库中和表自身中。

可能的返回ErrorStatus值为:Acad::eOk, Acad::eOutOfMemory, Acad::eDuplicateRecordName, Acad::eNoDatabase (if the LinetypeTable is not in a database).
AcDbLinetypeTable其他函数

AcDbLinetypeTable::getClassID 函数

virtual Acad::ErrorStatus

getClassID(

CLSID* pClsid) const;
AcDbLinetypeTable查询函数

AcDbLinetypeTable::getAt 函数

Acad::ErrorStatus

getAt(

const char* entryName,

AcDbObjectId& recordId,

bool getErasedRec = false) const;

entryName
输入要搜索的记录的名称
recordId
返回名为entryName的记录的objectId

getErasedRec
输入布尔值,表示是否搜索已删除的记录


此函数在LinetypeTable中搜索名称为entryName的记录,如果找到,则在recordId中返回记录的AcDbObjectId。如果getErasedRec == true,则可搜索已删除的记录。

可能的返回ErrorStatus值为:Acad::eOk, Acad::eKeyNotFound, Acad::ePermanentlyErased.
Acad::ErrorStatus

getAt(

const char* entryName,

AcDbLinetypeTableRecord*& pRecord,

AcDb::OpenMode openMode,

bool openErasedRec = false) const;

entryName
输入要搜索的记录的名称

pRecord
返回打开的记录的指针

openMode
输入打开记录的模式,可能的值为:
AcDb::kForRead
AcDb::kForWrite
AcDb::kForNotify

openErasedRec
输入布尔值,表示是否搜索已删除的记录此函数在LinetypeTable中搜索名称为entryName的记录。如果找到,则以openMode指定的模式打开记录,如果打开操作成功,则返回指向打开的记录的pRecord。 pointing to the opened record. If openErasedRec == true, then erased records will be opened.

可能的返回ErrorStatus值为:Acad::eOk, Acad::eKeyNotFound, Acad::ePermanentlyErased, Acad::eAtMaxReaders, Acad::eWasOpenForNotify, Acad::eWasNotifying, Acad::eWasOpenForUndo, Acad::eWasOpenForWrite, Acad::eWasOpenForRead
AcDbLinetypeTable::has 函数

bool
has(

AcDbObjectId id) const;

id
输入要搜索的记录的对象ID
如果表中包含AcDbObjectId 为id的记录则此函数返回true,否则返回false。

bool

has(

const char* name) const;

name
输入要搜索的记录的名称
如果表中包含名称为name的记录则此函数返回true,否则返回false。
AcDbLinetypeTable::newIterator 函数
Acad::ErrorStatus
newIterator(
AcDbLinetypeTableIterator*& pIterator,
bool atBeginning = true,
bool skipDeleted = true) const;
pIterator
返回新创建的遍历器的指针
atBeginning
输入布尔值,表示从表的开始处或结束处开始遍历
skipDeleted
输入布尔值,表示是否忽略已删除的记录
此函数创建一个用于遍历LinetypeTable内容的遍历器对象。pIterator设为指向新创建的遍历吕对象。如果atBeginning == true,则遍历器从LinetypeTable的开始处开始扫描,否则从LinetypeTable的结束处开始。如果skipDeleted == true,则遍历器将初始定位于第一个或最后一个非删除的记录,否则它将定位于第一个或最后一个记录,而无论这个记录是否被删除。
此函数的调用者负责在不需要使用时删除遍历器对象。可能的返回ErrorStatus值为:Acad::eOk, Acad::eOutOfMemory
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-10-20 20:03:09 | 显示全部楼层

[ARX函数]:ARX讲座9-AcDbGroup类

AcDbGroup类
AcDbGroup类表示由一个名称标识的一个实体集。
继承自
AcDbObject
包含文件
dbgroup.h
范例

AcDbGroup *pGroup = new AcDbGroup;

AcDbObjectId  groupObjectId;

AcDbDictionary  *pGroupDict = NULL;
acdbCurDwg()->getGroupDictionary(pGroupDict, AcDb::kForWrite);
pGroupDict->setAt("GroupName", pGroup, groupObjectId);

pGroupDict->close();
pGroup->append(objectId1);     // objectId1 and objectId2

                                                 // are objId's of the

pGroup->append(objectId2);     // entities which will be in the group.
pGroup->close();
参见
AcDbGroupIterator, AcDbEntity, AcDbObjectId
成员
AcDbGroup建构器和析构器

AcDbGroup::~AcDbGroup 函数

virtual

~AcDbGroup();

析构器。.

AcDbGroup::AcDbGroup 函数

AcDbGroup(

char* grpDesc,

bool selectable = true);

grpDesc
selectable
--------------------------------------------------------------------------------

AcDbGroup();
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-10-20 20:31:52 | 显示全部楼层

[ARX函数]:ARX讲座10—AcApDocument 类

AcApDocument 类
每个打开的图形都有关联的AcApDocument对象。AcApDocument对象含有诸如文件名、MFC CDocument对象、当前数据库和当前图形的保存格式等信息。
另外还有文件锁定状态的查询函数。提供了以下两个函数
AcApDocument::lockMode()函数,其返回最大限度限定的锁定模式,这个锁定模式当前从执行环境而不是从调用者作用于文件,并将决定锁定模式,决定后就可以添加到文件中;
AcApDocument::myLockMode()函数,返回文件当前执行环境下的当前锁定模式,且可以比lockmode()返回值更强或更弱。
继承自
AcRxObject
包含文件
Acdocman.h
参见
AcAp, AcDbDatabase
成员
AcApDocument Query 函数
AcApDocument::cDoc函数
virtual CDocument *
cDoc() const = 0;
返回与MFC CDocument对象关联并指向这个AcApDocument的指针。
AcApDocument::contextPtr函数
virtual void *
contextPtr() const = 0;
这个方法将返回AcApDocument对象的环境指针。
AcApDocument::database函数
virtual AcDbDatabase *
database() const = 0;
返回这个AcApDocument使用的数据库对象(AcDbDatabase)。
AcApDocument::docTitle函数
virtual const char *
docTitle() const = 0;
返回文件窗口的标题。
AcApDocument::filename函数
virtual const char *
fileName() const = 0;
返回这个AcApDocument使用的数据库的完整路径和名称。
AcApDocument::formatForSave函数
virtual SaveFormat
formatForSave() const = 0;
这个方法返回用SAVEAS(另存为)、SAVE(保存)和QSAVE(快速保存)命令保存的当前的保存格式。这个返回值可以是工作任务范围默认的设置,也可以是用户为这个文件选择的不同的设置。如果这个文件是默认值以外设置,则不能在工作任务之间作用。
可能的AcApDocument枚举SaveFormat(保存格式)如下:
名称

用途 (文件扩展名)
kR12_dxf
1
AutoCAD R12/LT2 DXF (*.dxf)
kR13_dwg
4
AutoCAD R13/LT95 Drawing (*.dwg)
kR13_dxf
5
AutoCAD R13/LT95 DXF (*.dxf)
kR14_dwg
8
AutoCAD R14/LT97 Drawing (*.dwg)
kR14_dxf
9
AutoCAD R14/LT97 DXF (*.dxf)
kR15_dwg
12
AutoCAD R15 Drawing (*.dwg)
kR15_dxf
13
AutoCAD R15 DXF (*.dxf)
kR15_Template
14
AutoCAD 2000 Drawing Template File (*.dwt)
kNative
kR15_dwg
当前DWG版本是AutoCAD 2000
这个方法直接返回由用户输入的交互式命令设置文件的格式。如果在每次保存数据库时,希望应用程序使用当前的保存格式保存,则首先需要调AcApDocument::formatForSave(),再用返回的SaveFormat值决定调用哪个函数。例如:formatForSave()返回kR14_dxf,则要调用acdbDxfOutAsR14()去读出数据库当作14 DXF文件。
小结:
●       您和您的用户都可以设置一个永久的工作区间范围的保存默认值,这个默认值将用于所有保存命令,除了AUTOSAVE(自动保存)。
●       只有用户可以临时(在工作区间中并不持久)为特定的文件选择这项设置。
●       formatForSave()方法返回用户需要的一个文件保存的格式,它可以是永久的工作任务范围的默认值或临时选择的值。
AcApDocument::GetCountOfLispList函数
virtual int
GetCountOfLispList() const = 0;

返回加载LISP应用程序的数目。
AcApDocument::GetItemOfLispList函数
virtual AcLispAppInfo *
GetItemOfLispList(
int nIndex) const = 0;
nIndex
输入的加载的Lisp应用程序列表的索引
进入加载的Lisp应用程序列表并返回和指定索引相应的信息。
AcApDocument::inputPointManager函数
virtual AcEdInputPointManager *
inputPointManager() = 0;
这个函数将返回这个AcApDocument对象的指向管理器的对象。
AcApDocument::isQuiescent函数
virtual bool
isQuiescent() const = 0;
这个函数判断是否含有激活的命令、Lisp脚本或ARX命令。
如果没有激活的命令、Lisp脚本或ARX命令返回true,否则返回false。
AcApDocument::isReadOnly函数
virtual bool
isReadOnly() const = 0;
如果文件为只读返回true,否则返回false。
AcApDocument::lockMode函数
virtual AcAp::DocLockMode
lockMode(
bool bIncludeMyLocks = false) const = 0;
bIncludeMyLocks
输入的布尔值,表示是否考虑这个应用程序的锁定模式或只看其它环境的锁定模式。
这个函数提供了一种方法,用于应用程序判断是否允许在文件中设置一个锁定。锁定的规则之一是执行环境可以代替它自身拥有的任一锁定。如果这个应用程序的环境含有一个专用的写(Exclusive Write)锁定,则它可以对文件应用另一个锁定模式。
如果bIncludeMyLocks = false,则返回由其它执行环境设置的最高级锁定模式;如果bIncludeMyLocks = true,则这个函数将返回由包含这个应用程序的任何执行环境设置的最高级锁定模式。
AcApDocument::myLockMode函数
virtual AcAp::DocLockMode
myLockMode() const = 0;
这个函数返回文件当前执行环境下的当前锁定状态,且可以比AcApDocument::lockMode()的返回值强或弱。
AcApDocument::popDbmod函数
Acad::ErrorStatus
popDbmod();
这个方法取出DBMOD系统变量堆栈最高层的值并把这个值复制到文件的DBMOD系统变量中。如果成功,popDbmod()返回eOK;如果堆栈为空,popDbmod()返回eIllegalReplacement;如果文件没有完成操作,popDbmod()返回eInvalidContext。eInvalidContext只能在早期编辑工作任务初始化期间,在DBMOD值被初始化之前出现。
注意:这个方法必须在与一个相匹配的pushDbmod()函数调用后调用。
AcApDocument::pushDbmod函数
void
pushDbmod();
这个方法把当前的DBMOD系统变量值复制到一个堆栈里。这样允许储存DBMOD只读系统变量的当前值,用于随后通过popDbmod()方法来恢复。
pushDbmod()及其副本popDbmod()允许应用程序修改数据库而不将其标记为被修改,正如在工作任务初始化期间应用程序所执行的。这包含数据库头变量的修改或在正在编辑的数据库中添加和修改对象,所有这些都将导致对文件系统变量DBMOD设置标记。当DBMOD值不为零时,在用户想退出图形时将提示“要储存你的图形文件?(Save your drawing?)”。若不想在您的应用程序中出现这个提示,可在使用不会导致这个查询的方法开始修改数据库之前使用pushDbmod()将当前的DBMOD值压入堆栈,而在修改完成后使用popDbmod()将DBMOD值恢复。
注意:调用pushDbmod()必须与调用popDbmod()相匹配。
注意:为了不覆盖其它应用程序设置的DBMOD标记,则需要避免在加载一些应用程序代码时将压入一个DBMOD值,这些代码包括可能导致加载其他应用程序,加载DWG或DXF文件、使用acedCmd()调用应用程序定义的命令和应用程序的直接加载。
AcApDocument::transactionManager函数
virtual AcTransactionManager *
transactionManager() const = 0;
这个函数为这个AcApDocument返回AcTransactionManager对象。全局函数actrTransactionManager()将返回一个指向当前文件的transaction manager(事务管理器)的指针。这个函数数很重要,因为应用程序不能混淆来自在同一个transaction(事务)中的不同文件的对象。如果应用程序一次打开来自多个文件的对象,并且用是transactions(事务),那么它们必须开始使用在每个文件中的transaction manager(事务管理器)为每个文件分离事务。
枚举
AcApDocument::SaveFormat
枚举
SaveFormat(保存格式)
名称

类型
kUnknown
-1
无效格式
kR12_dxf
1
AutoCAD R12/LT2 DXF (*.dxf)

kR13_dwg
4
AutoCAD R13/LT95 Drawing (*.dwg)
kR13_dxf
5
AutoCAD R13/LT95 DXF (*.dxf)

kR14_dwg
8
AutoCAD R14/LT97 Drawing (*.dwg)

kR14_dxf
9
AutoCAD R14/LT97 DXF (*.dxf)
kR15_dwg
12
AutoCAD R15 Drawing (*.dwg)

kR15_dxf
13
AutoCAD R15 DXF (*.dxf)
kR15_Template
14
R15 Drawing Template File (*.dwt)
kNative
kR15_dwg
当前DWG版本
kR15_Standard
15 R15(+) Drawing Standard File (*.dws)

kR15_xml
16
R15(+) = DesignXML v1.0 File (*.xml)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-21 00:00 , Processed in 0.228180 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表