找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: xux4618

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

[复制链接]
 楼主| 发表于 2003-10-22 20:00:49 | 显示全部楼层

[ARX程序]:ARX讲座11—AcCmColor类

AcCmColor类
此类用于在AutoCAD中表示颜色,如RGB、AutoCAD颜色索引、或AcCmComplexColor中定义的一个更抽象的颜色周围的包装器。
大多数颜色客户应使用已有的类。其他的客户(如AcDbEntity和AcGiSubEntityTraits)将直接使用AcCmEntityColor储存内存。
在Release13中,只有一个颜色的索引值被AutoCAD和ARX库创建和使用。
注意:Autodesk只测试了此类的颜色索引执行。AcCmComplexColor包装器码已被完全执行,但从未被测试。使用AcCmComplexColor对象有一定风险。
继承自
包含文件
dbmain.h
参见
AcDbEntity
成员
AcCmColor AcRxObject协议函数
AcCmColor::audit函数
Acad::ErrorStatus
audit(
AcDbAuditInfo* pAuditInfo);
pAuditInfo
AcCmColor::dwgIn函数
Acad::ErrorStatus
dwgIn(
AcDbDwgFiler* pInputFiler);
pInputFiler
源DWG文件管理器
以DWG格式读取颜色对象。
AcCmColor::dwgOut函数
Acad::ErrorStatus
dwgOut(
AcDbDwgFiler * pOutputFiler) const;
pOutputFiler
目标DWG文件管理器

以DWG格式写颜色对象。
AcCmColor::dxfIn函数

Acad::ErrorStatus

dxfIn(

AcDbDxfFiler* pFiler);

pFiler
源DXF过滤器


以DXF格式读取一个颜色对象。

AcCmColor::dxfOut函数

Acad::ErrorStatus

dxfOut(

AcDbDxfFiler* pFiler) const;

pFiler
目标DXF文件管理器


以DWG格式写颜色对象
AcCmColor建构器和析构器

AcCmColor::~AcCmColor函数

~AcCmColor();

析构器。

AcCmColor::AcCmColor函数

AcCmColor(

const AcCmColor& objToCopy);

objToCopy
输入要复制的AcCmColor


复制建构器。复制objToCopy中的值至要建构的AcCmColor对象。


--------------------------------------------------------------------------------

AcCmColor();

默认建构器。初始化颜色索引至0。


AcCmColor编辑函数

AcCmColor::setBlue函数

Acad::ErrorStatus

setBlue(

Adesk::UInt8 blue);

Blue
输入0至255的颜色值


此函数设置蓝颜色数值。要使用这个函数,颜色方法必须为kByColor。提供的颜色值必须从0至255。

如果成功,则返回Acad::eOk。如果颜色方法不是kByColor,则返回Acad::eInvalidKey。

AcCmColor::setColor函数

Acad::ErrorStatus

setColor(

Adesk::UInt32 color);

color
输入颜色方法和颜色数据(RGB, ACI, 层索引,笔索引)。低位字节是blue;第二个字节为green;第三个字节为red;高位字节为colorMethod。


此方法设置要输入的颜色方法和颜色值。

如果成功则返回Acad::eOk。如果输入是无效的则返回Acad::eInvalidInput。

AcCmColor::setColorIndex函数

Acad::ErrorStatus

setColorIndex(

Adesk::UInt16 colorIndex);

colorIndex
输入要使用的AutoCAD颜色索引值(0-256)


此函数设置颜色方法为kByACI并设置颜色值输入colorIndex。colorIndex 必须在0至256内。

0和256为特殊值。

0表示实体使用正在显示的BlockReference的颜色。如果实体不通过BlockReference显示(例如,它由模型空间BlockTableRecord直接拥有)且它的颜色为0,则它将用颜色值7显示。

256表示实体使用它参考的LayerTableRecord中定义的颜色。

如果成功返回Acad::eOk,如果输入是无效的返回Acad::eInvalidInput。

AcCmColor::setColorMethod函数

Acad::ErrorStatus

setColorMethod(

AcCmEntityColor::ColorMethod eColorMethod);

eColorMethod
输入颜色方法


此函数设置颜色方法,可以为kByLayer, kByBlock, kByColor, kByACI, kByPen, kForeground, kLayerOff, kLayerFrozen, 或kNone。

颜色方法kByPen, kLayerOff, kLayerFrozen, 和kNone仅供内部使用。

注意:程序员应尽量避免使用这个方法,否则要承担它们自身的风险。

如果成功返回Acad::eOk,如果输入是无效的返回Acad::eInvalidInput。

AcCmColor::setComplexColor函数

void

setComplexColor(

AcCmComplexColor* pComplex);

pComplex
输入指向一个已有的AcCmComplexColor对象的指针


此函数设置AcCmcolor对象为联合的(complex),这通过使它参考由pComplex指向的AcCmComplexColor实现。

如果AcCmColor对象当前是联合的,则在它改变至参考pComplex之前,当前参考的AcCmComplexColor对象将自身的参考计数器减少以表示这个AcCmColor对象将不再参考它。

执行调用的应用程序增加pComplex上的参考计数器,表示AcCmColor对象被设置为参考它。

注意:当前的AutoCAD和ARX的API库不使用联合的颜色。

AcCmColor::setGreen函数

Acad::ErrorStatus

setGreen(

Adesk::UInt8 green);

green
输入颜色值为0至255


这个函数设置颜色值为绿。要使用这个函数,颜色方法必须为kByColor。提供的颜色值必须在0至255之间。

如果成功返回Acad::eOk。如果颜色方法不是kByColor返回Acad::eInvalidKey。

AcCmColor::setPenIndex函数

Acad::ErrorStatus

setPenIndex(

Adesk::UInt16 penIndex);

penIndex
输入笔索引


这个函数设置颜色方法至kByPen,颜色值用于输入PenIndex。

注意:仅供内部使用。建议程序员避免使用这个方法,如果使用这个方法要承担一定的风险。

AcCmColor::setRed函数

Acad::ErrorStatus

setRed(

Adesk::UInt8 red);

Red
输入颜色值为0至255


这个函数设置颜色值为红。要使用这个函数,颜色方法必须为kByColor。提供的颜色值必须在0至255之间。

如果成功返回Acad::eOk。如果颜色方法不是kByColor返回Acad::eInvalidKey。

cCmColor::setRGB函数

Acad::ErrorStatus

setRGB(

Adesk::UInt8 red,

Adesk::UInt8 green,

Adesk::UInt8 blue);

red
输入颜色值为0至255

green
输入颜色值为0至255

blue
输入颜色值为0至255


这个函数设置颜色方法为kByColor并设置颜色值为提供的RGB值且必须在0至255之间。

如果成功返回Acad::eOk。如果颜色方法不是kByColor返回Acad::eInvalidKey。


AcCmColor操作符

AcCmColor::operator !=函数

bool

operator !=(

const AcCmColor& color) const;

Color
输入AcCmColor对象


如果颜色对象不相等则返回true。

AcCmColor::operator =函数

AcCmColor &

operator =(

const AcCmColor& inputColor);

inputColor
输入要复制其数据的AcCmColor


赋值操作符。从inputColor复制所有数据至AcCmColor对象。

如果当前AcCmColor对象是联合(complex),则它参考的AcCmComplexColor对象减少它的参考计数器。

如果inputColor是联合(complex),则被参考的AcCmComplexColor对象的参考计数器增加,表示这个AcCmColor对象正在参考它。

返回这个AcCmColor对象("*this")的一个参考。

AcCmColor::operator ==函数

bool

operator ==(

const AcCmColor& color) const;

color
输入AcCmColor对象


如果颜色对象相同则返回true。


AcCmColor查询函数

AcCmColor::blue函数

Adesk::UInt8

blue() const;

这个函数返回蓝色组分的颜色值,这个值在0至255之间。要使用这个函数,颜色方法必须为kByColor。

AcCmColor::color函数

Adesk::UInt32

color() const;

这个函数返回颜色值和颜色方法。低位字节是blue;第二个字节为green;第三个字节为red;高位字节为colorMethod。



AcCmColor::colorIndex函数

Adesk::UInt16

colorIndex() const;

返回AcCmColor对象中AutoCAD颜色值,或者如果有一个被参考的AcCmComplexColor对象,则返回它的颜色索引。

索引值在所0至256之间。0和256是特殊值。

0表示实体使用正在显示它的BlockReference的颜色。如果实体不通过BlockReference显示(例如,它直接由模型空间BlockTableRecord拥有)且它的颜色为0,则它将被显示即使颜色为7。

256表示实体使用它参考的LayerTableRecord中指定的颜色。

注意:当前的AutoCAD和ARX API库不使用联合的(complex)颜色。

AcCmColor::colorMethod函数

AcCmEntityColor::ColorMethod

colorMethod() const;

此函数返回颜色方法,可能为kByLayer, kByBlock, kByColor, kByACI, kByPen, kForeground, kLayerOff, kLayerFrozen, 和kNone。

颜色方法kByPen, kLayerOff, kLayerFrozen, 和kNone仅供内部使用。

注意:建议编程人员避免使用这个方法,否则要承担风险。

AcCmColor::complexColor函数

AcCmComplexColor *

complexColor() const;

如果AcCmColor对象是联合(complex),则返回一个指向被参考的AcCmComplexColor对象;否则返回NULL。

注意:当前的AutoCAD和ARX API库不使用联合的(complex)颜色。

AcCmColor::getDescription函数

Acad::ErrorStatus

getDescription(

char*& desc) const;

desc
输出描述字符串的拷贝


这个函数设置desc指向AcCmColor对象的描述字符串的一份拷贝,或者,如果AcCmColor对象是联合的(complex),则返回被参考的AcCmComplexColor对象的描述字符串的一份拷贝。

执行调用的应用程序负责释放返回的字符使用的内存。可以使用C++的delete[]操作符或free()函数来实现这个功能。

AcCmColor和AcCmComplexColor当前的描述字符串总是"AutoCAD Color Index"。

如果成功Acad::eOk。

AcCmColor::getExplanation函数

Acad::ErrorStatus

getExplanation(

char*& expl) const;

expl
输入解释字符串的拷贝


这个函数设置expl指向AcCmColor对象的解释字符串的拷贝,或者,如果AcCmColor对象是联合(complex),则返回被参考的AcCmComplexColor对象的解释字符串的一份拷贝。

执行调用的应用程序负责释放返回的字符使用的内存。可以使用C++的delete[]操作符或free()函数来实现这个功能。

AcCmColor和AcCmComplexColor当前的描述字符串总是"AutoCAD Color Index"。

如果成功Acad::eOk。

AcCmColor::green函数

Adesk::UInt8

green() const;

这个函数返回绿组分的颜色值,范围在0至255之间。要使用这个函数,颜色方法必须为kByColor。

AcCmColor::isByACI函数

bool

isByACI() const;

如果颜色方法是kByACI,则这个函数返回Adesk::kTrue;否则返回Adesk::kFalse。

AcCmColor::isByBlock函数

bool

isByBlock() const;

如果颜色方法是kByBlock,或者颜色方法是kByACI且ACI为kACIbyBlock,则此函数返回Adesk::kTrue。否则,返回Adesk::kFalse。

AcCmColor::isByColor函数

bool

isByColor() const;

如果颜色方法是kByColor,则此函数返回Adesk::kTrue;否则返回Adesk::kFalse。

AcCmColor::isByLayer函数

bool

isByLayer() const;

如果颜色方法是kByLayer,或者颜色方法是kByACI且ACI为kACIbyLayer,则此函数返回Adesk::kTrue。否则,返回Adesk::kFalse。

AcCmColor::isByPen函数

bool

isByPen() const;

如果颜色方法为kByPen,则此这个函数返回Adesk::kTrue。

颜色方法kByPen仅供内部使用。

注意:建议编程人员避免使用这个方法,否则要承担风险。

AcCmColor::isForeground函数

bool

isForeground() const;

如果颜色方法是kForeground,或者颜色方法是kByACI且ACI为kACIForeground,则此函数返回Adesk::kTrue。否则,返回Adesk::kFalse。

AcCmColor::penIndex函数

Adesk::UInt16

penIndex() const;

This函数returns the pen index.

注意:仅供内部使用。建议编程人员避免使用这个方法,否则要承担风险。

AcCmColor::red函数

Adesk::UInt8

red() const;

这个函数返回绿组分的颜色值,范围在0至255之间。要使用这个函数,颜色方法必须为kByColor。


成员数据

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

使用道具 举报

 楼主| 发表于 2003-10-22 20:08:34 | 显示全部楼层

[ARX程序]:ARX讲座12—AcDb2dPolyline类

AcDb2dPolyline类
AcDb2dPolyline类表示AutoCAD中的2D多段线实体。
注意:控制应用程序(controlling application)应显示地删除非数据库驻留的复合实体的子实体。否则将导致小部分的内存泄漏。
注意:不要派生此类。试图派生此类将使应用程序终止AutoCAD。
继承自
AcDbCurve
包含文件
dbents.h
参见
"AcDbObject, AcDbEntity, AcDb2dVertex"
成员
AcDb2dPolyline建构器和析构器
AcDb2dPolyline::~AcDb2dPolyline 函数
~AcDb2dPolyline();
析构器。
AcDb2dPolyline::AcDb2dPolyline 函数
AcDb2dPolyline();
"默认建构器。创建一个开放的多段线并关闭其线型生成,初始化起点和终点线宽为0.0,凸度为0.0,高度为0.0,类型为AcDb::k2dSimplePoly,法向矢量为 (0,0,1),且厚度为0.0。"
--------------------------------------------------------------------------------
AcDb2dPolyline(
"AcDb::Poly2dType type,"
"AcGePoint3dArray& vertices,"
"double elevation = 0,"
"Adesk::Boolean closed = Adesk::kFalse,"
"double defStartWidth = 0,"
"double defEndWidth = 0,"
AcGeDoubleArray* bulges = NULL);
type
输入多段线类型
vertices
输入多段线顶点的数组
elevation
输入高度,默认为0
closed
输入布尔值,表示多段线是否闭合
defStartWidth
输入默认的起点宽度值
defEndWidth
输入默认的终点宽度值
bulges
输入表示所有顶点的凸度的一个双精度数组
bulges中的记录数与vertices中的记录数相等,即使bulges中存在为0的记录。
defStartWidth和defEndWidth值不能使用在从vertices数组中产生的任何顶点上。如果任何这些顶点需要起点和终点宽度,则必须显式地使用它们的成员函数进行设置。
可能值如下表:

说明
k2dSimplePoly
没有进行曲线/样条曲线拟合的标准多段线
k2dFitCurvePoly
进行曲线拟合的多段线。这对应DXF群组码70的第二位被设置。
k2dQuadSplinePoly
具有二次B样条路径的进行样条曲线拟合的多段线。这对应DXF群组码70的第三位被设置且DXF群组码75设为5。
k2dCubicSplinePoly
具有三次B样条路径的进行样条曲线拟合的多段线。这对应DXF群组码70的第三位被设置且DXF群组码75设为6。
AcDb2dPolyline编辑函数
AcDb2dPolyline::appendVertex 函数
Acad::ErrorStatus
appendVertex(
"AcDbObjectId& objId,"
AcDb2dVertex* pNewVert);
objId
输出增加的顶点的对象ID
pNewVert
输入指向要增加至多段线的顶点的指针
此函数将pNewVert指向的AcDb2dVertex对象增加至多段线的顶点列表中,将多段线设为顶点的拥有者,并将顶点增加至包含多段线的AcDbDatabase中(对于此函数,多段线必须为数据库驻留)。
增加的顶点必须在appendVertex()返回后由调用的应用程序显示地关闭。
如果成功返回Acad::eOk。如果多段线不是数据库驻留,则返回Acad::eNoDatabase。
--------------------------------------------------------------------------------
Acad::ErrorStatus
appendVertex(
AcDb2dVertex* pNewVert);
pNewVert
输入指向增加至多段线的顶点
此函数将pNewVert指向的AcDb2dVertex对象增加至多段线的顶点列表中,并将多段线设为顶点拥有者。另外,如果多段线驻留在AcDbDatabase中,则顶点将被增加至相同的数据库中。如果多段线不是数据库驻留,则在此多段线被增加至一个数据库中时,顶点也将被增加。
如果多段线是数据库驻留,则增加的顶点必须在appendVertex()返回后由调用的应用程序显示地关闭。如果多段线不是数据库驻留,则不需要关闭顶点,因为它还没有被增加至数据库中(对这样的顶点调用closd()将返回Acad::eNoDatabase)。
如果成功返回Acad::eOk。
AcDb2dPolyline::convertToPolyType 函数
Acad::ErrorStatus
convertToPolyType(
AcDb::Poly2dType newVal);
newVal
输入多段线要转换的类型
使用splineFit()和/或curveFit()方法转换多段线至newType指定的类型。
可能值如下表:

说明
k2dSimplePoly
没有进行曲线/样条曲线拟合的标准多段线
k2dFitCurvePoly
进行曲线拟合的多段线。这对应DXF群组码70的第二位被设置。
k2dQuadSplinePoly
具有二次B样条路径的进行样条曲线拟合的多段线。这对应DXF群组码70的第三位被设置且DXF群组码75设为5。
k2dCubicSplinePoly
具有三次B样条路径的进行样条曲线拟合的多段线。这对应DXF群组码70的第三位被设置且DXF群组码75设为6。
如果成功返回Acad::eOk,如果传递的数据非法则返回Acad::eInvalidInput。
AcDb2dPolyline::curveFit 函数
Acad::ErrorStatus
curveFit();
"此函数创建一个光滑的曲线,包含连接每个顶点对的弧线对。此曲线穿过多段线的所有顶点并使用由每个顶点确定的切线方向。这个操作与PEDIT命令的""Fit""选项执行相同的操作。"
返回Acad::eOk。
AcDb2dPolyline::insertVertexAt 函数
Acad::ErrorStatus
insertVertexAt(
"AcDbObjectId& newVertId,"
"const AcDbObjectId& indexVertId,"
AcDb2dVertex* pNewVertex);
newVertId
输出pNewVertex的对象ID
indexVertId
输入一个多段线中的顶点ID,新顶点将在其后插入
pNewVertex
输出指向被插入顶点的指针
此函数在对象为indexVertId的AcDb2dVertex对象后将pNewVertex指向的AcDb2dVertex对象插入至多段线的顶点列表中,将多段线设为顶点的拥有者,并将顶点增加至包含多段的数据库中(对于此函数,多段线必须为数据库驻留)。
要在多段线的开始处插入一个顶点,可将AcDbObjectId::kNull传递给indexVertId参数。
插入的顶点必须在insertVertexAt()返回后由调用的应用程序显示地关闭。
如果成功返回Acad::eOk。如果多段线不是数据库驻留,则返回Acad::eNoDatabase。
--------------------------------------------------------------------------------
Acad::ErrorStatus
insertVertexAt(
"const AcDb2dVertex* pIndexVert,"
AcDb2dVertex* pNewVertex);
pIndexVert
输入指向一个多段线中的顶点的指针,新顶点将在其后插入
pNewVertex
输入要被插入的顶点的指针
此函数在pIndexVert指向的AcDb2dVertex对象后将pNewVertex指向的AcDb2dVertex对象插入至多段线的顶点列表中,将多段线设为顶点的拥有者。另外,如果多段线驻留在AcDbDatabase中,则顶点将被增加至相同的数据库中。如果多段线不是数据库驻留,则在此多段线被增加至一个数据库中时,顶点也将被增加。
要在多段线的开始处插入一个顶点,将NULL值传递至pIndexVert参数。
如果多段线是数据库驻留,则增加的顶点必须在appendVertex()返回后由调用的应用程序显示地关闭。如果多段线不是数据库驻留,则不需要关闭顶点,因为它还没有被增加至数据库中(对这样的顶点调用close()将返回Acad::eNoDatabase)。
如果成功返回Acad::eOk。
AcDb2dPolyline::makeClosed 函数
Acad::ErrorStatus
makeClosed();
此函数将多段线设为闭合(在多段线的起点和中点间将绘出一条线段,使多段线成为一多边形)。
这将设置DXF群组码的第一位。
如果成功返回Acad::eOk。
AcDb2dPolyline::makeOpen 函数
Acad::ErrorStatus
makeOpen();
此函数将多段线设为开放。在多段线的起点和中点间没有一条线段,因此多段线不会形成一多边形。
这将清除DXF群组码的第一位。
如果成功返回Acad::eOk。
AcDb2dPolyline::setDefaultEndWidth 函数
Acad::ErrorStatus
setDefaultEndWidth(
double newVal);
newVal
输入默认的终点宽度值
将newVal设为多段线的默认的终点宽度值。这个值作为多段线中所有顶点的默认的终点宽度值。因此,对于DXFOUT,具有此宽度值的顶点将不被写出。对于DXFIN,没有设置DXF群组码41的值的顶点将使用多段线默认的终点宽度。
如果为非零,则默认的终点宽度值将作为DXF群组码41的值。
如果成功返回Acad::eOk,如果传递的数据非法,则返回Acad::eInvalidInput。
AcDb2dPolyline::setDefaultStartWidth 函数
Acad::ErrorStatus
setDefaultStartWidth(
double newVal);
newVal
输入默认的起点宽度值
将newVal设为多段线的默认的起点宽度值。这个值作为多段线中所有顶点的默认的起点宽度值。因此,对于DXFOUT,具有此宽度值的顶点将不被写出。对于DXFIN,没有设置DXF群组码40的值的顶点将使用多段线默认的起点宽度。
如果为非零,则默认的终点宽度值将作为DXF群组码40的值。
如果成功返回Acad::eOk,如果传递的数据非法,则返回Acad::eInvalidInput。
AcDb2dPolyline::setElevation 函数
Acad::ErrorStatus
setElevation(
double newVal);
newVal
输入高度值
将newVal设为多段线的高度。这个高度值是多段线的OCS中Z轴的高度(即,从WCS原点至包含多段线的平面的最小值)。
高度值作为DXF群组码10的Z坐标值(DXF文件中则为群组码30)
如果成功返回Acad::eOk,如果传递的数据非法,则返回Acad::eInvalidInput。
AcDb2dPolyline::setLinetypeGenerationOff 函数
Acad::ErrorStatus
setLinetypeGenerationOff();
此函数将关闭线型生成。这将导致多段线使用的线型将跳过每个顶点而不是连续地穿过顶点。
这将清除DXF群组码70的位8。
如果成功返回Acad::eOk,如果传递的数据非法,则返回Acad::eInvalidInput。
AcDb2dPolyline::setLinetypeGenerationOn 函数
Acad::ErrorStatus
setLinetypeGenerationOn();
此函数将打开线型生成。这将导致多段线使用的线型将连续地穿过顶点而不是跳过每个顶点。
这将设置DXF群组码70的位8。
如果成功返回Acad::eOk,如果传递的数据非法,则返回Acad::eInvalidInput。
AcDb2dPolyline::setNormal 函数
Acad::ErrorStatus
setNormal(
const AcGeVector3d& normal);
normal
输入包含多段线的平面的法向矢量
此函数将normal设为包含多段线的平面的法向矢量。normal必须为非零长度值。
normal值将用于DXF群组码210。
如果成功返回Acad::eOk,如果传递的数据非法,则返回Acad::eInvalidInput。
AcDb2dPolyline::setPolyType 函数
Acad::ErrorStatus
setPolyType(
AcDb::Poly2dType type);
AcDb2dPolyline::setThickness 函数
Acad::ErrorStatus
setThickness(
double thickness);
thickness
输入多段线的厚度
此函数将thickness设为多段线的厚度。厚度是多段线沿其法向矢量方向的尺寸。法向矢量方向也称为拉伸方向。
厚度值用于DXF群组码39。
AcDb2dPolyline::splineFit 函数
Acad::ErrorStatus
splineFit();
"此函数删除所有已有的任何样条曲线或曲线拟合顶点,将所有剩余的顶点转换至样条曲线控制顶点,并生成一个新的样条曲线拟合顶点集。结果多段线为穿过新的顶点集的样条曲拟合。此函数与PEDIT命令的""Spline fit""选项执行相同的操作。"
如果成功返回Acad::eOk。
--------------------------------------------------------------------------------
Acad::ErrorStatus
splineFit(
"AcDb::Poly2dType splineType,"
Adesk::Int16 splineSegs);
splineType
输入在多段线上进行splineFit操作所使用的splineType值
splineSegs
输入在多段线上进行splineFit 操作所使用的splineSegs值
"此函数删除所有已有的任何样条曲线或曲线拟合顶点,将所有剩余的顶点转换至样条曲线控制顶点,并生成一个新的样条曲线拟合顶点集。结果多段线为穿过新的顶点集的样条曲拟合。此函数与PEDIT命令的""Spline fit""选项执行相同的操作,除了此函数使用splineType和splineSegs作为splineFit操作的控制参数,而不是使用splinetype和splinesegs数据库/系统变量"
如果成功返回Acad::eOk。
AcDb2dPolyline::straighten 函数
Acad::ErrorStatus
straighten();
"此函数从多段线中删除所有任何样条曲线或曲线拟合顶点,并将所有剩余的顶点设为简单顶点。此函数与PEDIT命令的""Decurve""选项执行相同的操作。"
如果成功返回Acad::eOk。
AcDb2dPolyline杂项函数
AcDb2dPolyline::getClassID 函数
virtual Acad::ErrorStatus
getClassID(
CLSID* pClsid) const;
pClsid
未说明
Description to come。
AcDb2dPolyline::worldDraw 函数
virtual Adesk::Boolean
worldDraw(
AcGiWorldDraw* pWd);
pWd
未说明
Description to come。
AcDb2dPolyline查询函数
AcDb2dPolyline::defaultEndWidth 函数
double
defaultEndWidth() const;
返回多段线的默认的多段线的段终止宽度值。这个值用于多段线中的所有顶点的默认的终点宽度。因此,对于DXFOUT,具有此宽度值的顶点将不被写出。对于DXFIN,没有设置DXF群组码41的值的顶点将使用多段线默认的终点宽度。
如果为非零,则默认的终点宽度值将作为DXF群组码41的值。
AcDb2dPolyline::defaultStartWidth 函数
double
defaultStartWidth() const;
返回多段线的默认的多段线的段开始宽度值。这个值用于多段线中的所有顶点的默认的起点宽度。因此,对于DXFOUT,具有此宽度值的顶点将不被写出。对于DXFIN,没有设置DXF群组码40的值的顶点将使用多段线默认的起点宽度。
如果为非零,则默认的起点宽度值将作为DXF群组码40的值。
AcDb2dPolyline::elevation 函数
double
elevation() const;
返回多段线的高度。这个高度值是多段线的OCS中Z轴的高度(即,从WCS原点至包含多段线的平面的最小值)。
高度值作为DXF群组码10的Z坐标值(DXF文件中则为群组码30)
AcDb2dPolyline::isLinetypeGenerationOn 函数
Adesk::Boolean
isLinetypeGenerationOn() const;
如果多段线的线型生成打开,则返回Adesk::kTrue,否则返回Adesk::kFalse。当线型生成打开,则多段线使用的线型模式将连续生成且穿过所有顶点,而不是跳过每个顶点。
线型生成对应DXF群组码70中的位8(即,如果线型生成打开,则设置此位)。
AcDb2dPolyline::normal 函数
AcGeVector3d
normal() const;
此函数返回包含多段线的平面的法向矢量。这个法向矢量用WCS坐标表示。
法向矢量对应DXF群组码210。
AcDb2dPolyline::polyType 函数
AcDb::Poly2dType
polyType() const;
返回AcDb::Poly2dType,表示此多段线曲线/样条曲线拟合的类型。
AcDb::Poly2dType的可能值为:

说明
k2dSimplePoly
没有进行曲线/样条曲线拟合的标准多段线
k2dFitCurvePoly
进行曲线拟合的多段线。这对应DXF群组码70的第二位被设置。
k2dQuadSplinePoly
具有二次B样条路径的进行样条曲线拟合的多段线。这对应DXF群组码70的第三位被设置且DXF群组码75设为5。
k2dCubicSplinePoly
具有三次B样条路径的进行样条曲线拟合的多段线。这对应DXF群组码70的第三位被设置且DXF群组码75设为6。
AcDb2dPolyline::thickness 函数
double
thickness() const;
此函数返回多段线的厚度。厚度是多段线沿其法向矢量方向的尺寸。法向矢量方向也称为拉伸方向。
厚度值用于DXF群组码39。
AcDb2dPolyline::vertexPosition 函数
AcGePoint3d
vertexPosition(
const AcDb2dVertex& vert) const;
vert
输入顶点对象,用于取得WCS坐标
此函数返回vert的WCS坐标位置值。此函数使用顶点中的X和Y坐标,以多段线中的Z坐标,并应用多段线的OCS至WCS变换得到WCS位置值。此函数可对不属于多段线的顶点对象进行操作。返回的位置就象多段线拥有的顶点。
AcDb2dPolyline子实体访问函数
AcDb2dPolyline::openSequenceEnd 函数
Acad::ErrorStatus
openSequenceEnd(
"AcDbSequenceEnd*& pSeqend,"
AcDb::OpenMode openMode);
pSeqend
输出指向Seqend对象的指针
openMode
输出打开Seqend的模式
此函数提供对多段线的AcDbSequenceEnd实体的访问,以取得或设置xdata。此函数将试图在openMode指定的模式下打开多段线的Seqend。
openMode参数为以下之一:
AcDb::kForRead
AcDb::kForWrite
AcDb::kForNotify
如果打开操作成功,则pSeqend将设为AcDbSequenceEnd对象的地址并返回Adesk::eOk。
如果试图以AcDb::kForRead模式打开,Seqend已打开且读取了最大的次数(256次),则打开众所周知且此函数返回Acad::eAtMaxReaders。
如果Seqend当前以AcDb::kForNotify模式打开,则打开将失败且返回Acad::eWasNotifying。
如果Seqend当前包含在一个Undo操作中,则打开将失败且返回Acad::eWasOpenForUndo。
如果Seqend当前以AcDb::kForWrite模式打开,则打开将失败且返回Acad::eWasOpenForWrite.
注意:这个功能只与已有的,使用AcDbSequenceEnd对象进行xdata储存的AutoLISP应用程序兼容。
不建议在AcDbSequenceEnd对象上储存xdata。xdata可以贴附在AcDb3dPolyline对象或任何顶点上,或使用扩展词典。
AcDb2dPolyline::openVertex 函数
Acad::ErrorStatus
openVertex(
"AcDb2dVertex*& pVertex,"
"AcDbObjectId vertId,"
"AcDb::OpenMode openMode,"
bool openErasedOne = false);
pVertex
输出指向顶点对象的指针
vertId
输出要打开的顶点的对象ID
openMode
输入打开顶点的模式
openErasedOne
输入布尔值,表示是否打开已删除的顶点
此函数提供对多段线顶点的访问。此函数使用一个空的指针进行传递。要打开的顶点的对象ID为vertId。打开的模式为openMode。openErasedOne是一个布尔值,表示是否打开已删除的顶点.
openMode参数为以下之一:
AcDb::kForRead
AcDb::kForWrite
AcDb::kForNotify
如果打开操作成功,则pVertex将设为访问的顶点对象的地址并返回Adesk::eOk。
如果openErasedEntity为Adesk::kFalse,则打开一个已删除的顶点将失败且此函数将返回Acad::eWasErased。
如果试图以AcDb::kForRead模式打开,Seqend已打开且读取了最大的次数(256次),则打开众所周知且此函数返回Acad::eAtMaxReaders。
如果顶点当前以AcDb::kForNotify模式打开,则打开将失败且返回Acad::eWasNotifying。
如果顶点当前包含在一个Undo操作中,则打开将失败且返回Acad::eWasOpenForUndo。
如果顶点当前以AcDb::kForWrite模式打开,则打开将失败且返回Acad::eWasOpenForWrite.
如果objId为AcDbObjectId::kNull,则打开将失败且此函数返回Acad::eNullObjectId。
注意:如果需要,acdbOpenObject()和acdbOpenAcDbEntity()都可以直接在顶点上使用。
AcDb2dPolyline::vertexIterator 函数
AcDbObjectIterator *
vertexIterator() const;
此函数创建一个新的AcDbObjectIterator集,用于遍历多段线的顶点,并返回一个指象刚创建的遍历器对象的指针。调用此函数的程序程序负责使用C++的delete操作符释放遍历器对象。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

[ARX程序]:[ARX程序]:ARX讲座13—AcDbAlignedDimension类

AcDbAlignedDimension类
AcDbAlignedDimension类用于表示标注空间中任意两点距离的标注类型。标注的法向矢量必须与两点之间的线垂直。两个选择的点也作为两个标注界线的开始的定义点。
继承自
AcDbDimension
包含文件
dbdim.h
提示
当一个新创建的标注实体首次关闭,系统将为它自动创建一个匿名块进行参照,用于显示。匿名块是包含所有合适的线、弧、箭头实体、文本等的一个AcDbBlockTableRecord。它使用一个*D作为块名前缀。
如果标注被设置使用文本位置值而不是默认的文本位置(即,AcDbDimension::useSetTextPosition()被取消)且系统变量DIMFIT不设为4,则文本位置将在dimLine设置中优先使用。
参见
"AcDbObject, AcDbEntity"
成员
AcDbAlignedDimension建构器和析构器
AcDbAlignedDimension::~AcDbAlignedDimension 函数
~AcDbAlignedDimension();
析构器。
AcDbAlignedDimension::AcDbAlignedDimension 函数
AcDbAlignedDimension(
"const AcGePoint3d& xLine1Point,"
"const AcGePoint3d& xLine2Point,"
"const AcGePoint3d& dimLinePoint,"
"const char* dimText = NULL,"
AcDbObjectId dimStyle = AcDbObjectId::kNull);
xLine1Point
输入第一条界线的起点(在WCS坐标中)
xLine2Point
输入第二条界线的起点(在WCS坐标中)
dimLinePoint
输入标注线上的一个点(WCS坐标中)
dimText
输入文本字符串作为标注文本
dimStyle
输入要使用的AcDbDimStyleTableRecord的对象ID
"此建构器使用传递的参数初始化标注。另外,界线倾斜角设为0.0,默认的建构器初始化AcDbDimension, AcDbEntity和其他的其余部分。"
标注将使用dimText字符串的一份拷贝。
"dimText字符串需要包含任何需要的mtext格式化字符串。子字符串""<>""在字符串中任何位置作为标记使用,用于表示此处用默认文本代替""<>""。在文本字符串中可以多个""<>""设置,但只有第一个设置将被认为是默认文本替换的位置。"
如果dimText为NULL,则在标注关闭时,标注文本将被设为一个空的字符串且将使用默认的标注文本。(标注文本是基于dimStyle、dimVar设置和角度的实际测量自动生成的一个文本字符串。)
如果dimStyle为AcDbObjectId::kNull,则将使用AutoCAD编辑器中当前默认的dimstyle的对象ID。
xLine1Point (第一条界线的起点)对应DXF群组码13。
xLine2Point (第二条界线的起点)对应DXF群组码14。
dimLinePoint (标注线定义点) 对应DXF群组码10。
dimText (标注文本) 对应DXF群组码1。
由dimStyle指定的标注样式中的名称字符作为DXF群组码3。
--------------------------------------------------------------------------------
AcDbAlignedDimension();
"默认建构器。将标注线定义点和界线1和2的起点均设为(0,0,0),将倾斜角设为0.0。另外,执行AcDbDimension、AcDbEntity等其他的默认建构器的初始化。"
AcDbAlignedDimension编辑函数
AcDbAlignedDimension::setDimLinePoint 函数
Acad::ErrorStatus
setDimLinePoint(
const AcGePoint3d& pt);
pt
输入将在标注线上的点
此函数设置标注使用pt(WCS坐标中)为指定标注线位置的定义点(即,这个点必须在标注线上某处)。
注意:此点是AcDbAlignedDimension类型的主定义点。
尺寸线定义点对应DXF群组码10。
此函数总是返回Acad::eOk。
AcDbAlignedDimension::setOblique 函数
Acad::ErrorStatus
setOblique(
double oblique);
oblique
输入界线倾斜角(弧度)
此函数设置标注使用oblique(弧度)作为标注的界线倾斜角。
这个角对应于包含两条界线(xLine1Point and xLine2Point)的开始点的线。如果视线从标注的OCS的Z轴指向顶点,则正的角度值为逆时针。
包含两条界线开始点的线将包含标注的平面分为两个半平面。界线只能在包含标注线定义点的半平面内。倾斜角从0至pi周期性变化。因此,大于pi的倾斜角将简化映射为第一个周期中的相应角度。
负角度周期在-pi至0之间,且与这个角度加上pi时的正角度表示相同的倾斜角(例如,-pi / 4 与3 ( pi / 4)相同)。
零角度是一个特殊的例子,表示使用“默认值”,与pi / 2 (90 degrees)的倾斜角相同。
倾斜角对应DXF群组码52。
此函数总是返回Acad::eOk。
AcDbAlignedDimension::setXLine1Point 函数
Acad::ErrorStatus
setXLine1Point(
const AcGePoint3d& pt);
pt
输入第一条界线开始点
此函数设置标注使用pt(WCS坐标中)作为标注的第一条界线的开始点的定义点。
注意:此点是AcDbAlignedDimension类型的主定义点。
第一条界线开始点对应DXF群组码13。
此函数总是返回Acad::eOk。
AcDbAlignedDimension::setXLine2Point 函数
Acad::ErrorStatus
setXLine2Point(
const AcGePoint3d& pt);
pt
输入第二条界线开始点
此函数设置标注使用pt(WCS坐标中)作为标注的第二条界线的开始点的定义点。
注意:此点是AcDbAlignedDimension类型的主定义点。
第二条界线开始点对应DXF群组码14。
此函数总是返回Acad::eOk。
AcDbAlignedDimension杂项函数
AcDbAlignedDimension::getClassID 函数
virtual Acad::ErrorStatus
getClassID(
CLSID* pClsid) const;
pClsid
未说明
Description to come。
AcDbAlignedDimension查询函数
AcDbAlignedDimension::dimLinePoint 函数
AcGePoint3d
dimLinePoint() const;
此函数返回标注使用的指定标注线位置的定义点(WCS坐标中)。即,这个点必须在标注线上某处。
注意:此点是AcDbAlignedDimension类型的主定义点。
尺寸线定义点对应DXF群组码10。
AcDbAlignedDimension::oblique 函数
double
oblique() const;
此函数返回标注的界线倾斜角。
这个角对应于包含两条界线(xLine1Point and xLine2Point)的开始点的线。如果视线从标注的OCS的Z轴指向顶点,则正的角度值为逆时针。
包含两条界线开始点的线将包含标注的平面分为两个半平面。界线只能在包含标注线定义点的半平面内。倾斜角从0至pi周期性变化。因此,大于pi的倾斜角将简化映射为第一个周期中的相应角度。
负角度周期在-pi至0之间,且与这个角度加上pi时的正角度表示相同的倾斜角(例如,-pi / 4 与3 ( pi / 4)相同)。
零角度是一个特殊的例子,表示使用“默认值”,与pi / 2 (90 degrees)的倾斜角相同。
倾斜角对应DXF群组码52。
AcDbAlignedDimension::xLine1Point 函数
AcGePoint3d
xLine1Point() const;
此函数返回标注作为标注的第一条界线的开始点的定义点(WCS坐标中)。
AutoCAD的DIMEXO标注变量将影响界线如何相对于此点显示。
第一条界线开始点对应DXF群组码13。
AcDbAlignedDimension::xLine2Point 函数
AcGePoint3d
xLine2Point() const;
此函数返回标注作为标注的第二条界线的开始点的定义点(WCS坐标中)。
AutoCAD的DIMEXO标注变量将影响界线如何相对于此点显示。
第二条界线开始点对应DXF群组码14。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

[ARX程序]:ARX讲座13—AcDbCircle类

AcDbCircle类
AcDbCircle类表示AutoCAD中的圆实体。
继承自
AcDbCurve
包含文件
dbents.h
参见
"AcDbObject, AcDbEntity, AcGePoint3d, AcGeVector3d"
成员
AcDbCircle建构器和析构器
AcDbCircle::~AcDbCircle 函数
~AcDbCircle();
析构器。
AcDbCircle::AcDbCircle 函数
AcDbCircle(
"const AcGePoint3d& cntr,"
"const AcGeVector3d& nrm,"
double radius);
cntr
输入圆的中点
nrm
输入圆的法向矢量
radius
输入圆的半径
"使用cntr, nrm,和radius参数初始化圆。"
center和normal必须在WCS坐标中。normal必须非零长度且radius必须大于零。
--------------------------------------------------------------------------------
AcDbCircle();
"默认建构器。初始化center为 (0,0,0),radius为0.0,和normal为(0,0,1)。在对象关闭前radius必须设为大于零的值。所有坐标均在WCS中。"
AcDbCircle编辑函数
AcDbCircle::setCenter 函数
Acad::ErrorStatus
setCenter(
const AcGePoint3d& center);
center
Input center point for the circle
设置圆的中点至cetner,它必须在WCS坐标中。
中点值对应DXF群组码10。
如果成功返回Acad::eOk,如果传递的数据非法则返回Acad::eInvalidInput。
AcDbCircle::setNormal 函数
Acad::ErrorStatus
setNormal(
const AcGeVector3d& normal);
normal
输入圆的法向矢量(WCS坐标中)
设置normal为包含圆的平面的法向矢量。normal必须在WCS坐标中且必须为非零值。
normal值对应DXF群组码210。
如果成功返回Acad::eOk,如果传递的数据非法则返回Acad::eInvalidInput。
AcDbCircle::setRadius 函数
Acad::ErrorStatus
setRadius(
double radius);
radius
输入圆的半径
设置radius为圆的半径。radius必须大于零。
半径值对应DXF群组码40。
如果成功返回Acad::eOk,如果传递的数据非法则返回Acad::eInvalidInput。
AcDbCircle::setThickness 函数
Acad::ErrorStatus
setThickness(
double thickness);
thickness
输入圆的厚度
设置圆的厚度为thickness。thickness是圆沿其法向矢量方向(也称为拉伸方向)上的尺寸。
厚度值对应DXF群组码39。
如果成功返回Acad::eOk,如果传递的数据非法则返回Acad::eInvalidInput。
AcDbCircle杂项函数
AcDbCircle::getClassID 函数
virtual Acad::ErrorStatus
getClassID(
CLSID* pClsid) const;
pClsid
未说明
Description to come。
AcDbCircle::getTransformedCopy 函数
DBCURVE_METHODS Acad::ErrorStatus
getTransformedCopy(
"const AcGeMatrix3d& xform,"
AcDbEntity*& ent) const;
xform
未说明
ent
未说明
Description to come。
AcDbCircle查询函数
AcDbCircle::center 函数
AcGePoint3d
center() const;
返回圆的中点(WCS坐标中)。
中点值对应DXF群组码10。
AcDbCircle::normal 函数
AcGeVector3d
normal() const;
返回包含圆的平面的WCS单位法向矢量。注意:这个矢量也作为圆的拉伸方向(即,对于非零厚度)。
法向矢量对应DXF群组码210。
AcDbCircle::radius 函数
double
radius() const;
返回圆半径。
半径值对应DXF群组码40。
AcDbCircle::thickness 函数
double
thickness() const;
返回圆的厚度。厚度是圆沿其法向矢量方向(也称为拉伸方向)的尺寸。
厚度值对应DXF群组码39
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-10-22 20:33:45 | 显示全部楼层

[ARX函数]:[ARX函数]:ARX讲座14—AcDbDictionary类

AcDbDictionary类
AcDbDictionary是一个数据库驻留的对象词典,储存文本字符串和数据库对象之间的映射。此类的一个实例表示一个对象,如图形符号表,从AcDbObject派生的对象可增加至其中、访问或从中删除。在一个AcDbDictionary中的记录必须是惟一的。记录包含一个惟一的AcDbObject和字符串,其中含有记录的关键字名称。关键必须是一个显式的以null结尾的文本字符串,或在首字符使用一个星号“*”表示一个匿名记录。一个匿名记录的关键字将通过增加一个字母加上一个惟一的整数值至星号,例如“A13*”。
当一个对象在一个词典中时,词典则确定为这个对象的宿主(owner),查找关键字字符串与对象的对象ID相关联,且词典本身贴附至作为永久反应器的对象,从而使对象在对象被删除时被通知。
继承自
AcDbObject
包含文件
dbdict.h
提示
词典名称遵循符号名的规则。通常的规则有:
·   名称可尽量长(在前一版本的AutoCAD中定义可超过32个字符)
·   名称可包含附加的字符,如空格、省略号等。
·   名称被认为大小写不敏感。
·   名称不能包含竖线“|”
如果正在获取一个词典记录的关键字名称时不知道名称的内容或长度,则不能猜测。例如,如果创建一个词典并只将20个字符长的名称放入词典中,则可以安全地假设词典只包含20个字符的名称。如果从一个词典中获得关键字名称时,且这个词典不是该用户创建并可能被AutoCAD或其他ARX程序更新更新,则必须准备处理任意长度的名称。
从数据库取得的对象指针表示当前在请求模型下打开的独立的对象。返回状态表示打开记录对象的状态。如果状态不是Acad::eOk,则返回的指针为NULL。
增加至词典的对象不能表示在数据库中,即它们必须具有NULL句柄。
从词典中删除或替换的对象可使用AcDbObject::erase()删除。
当一个词典被删除时,所有其中的对象也被删除。当一个词典被恢复,则其中的所有对象也被恢复。
参见
AcDbDictionaryIterator
成员
AcDbDictionary建构器和析构器
AcDbDictionary::~AcDbDictionary 函数
virtual
~AcDbDictionary();
析构器。
AcDbDictionary::AcDbDictionary 函数
AcDbDictionary();
默认建构器。初始化词典为内容的软拥有者(soft owner)。
AcDbDictionary编辑函数
AcDbDictionary::newIterator 函数
AcDbDictionaryIterator *
newIterator(
AcRx::DictIterType iterType = AcRx::kDictSorted);
iterType
需要的遍历器的类型,可能值为:
AcRx::kDictSorted
AcRx::kDictCollated
此函数返回词典的一个新的遍历器。如果iterType == AcRx::kDictSorted,则遍历器将以排序的关键字值的顺序遍历词典(即,关键字以字母顺序排序)。如果iterType == AcRx::kDictCollated,则遍历器将以输入对象的顺序遍历词典。
AcDbDictionary::remove 函数
Acad::ErrorStatus
remove(
const char * key);
key
输入表示记录的关键字(或名称)的字符串
此函数从词典中删除key标识的记录。
删除中包含从词典中删除关键字和对象的对象ID记录,以及作为一个永久反应器从对象上删除。被删除的对象仍存在于数据库中,因此不能释放它的内存。如果需要(即没有必要禁止它被储存,因为它已没有一个宿主),则由调用者负责清除已删除的对象。
如果成功返回Acad::eOk。如果key == NULL,则返回Acad::eInvalidKey。如果在词典中没有找到关键字,则返回Acad::eKeyNotFound。
--------------------------------------------------------------------------------
Acad::ErrorStatus
remove(
"const char * key,"
AcDbObjectId& returnId);
key
输入表示记录关键字(或名称)的字符串
returnId
输入记录的对象ID
此函数从词典中删除由key标识的一个记录,并在returnId中返回这个记录的对象ID。
删除中包含从词典中删除关键字和对象的对象ID记录,以及作为一个永久反应器从对象上删除。被删除的对象仍存在于数据库中,因此不能释放它的内存。如果需要(即没有必要禁止它被储存,因为它已没有一个宿主),则由调用者负责清除已删除的对象。
如果成功返回Acad::eOk。如果key == NULL,则返回Acad::eInvalidKey。如果在词典中没有找到关键字,则返回Acad::eKeyNotFound。
--------------------------------------------------------------------------------
Acad::ErrorStatus
remove(
AcDbObjectId objId);
objId
Input the object ID of the object to remove
此函数从词典中删除objId标识的对象ID所对应的一个记录。
删除中包含从词典中删除关键字和对象的对象ID记录,以及作为一个永久反应器从对象上删除。被删除的对象仍存在于数据库中,因此不能释放它的内存。如果需要(即没有必要禁止它被储存,因为它已没有一个宿主),则由调用者负责清除已删除的对象。
如果成功返回Acad::eOk。如果key == NULL,则返回Acad::eInvalidKey。如果在词典中没有找到关键字,则返回Acad::eKeyNotFound。
AcDbDictionary::setAt 函数
Acad::ErrorStatus
setAt(
"const char* srchKey,"
"AcDbObject* newValue,"
AcDbObjectId& retObjId);
srchKey
输入表示对象的搜索关键字名称的字符串
newValue
输入指向要增加至词典中的新对象的指针
retObjId
返回新增加的对象的对象ID
如果词典中不存在srchKey,则此函数将newValue指向的一个新记录增加至词典中。如果关键字为srchKey的记录存在,则删除已有的记录,词典从它的反应器列表中删除,并newValue对象增加至词典中代替它的位置。对象的名称由srchKey指定。对象的objectId记录在retObjId中返回。
注意:newValue不需要是一个非数据库驻留的对象。如果newValue已驻留在一个数据库中,则必须打开用于写入。当此函数被调用时也不需要有一个宿主,因为词典将被设为它的宿主并被增加至它的反应器列表中作为一个永久的反应器。
注意:在传递至任何词典的setAt()方法之前,对象必须以AcDb::kForWrite状态打开。
例如,要增加一个新的组至组词典中:
AcDbDictionary *pDict = NULL;
"acdbCurDwg()->getGroupDictionary(pDict, AcDb::kForWrite);"
AcDbGroup *pGroup = new AcDbGroup;
"pDict->setAt(""groupName"", pGroup, groupObjectId);"
pDict->close();
pGroup->close();
实例化以上的组对象自动打开它用于写入。
如果成功返回Acad::eOk。如果srchKey == NULL,则返回Acad::eInvalidKey。如果newValue == NULL,则返回Acad::eNullEntityPointer。
AcDbDictionary::setMergeStyle 函数
virtual void
setMergeStyle(
AcDb::DuplicateRecordCloning style);
style
输入INSERT操作的合并样式
"此函数设置INSERT操作的合并样式。样式可以是kDrcIgnore, kDrcMerge或kDrcReplace。含义如下:"
合并样式
含义
kDrcIgnore
词典在INSERT操作中将被忽略(即,不输入)
kDrcMerge
词典将被合并至INSERT操作的目标词典中。
kDrcReplace
词典将在INSERT中覆盖(替换)相同名称的词典。
AcDbDictionary::setName 函数
bool
setName(
"const char* oldName,"
const char* newName);
oldName
输入表示记录的旧关键字字符串名称的字符串
newName
输入表示记录的新关键字字符串名称的字符串
此函数将oldName指定的记录重命名为newName指定的新的名称。
如果成功返回true,否则返回false。
AcDbDictionary::setTreatElementsAsHard 函数
void
setTreatElementsAsHard(
bool doIt);
doIt
输入布尔值,表示是否将元素认为是硬拥有的(hard owned)
此函数设置数据成员,使词典根据doIt中的值设为它的元素的硬拥有者(HandOwner)或软拥有者(SoftOwner)。如果doIt为true,则设为它的元素的硬拥有者;如果为false,则设为设为它的元素的软拥有者。
AcDbDictionary杂项函数
AcDbDictionary::decomposeForSave 函数
virtual Acad::ErrorStatus
decomposeForSave(
"AcDb::AcDbDwgVersion ver,"
"AcDbObject*& replaceObj,"
"AcDbObjectId& replaceId,"
Adesk::Boolean& exchangeXData);
ver
replaceObj
replaceId
exchangeXData
Description to come。
AcDbDictionary::dwgInFields 函数
virtual Acad::ErrorStatus
dwgInFields(
AcDbDwgFiler* pFiler);
pFiler
Description to come。
AcDbDictionary::dwgOutFields 函数
virtual Acad::ErrorStatus
dwgOutFields(
AcDbDwgFiler* pFiler) const;
pFiler
Description to come。
AcDbDictionary::dxfInFields 函数
virtual Acad::ErrorStatus
dxfInFields(
AcDbDxfFiler* pFiler);
pFiler
Description to come。
AcDbDictionary::dxfOutFields 函数
virtual Acad::ErrorStatus
dxfOutFields(
AcDbDxfFiler* pFiler) const;
pFiler
Description to come。
AcDbDictionary::getClassID 函数
virtual Acad::ErrorStatus
getClassID(
CLSID* pClsid) const;
pClsid
Description to come。
AcDbDictionary::subErase 函数
virtual Acad::ErrorStatus
subErase(
Adesk::Boolean pErasing = Adesk::kTrue);
pErasing
Description to come。
AcDbDictionary查询函数
AcDbDictionary::getAt 函数
Acad::ErrorStatus
getAt(
"const char* entryName,"
AcDbObjectId& entryObj) const;
entryName
输入表示搜索关键字名称的字符串,用于查找
entryObj
返回找到的记录的对象ID
此函数搜索关键字为entryName的词典,如果找到,则返回entryObj中关联的对象的对象ID。
如果成功返回Acad::eOk。如果entryName == NULL或entryName不是一个有效的关键字字符串,则返回Acad::eInvalidKey。如果没有找到匹配的字符串,则返回Acad::eKeyNotFound。
--------------------------------------------------------------------------------
Acad::ErrorStatus
getAt(
"const char* entryName,"
"AcDbObject*& entryObj,"
AcDb::OpenMode mode) const;
entryName
输入表示记录的搜索关键字名称的字符串,用于查找
entryObj
返回指向打开的对象的指针
mode
输入打开对象的模式,可能的值有:
"AcDb::kForRead,"
"AcDb::kForWrite,"
AcDb::kForNotify
此函数搜索关键字为entryName的词典,如果找到,以mode中的模式打开关联的对象并将entryObj设为指向刚打开的对象。搜索对大小写不敏感。
如果成功返回Acad::eOk。如果entryName == NULL或entryName不是一个有效的关键字字符串,则返回Acad::eInvalidKey。如果没有找到匹配的字符串,则返回Acad::eKeyNotFound。
AcDbDictionary::has 函数
bool
has(
AcDbObjectId objId) const;
objId
输入要搜索的记录的对象ID
如果表包含与objId匹配的一个AcDbObjectId,则此函数返回true,否则返回false。
--------------------------------------------------------------------------------
bool
has(
const char* entryName) const;
entryName
输入表示搜索关键字名称的字符串,用于查找
此函数报告词典中是否包含entryName标识的记录。搜索entryName对大小写不敏感。
如果找到记录则返回true,否则返回false。
AcDbDictionary::isTreatElementsAsHard 函数
bool
isTreatElementsAsHard() const;
此函数报告这个词典是否是它的元素的硬拥有者(HardOwner)。
如果词典是它的元素的硬拥有者(HardOwner)则返回true,否则返回false。
AcDbDictionary::mergeStyle 函数
virtual AcDb::DuplicateRecordCloning
mergeStyle() const;
"此函数返回词典的合并样式。可能为AcDb::kDrcIgnore, AcDb::kDrcMerge,或AcDb::kDrcReplace。"
AcDbDictionary::nameAt 函数
Acad::ErrorStatus
nameAt(
"AcDbObjectId objId,"
char*& name) const;
objId
输入要搜索的对象ID
name
返回记录的搜索关键字名称
此函数搜索词典,查找对象ID为objId的一个记录并在name中返回词典记录的搜索关键字名称。
如果成功返回Acad::eOk。如果没有找到匹配的记录,则返回Acad::eKeyNotFound。
注意:调用者负责释放返回的字符串。
AcDbDictionary::numEntries 函数
Adesk::UInt32
numEntries() const;
此函数返回词典中未删除的记录数。
AcDbDictionary反应器
AcDbDictionary::erased 函数
virtual void
erased(
"const AcDbObject* pObject,"
Adesk::Boolean pErasing = Adesk::kTrue);
pObject
输入正在被删除或恢复的对象的指针
pErasing
输入布尔值,表示对象正被删除或恢复
此函数在包含在词典中的一个对象被删除时,管理词典的Undo记录。如果对象正被恢复,则立即返回。由AutoCAD中的通知器调用,不能用在应用程序代码中。
AcDbDictionary::goodbye 函数
virtual void
goodbye(
const AcDbObject* pObject);
pObject
指向一个AcDbObject对象的指针
Null函数。由AutoCAD中的通知器调用,不能用在应用程序代码中。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1915个

财富等级: 堆金积玉

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

使用道具 举报

 楼主| 发表于 2004-3-19 23:53:43 | 显示全部楼层

AcEdInputPointManager类

AcEdInputPointManager类
输入点管理器对AutoCAD中每个激活的文件实例化一次,而且通过一个AcApDocument成员函数输出。
每个实例管理文件编辑工作任务的下列任务:

输入点过滤器和输入点监视器的注册和取消注册
输入环境反应器的注册和取消注册
使失效和重生效系统产生的光标图形,它是图形自定义光标图形的关键元素
在要求选择必须完成的输入事件中请求强制的实体选择。这用在光标追踪穿过当前的视口时追踪光标下的实体。  
继承自

包含文件
acedinpt.h
成员
AcEdInputPointManager函数
AcEdInputPointManager::addInputContextReactor函数
virtual Acad::ErrorStatus
addInputContextReactor(
AcEdInputContextReactor* pReactor) = 0;
pReactor
输入一个要增加的输入环境反应器对象
此函数增加一个输入环境反应器。找出通过AutoCAD输入机制(窗口对话框除外)提示用户的内容。任何可以增加的反应器的数量,除了每个只能被增加一次的反应器,与输入点监视器相同。
增加相同的反应器两次(用地址进行比较)将返回 Acad::eDuplicateKey。否则,则返回Acad::eOk。
AcEdInputPointManager::addPointMonitor函数
virtual Acad::ErrorStatus
addPointMonitor(
AcEdInputPointMonitor* pMonitor) = 0;
pMonitor
输入要增加的输入点监视器
此函数增加一个点监视器至当前集合。每个监视器在每个输入点事件中只被调用一次。
增加相同的监视器两次(用地址进行比较)将返回Acad::eDuplicateKey。否则,则返回Acad::eOk。
AcEdInputPointManager::currentPointFilter函数

virtual AcEdInputPointFilter *

currentPointFilter() const = 0;

返回当前的点过滤器(如果有),否则返回NULL。

AcEdInputPointManager::disableSystemCursorGraphics函数

virtual Acad::ErrorStatus

disableSystemCursorGraphics() = 0;

使光标图形对关联的文件失效。与自定义的光标图形一起使用。这个函数与enableSystemCursorGraphics()成对地作用于一个内部的计数器上,因此系统可知道要禁止系统光标的多重应用程序。

如果成功返回Acad::eOk,如果光标因某种原因不能被禁止则返回Acad::eInvalidContext。

AcEdInputPointManager::enableSystemCursorGraphics函数

virtual Acad::ErrorStatus

enableSystemCursorGraphics() = 0;

使光标图形对关联的文件生效。与自定义的光标图形一起使用。这个函数与disableSystemCursorGraphics()成对地作用于一个内部的计数器上,因此系统可知道要禁止系统光标的多重应用程序。

如果成功返回Acad::eOk,如果失效计数已经为0则返回Acad::eInvalidContext。

AcEdInputPointManager::forcedPickCount函数

virtual int

forcedPickCount() const = 0;

如果强制选择为打开的调用者数量。

AcEdInputPointManager::mouseHasMoved函数

virtual int

mouseHasMoved() const = 0;

此函数提供一种方法让输入点监视器和过滤器检查鼠标移动并可尽快地从回调中返回,而无需做任何耗时的计算。

如果序列中没有任何数字化设备事件则返回1,否则返回0。

AcEdInputPointManager::registerPointFilter函数

virtual Acad::ErrorStatus

registerPointFilter(

AcEdInputPointFilter* pFilter) = 0;

pFilter
输入要注册的输入点过滤器对象


使用这个函数注册一个点过滤器。确认在完成时清空过滤器槽,因为在一个时间只能有一个过滤器被注册。

如果当前没有使用任何过滤器,则返回Acad::eOk;否则返回Acad::eIllegalReplacement。

AcEdInputPointManager::removeInputContextReactor函数

virtual Acad::ErrorStatus

removeInputContextReactor(

AcEdInputContextReactor* pReact) = 0;

pReact
输入要删除的输入环境反应器


用于从激活的集合中删除一个输入的环境反应器。

如果反应器在集合中,则返回Acad::eOk,否则返回Acad::eInvalidKey。

AcEdInputPointManager::removePointMonitor函数

virtual Acad::ErrorStatus

removePointMonitor(

AcEdInputPointMonitor* pMonitor) = 0;

pMonitor
输入要删除的输入点监视器


此函数用于从激活的集合中删除一个点监视器。

如果监视器在集合中,则返回Acad::eOk;否则返回Acad::eInvalidKey。

AcEdInputPointManager::revokePointFilter函数

virtual Acad::ErrorStatus

revokePointFilter() = 0;

此函数用于取消当前的点过滤器。最好不要取消另一个应用程序的过滤器;然而如果必须这样做,可使用currentPointFilter()取得当前的这个过滤器并将其放在台面。

如果有一个激活的点过滤器,则返回Acad::eOk;否则返回Acad::eNullObjectPointer。

AcEdInputPointManager::systemCursorDisableCount函数

virtual int

systemCursorDisableCount() const = 0;

返回禁止光标的调用者的数量。

AcEdInputPointManager::turnOffForcedPick函数

virtual Acad::ErrorStatus

turnOffForcedPick() = 0;

这个函数减少强制的选择计数器,如果计数器达到0则禁止强制的选择,这表示实体选择发生在通常的AutoCAD条件下,如当输入点正被请求和OSNAP模式被激活或正常的实体选择操作时。

强制的选择计数已经为0则返回Acad::eInvalidContext,否则返回Acad::eOk。

AcEdInputPointManager::turnOnForcedPick函数

virtual Acad::ErrorStatus

turnOnForcedPick() = 0;

此函数使AutoCAD输入事件机制在所有数据化设备事件中在当前选择靶框下进行选择,无论是否请求一个点或任何OSNAP模式当前被激活。如果一个点被请求且OSNAP模式被激活,对象捕捉靶框尺寸(系统变量:APERTURE)定义了选择框尺寸。否则将使用系统变量PICKBOX。在Acad::PointHistory枚举中,以下的枚举值与功能相关,正如它们相关的注解:eForcedPick, ePickMask, eDidNotPick, eUsedPickBox, eUsedOsnapBox。

在不处理的环境(bypassed context)中(如一个ads_grread()调用)不会发生强制的选择。

计数将被保持,因此如果多重应用程序要强制选择,它会发生直至所有的都完成。

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

使用道具 举报

发表于 2004-4-1 20:35:16 | 显示全部楼层
能不能介绍关于AcDbViewport 等有关的类
我想做一个窗口缩放的程序
可是资料非常少
谢谢!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-4-1 22:30:52 | 显示全部楼层
AcDbViewport类



AcDbViewport类表示AutoCAD中的VIEWPORT实体。

注意:不要派生此类。试图这样做将导致应用程序终止AutoCAD。



继承自

AcDbEntity



包含文件

dbents.h



参见

AcDbObject



成员



AcDbViewport建构器和析构器

AcDbViewport::~AcDbViewport 函数

~AcDbViewport();

析构器。



AcDbViewport::AcDbViewport 函数

AcDbViewport();

默认建构器,初始化:

视图中点为(0,0,0)
Viewport宽度和高度为0.0
Viewport中点为(0,0,0)
viewTarget为(0,0,0)
viewDirection为(0,0,1)
viewHeight 和viewCenter为任意值
twistAngle 为0.0
lensLength 为50.0
前后裁剪关闭
前裁剪在视点
前后裁剪距离为0.0
透视图关闭
UcsFollowMode关闭
UcsIconVisible打开
UcsIconAtOrigin关闭
快速缩放打开
圆形缩放比例为 100
捕捉关闭
标准捕捉模式(非等角)
捕捉角为0.0
捕捉基点为 (0,0)
捕捉增量为 (1,1)
snapIsoPair为0
栅格关闭栅格增量为 (0,0)
隐藏线删除关闭
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2004-10-27 08:17:28 | 显示全部楼层
看到这样的帖子我欣喜若狂,作为一个初学者对这样的文章真是盼望已久,多谢搂主的鼎力相助。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2005-3-29 22:03:05 | 显示全部楼层
是啊,很像是铁道出版设地那本书啊!写的很好啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 23:15 , Processed in 0.482577 second(s), 52 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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