赞
踩
2019独角兽企业重金招聘Python工程师标准>>>
(1)AcAx 开头的全局函数:这些函数通过 COM 的方式来让AutoCAD 完成一些操作。
(a) acutPrintf函数:在 AutoCAD 命令行显示指定的字符串
acutPrintf函数的具体用法如例:
acutPrintf("\n输入不合法,请重新输入");
(b) AcAxMove 函数:移动实体。需要链接 axauto15.lib 库
AcAxMove 函数的定义形式为:
HRESULT AXAUTOEXP AcAxMove(AcDbObjectId& objId,VARIANT fromPoint,VARIANT toPoint);
VARIANT 是在 COM 中使用的一种特殊数据类型,因为COM是微软用于解决组件之间数据交换的一种技术,COM 对象建立在二进制可执行代码级的基础上,并由此来实现多种语言开发的组件对象可以进行交互。
因此开发 COM 所使用的数据类型是独立于特定语言的,我们开发 COM 客户程序(调用 COM 对象的程序)也必须使用一些 COM 所规定的数据类型。
AcAxMove 函数的具体用法如例:
AcDbObjectId entId;//移动实体id
AcGePoint3d ptFrom;//起点
AcGePoint3d ptTo;//终点
// 将AcGePoint3d类型的点坐标进行类型转换
VARIANT *pvaFrom = Point3dToVARIANT(ptFrom);
VARIANT *pvaTo = Point3dToVARIANT(ptTo);
BOOL bRet = SUCCEEDED(AcAxMove(entId, *pvaFrom, *pvaTo));
delete pvaFrom;
delete pvaTo;
static VARIANT* Point3dToVARIANT(const AcGePoint3d &point)
{
COleSafeArray *psa = new COleSafeArray();
DOUBLE dblValues[] = {point[X], point[Y], point[Z]};
psa->CreateOneDim(VT_R8, 3, dblValues);
return (LPVARIANT)(*psa);
}
(c)AcAxRotate函数:旋转实体的操作
(d)AcAxScaleEntity 函数:缩放实体的操作
(e)全局函数 acdbOpenAcDbEntity用于从实体的 ID 号获得指向图形数据库中实体的指针。具体定义形式和用法参考另外一篇博客。https://my.oschina.net/u/2930533/blog/759568
(f)acedGetString 函数:获得用户输入的字符串(acedGetPoint(点)、acedGetInt、acedGetKword(关键字) 、acedGetDist(距离) acedGetCorner(矩形框对角点)acedGetAngle (角度)和 acedGetReal(实数))
acedGetString函数的定义形式为:
int acedGetString(int cronly,const char * prompt,char * result);
第一个参数:cronly 指定用户输入的字符串中是否可以包含空格,可以输入 Adesk::kTrue 或着Adesk::kFalse;
第二个参数:prompt 指定了在命令行提示用户输入的文本;
第三个参数:result 则保存了用户输入的结果(最大缓冲区为133个字符)。
返回值:RTNORM:成功,RTERROR:失败,RTCAN:用户按下“ESC”键取消操作,RTREJ:拒绝执行操作(操作不合法),RTFAIL:与AutoLISP通信失败,RTKWORD:用户输入了关键字;
具体用法如例:
acedGetString(Adesk::kFalse, "\n输入图块的名称:", &blkName)
注意:第三个参数用了&,是址传递.
acedGetInt 函数的定义形式为:
int acedGetInt(const char * prompt, int * result);
第一个参数:prompt: 用于指定显示在命令窗口中的字符串,如果不需要使用可以指定 NULL 作为该参数的值。
第二个参数:result :用户输入的整数。
返回值:RTNORM:成功,RTERROR:失败,RTCAN:用户按下“ESC”键取消操作,RTREJ:拒绝执行操作(操作不合法),RTFAIL:与AutoLISP通信失败,RTKWORD:用户输入了关键字;
(g)acedEntSel 函数:等待用户选择一个实体
acedEntSel函数的定义形式为:
int acedEntSel (const ACHAR *str, ads_name entres,ads_point ptres);
第一个参数:str:提示信息;
第二个参数:entres:实体名称;
第三个参数:ptres:选择实体对象时候的拾取点。
返回值:RTNORM:成功,RTERROR:失败,RTCAN:用户按下“ESC”键取消操作,RTREJ:拒绝执行操作(操作不合法),RTFAIL:与AutoLISP通信失败,RTKWORD:用户输入了关键字;
具体用法如例:
ads_name entres;
ads_point ptres;
if(RTNORM == acedEntSel(_T("\n请选择一个实体:"),entres,ptres))
{
AcDbObjectId objId;
if(acdbGetObjectId(objId,entres) != Acad::eOk )
return;
}
(h)acedInitGet函数:限定输入的条件,该函数只能控制紧随其后的一个acedGetXXX,调用后立即失效.
acedInitGet函数的定义形式为:
int acedInitGet(int val, const ACHAR *kwl);
第一个参数:val:输入数据的范围和方式(1:RSG_NONULL:不允许空输入;2:RSG_NOZERO:不允许输入0;4:RSG_NONEG:不允许输入负数;8:RSG_NOLIM:不检查图形边界;32:RSG_DASH:用虚线表示矩形框或橡皮线;64:RSG_2D:不考虑3D的Z坐标;128:RSG_OTHER:允许用户任意输入);
第二个参数:kwl:关键字列表;
具体用法如例:
int nCount = 1;
acedInitGet(RSG_NONULL+RSG_NONEG+RSG_NOZERO,NULL);
acedGetInt(_T("\n请输入多边形顶点数:"),&nCount);//不允许输入负数和0
(i)acedSetColorDialog 函数:函数能够弹出选择颜色对话框,并且返回用户选择的结果。
acedSetColorDialog 函数定义形式为:
Adesk::Boolean acedSetColorDialog(int& nColor,Adesk::Boolean bAllowMetaColor,int nCurLayerColor);
第一个参数:nColor 参数指定了显示【选择颜色】对话框时的默认颜色,并且在函数返回值后保存用户选择的新颜色;
第二个参数:bAllowMetaColor 参数限定在【选择颜色】对话框中是否可以选择“随层”或“随块”;
第三个参数:nCurLayerColor 参数指定当前图层的颜色。
(j)acedCommand 函数:
acedCommand 函数的定义形式为:
int acedCommand(int rtype, ... unnamed);
该函数的参数个数是可变的,并且参数成对出现。参数对中第一个参数表示参数的类型,第二个表示其实际的数据。参数表的最后一个参数必须是0或者RTNONE(使用RTNONE更好一些)。
acedCommand 函数具体用法如例:
acedCommand(RTSTR, "Circle",RTSTR, “0,0,0”, RTSTR, “10”, RTNONE);
创建一个圆心为(0,0)、半径为10的圆。
(k)acedCmd 函数:
acedCmd 函数的定义形式为:
int acedCmd(const struct resbuf * rbp);
参数是一个 resbuf 类型的指针,这里需要的结果缓冲区可以由 acutBuildList 函数生成。
(l)acutNewRb 函数:创建一个新的结果缓冲区,并为其分配存储空间。使用该函数分配的存储空间必须在不用的时候手工释放空间。
(m)acutRelRb 函数:释放结果缓冲区链表的存储空间。
(n)acedGetFileD 函数:文件对话框提示用户输入一个文件名。
acedGetFileD 函数的定义形式为:
int acedGetFileD(const char * title,const char * default,const char * ext,int flags,struct resbuf * result);
第一个参数&#x
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。