ObjectArx开发常用资料

 

一、ADS函数与ARX函数对比

ARX常用的函数功能表
ADS原函数 ARX后函数 函数功能
ads_agetcfg acedGetCfg  
ads_agetenv acedGetEnv  
ads_alert acedAlert  显示一个对话框,对话框中有用户指定的信息
ads_angle acutAngle 求出直线与当前X轴的夹角
ads_angtof acdbAngToF 将一个显示为角度值得字符串转化为实数(浮点数)
ads_angtos  acdbAngToS 把角度值转换为字符串
ads_arxload acedArxLoad 将ARX应用程序装载入CAD中
ads_arxloaded acedArxLoaded 以链表的方式返回当前装入的ARX应用程序
ads_arxunload acedArxUnload 将一个ARX应用程序从CAD中卸载出去
ads_asetcfg acedSetCfg  
ads_asetenv acedSetEnv  
ads_buildlist acutBuildList 创建结果缓冲区链表
ads_cmd acedCmd 借助一个结果缓冲区链表来执行CAD命令(有使用条件)
ads_command acedCommand 执行CAD命令(有使用条件)
ads_cvunit acutCvUnit 在各种单位制内进行转换
ads_defun acedDefun 定义一个外部函数
 ads_dictadd acdbDictAdd  向指定字典中添加一个非图形对象 
ads_dictnext  acdbDictNext  使程序指针指向字典中的下一个实体,并返回这个指向它的指针 
ads_dictremove   acdbDictRemove 从指定字典中一走一个实体 
ads_dictrname   acdbDictRename 从命名一个字典条目 
 ads_dictsearch acdbDictSearch   对一个给定实体条目,寻找一个字典
 ads_distance acutDistance  求出两点之间的距离 
 ads_distof  acdbDisToF 将一个显示为实数的字符串转化为实数(浮点数) 
 ads_draggen acedDragGen   提示用户动态拖动一个选择集
 ads_entdel acdbEntDel  删除(或者取消删除)图形中的实体 
 ads_entget acdbEntGet  获得一个实体的定义数据 
 ads_entgetx  acdbEntGetX 获得实体数据,包括应用程序注册的扩展数据 
 ads_entlast  acdbEntLast  查找图形中最后一个实体
 ads_entmake acdbEntMake  形成一个新的实体,并把这个实体的定义数据添加到数据库中去 
 ads_entmakex acdbEntMakeX  同acedEntMake()一样,但返回新的实体名称 
 ads_entmod acdbEntMod  修改一个实体的定义数据 
ads_entnext acdbEntNext 查找图形中的下一个实体
ads_entsel acdbEntSel 提示用户以指定一点的方式来选择一个实体
ads_entupd acdbEntUpd 更新实体的屏幕显示
ads_fail acdbFail 简单的打印错误信息并把控制权返回给调用者
ads_findfile acedFindFile 寻找一个指定的文件
ads_fnsplit acedFNSplit  
ads_getangle acedGetAngle 提示用户输入一个角度,要考虑ANGBASE系统变量的当前值
ads_getappname acedGetAppName 获得当前ARX应用程序的文件名称
ads_getargs acedGetArgs 获得在调用外部函数时的命令行参数
ads_getcfg acedGetCfg  
ads_getcname acedGetCName 获取一个命令的本地名或与语言无关的名称
ads_getcorner  acedGetCorner 提示用户输入一个矩形的顶点
ads_getdist acedGetDist 提示用户输入一个距离
ads_getenv acedGetEnv  
ads_getfiled acedGetFileD 用标准的CAD对话框提示用户输入要查找的文件名
ads_getfuncode acedGetFunCode 获得外部函数的码值
ads_getinput acedGetInput 提取传送用户输入函数acedGetXxx()的关键字(可以是任意字符)
ads_getint acedGetInt 提示用户输入一个整数
ads_getkword acedGetKword 提示用户输入一个关键字
ads_getorient acedGetOrient 类似于acedGetAngle(),但零度方向总是向右
ads_getpoint acedGetPoint 提示用户输入一个点
ads_getreal acedGetReal 提示用户输入一个浮点数
ads_getstring acedGetString 提示用户输入一个字符串
ads_getstringb acedGetStringB  
ads_getsym acedGetSym 获取一个LISP符号的值(有使用条件)
ads_getvar acedGetVar 获取一个系统变量的当前值
ads_graphscr acedGraphScr 显示当前图形屏幕
ads_grdraw acedgrDraw 在当前端口画一个矢量
ads_grread acedGrRead 读取输入设备
ads_grtext acedGrText 在屏幕的菜单区/模式区/或状态区显示文本
ads_grvecs acedGrVecs 在当前图形屏幕上画多个矢量
ads_handent acdbHandEnt 通过实体的句柄查找实体
ads_help acedHelp 调用帮助功能
ads_initget acedInitGet 次定用户响应下一次调用输入函数acedGetXxx()时那些值是有效的
ads_inters acdbInters 求出两直线的交点
ads_invoke acedInvoke 在ARX应用程序中调用外部函数
ads_isalnum acutIsAlNum 验证是否是字母或数字
ads_isalpha acutIsAlpha 验证是否是字母
ads_iscntrl acutIsCntrl 验证是否是一个控制字符
ads_isdigit acutIsDigit 验证是否是数字
ads_isgraph acutIsGraph 验证是否是一个图形字符
ads_islower acutIsLower 验证是否是小写字母
ads_isprint acutIsPrint 验证是否是一个可打印字符
ads_ispunct acutIsPunct 验证是否是一个标点符号
ads_isspace acutIsSpace 验证是否是一个空白字符
ads_isupper acutIsUpper 验证是否是一个大写字母
ads_isxdigit acutIsXDigit 验证是否是一个十六进制数字
ads_menucmd  acedMenuCmd 显示并激活菜单
ads_name_clear acdbNameClear 可将ads_name型的数据赋值为空
ads_name_equal acdbNameEqual 可比较两个ads_name型的数据是否相同
ads_name_nil acdbNameNil 可以检测这个实体名或选择集名为空
ads_name_set acdbNameSet 可以复制一个实体名或选择集名
ads_namedobjdict acdbNameObjDict 返回图形字典的实体名
ads_nentsel acedNEnrSel 类似acedNEntSelp(),但使用4*3(而非4*4)作为变换矩阵,不能指定点
ads_nentselp acedNEntSelp 类似acedNEntSel(),但对于嵌套实体返回附加数据,并使程序能指定选择点
ads_newrb acutNewRb 创建一个新的结果缓冲区
ads_osnap acedOsnap 借助指定对象的捕捉方式来捕捉一个点
ads_point_set acdbPointSet 可以将一个点复制给另一个点
ads_polar acutPolar 通过极坐标求一点
ads_printf acutPrintf 在文本屏幕输出一条信息
ads_prompt acedPrompt 在提示行中显示一条信息
ads_putsym acedPutsym 设置LISP符号的值(有使用条件)
ads_redraw acedRedraw 将当前图形屏幕做重画操作
ads_regapp acdbRegApp 注册应用程序的扩展实体数据
ads_regfunc acdbRegFunc 注册一个可以直接调用的外部函数
ads_relrb acutRelRb 释放分配给一个结果缓冲区或一个结果缓冲区链表内存
ads_retint acedRetInt 返回一个整数
ads_retlist acedRetList 返回一个表
ads_retname acedRetName 返回一个实体的名称或选择集的名称
ads_retnil acedRetNil 返回一个Nil值
ads_retpoint acedRetPoint 返回一个点
ads_retreal acedRetReal 返回一个浮点数
ads_retstr acedRetStr 返回一个字符串
ads_rett acedRetT 返回逻辑真
ads_retval acedRetVal 返回一个包含在结果缓冲区的值
ads_retvoid acedRetVoid 返回一个不显示的控制(void)
ads_rtos acdbRToS 将一个实数(浮点数)转化为字符串
ads_setcfg acedSetCfg 添加应用程序数据到系统acad.cfg文件的应用程序数据部分
ads_setenv acedSetEnv  
ads_setfunhelp acedSetFunHelp 为一个通过命令行“C:外部函数名”方式启动的命令注册帮助信息
ads_setvar acedSetVar 设置CAD系统变量的值(有使用条件)
ads_setview acedSetView 为指定端口建立一个3D视图
ads_snvalid acdbSNValid 检查一个符号表名称的合法性
ads_ssadd acedSSAdd 向选择集里添加新的实体(或创建新的选择集)
ads_ssdel acedSSDel 从选择集里删除一个实体
ads_ssfree acedSSFree 释放一个选择集
ads_ssget acedSSGet 获得(生成)一个选择集
ads_ssgetfirst acedSSGetFirst 决定那个对象被选中或支持(grip)
ads_sslength acedSSLength 返回一个选择集中的实体的数量
ads_ssmemb acedSSMemb 检测一个实体是否是选择集里的一个实体(属于选择集)
ads_ssname acedSSName 返回选择集里一个实体的实体名
ads_ssnamex acedSSNameX 描述选择集中对象是如何选中的
ads_sssetfirst acedSSSetFirst 选择或夹持对象
ads_tablet acedTablet 控制数据化仪的标定
ads_tblnext acdbTblNext 扫描指定的符号表,并返回这个表的下一个条目
ads_tblobjname acdbTblObjName 返回一个可传送给acedEntGet()或acedEntMod()的实体标识符,以定位实际实体
ads_tblsearch acdbTblSearch 扫描指定符号表,并以结果缓冲区链表方式返回查找到的指定符号
ads_textbox acedTextBox 找出包含文本实体的矩形框的对角坐标
ads_textpage acedTextPage 显示当前文本屏幕,在显示前先清屏
ads_textscr acedTextscr 显示当前文本屏幕
ads_tolower acutTolower 将字符转为小写
ads_toupper acutToUpper 将字符转为大写
ads_trans acedTrans 降一个点或一个位移从一个坐标系转换到另一个坐标系
ads_undef acedUndef 取消一个外部函数的定义
ads_update acedUpdate  
ads_usrbrk acedUsrBrk 检查用户有没有按下ESC建
ads_vports acedVports 为当前端口配置,返回一个端口描述器表
ads_wcmatch acutWcMatch 检测一个字符串是否与一个通配符模式相匹配
ads_xdroom acdbXdRoom 返回一个实体还能容纳的扩展数据的内存,一个实体做多只能容纳16k
ads_xdsize acdbXdSize 返回扩展数据链表将占用的内存空间(字节)
ads_xfromss acedXfromSS 将一个指定矩阵应用到指定的选择集上
ads_xstrcase acdbXStrCase  
ads_xstrsave acdbXStrSave  
ads_ssGetKwordCallbackPtr acedSSGetKwordCallbackPtr 获得并保存指向回调函数的指针
acs_ssGetOtherCallbackPtr acedSSGetKwordCallbackPtr  
ads_ssSetKwordCallbackPtr acedSSSetKwordCallbackPtr 提供指向一个关键字回调函数的指针
ads_ssSetOtherCallbackPtr acedSSSetOtherCallbackPtr 提供指向“其他”的当前回调函数的指针

二、ARX里定义的数据类型

ads_real typedef double ads_real 下面这些宏全包含在头文件string.h中
ads_point typedef  ads_real ads_point[3] ads_point_set()宏,可以将一个点复制给另一个点
ads_name typedef long ads_name[2]

ads_name_set()宏,可以复制一个实体名或选择集名

ads_name_equal()宏,可以比较两个ads_name型的数据是否相同

ads_name_char()宏,可以将ads_name型的数据赋值为空

ads_name_nil()宏,可以检测这个实体名或选择集名为空

ads_binary

struct ads_binary{

  short clen;//块的长度,单位为字节

  char *buf;//字符指针,表二元数据

};

用于处理二元扩展数据(xdata),这些数据可组成不同长度的集合块(chunks)

三、结果类型码

RTNONE 无结果值 RT3DPOINT 3D点(X,Y,Z)
RTREAL 实数值 RTLONG 长整数(32位)
RTPOINT 2D点(X和Y;Z=0.0) RTVOID 空符号
RTSHORT 短整数(16位) RTLB 序列起始(用于嵌套序列)
RTANG 角度 RTLE 序列结束(用于嵌套序列)
RTSTR 字符串 RTDOTE 点(用于点对)
RTENAME 实体名 RTT LISP中的T(代表真)
REPICKS 选择集名 RTNIL LISP中的nil(代表空)
RTORINT 方位 RTDXF0 用于DFX的组码0(只与acutBulidList()一起)

四、函数返回结果类型代码

RTNORM 用户输入一个有效值,表示函数调用成功
RTERROR 表示函数调用失败
RTCAN 用户取消了当前函数的运行过程,即按下了ESC
RTREJ AutoCAD拒绝一无效的要求
RTFAIL AutoLISP链接失败
RTKWORD 用户输入一个关键字或任意文本

注:并不是全部ARX函数都如此,有特殊的函数值返回值不同(会有RTNONE或RTSTR返回值)

五、其他代码

#define TURE 1 表示为真
#define FALSE 0 表示为假
#define EOS 表示字符中止的符号
#define PAUSE 在命令参数中代表暂停
#define GOOD 1 表示真
#define BAD 0 表示假

六、用户输入控制位代码:由函数acedInitGet()先发控制

RSG_NUNULL 不允许空输入
RSG_NOZERO 不允许零值
RSG_NONEG 不允许负值
RSG_OTHER 允许任意输入
RSG_NOLIM 不检测绘图界限,即使LIMCHECK为0
RSG_DASH 当绘图带拖动功能的线或方框时,使用虚线
RSG_2D 忽略3D点的Z坐标(只适用于acedGetDist()函数)

七、对象捕捉编码及设置对象捕捉代码

// 获取捕捉模式
struct resbuf rb;
acedGetVar(_T("osmode"), &rb)

// 设置捕捉模式
struct resbuf *newsnap;
newsnap = ads_bulidlist(RTSHORT, n, 0);
acedSetVar(_T(osmode), newsnap);
acutRelRb(newsnap);

 

 

 acedSSGet函数的选择模式选项

值(选择模式) 说明
NULL 单点选择(如果制定了pt1)或者提示用户选择(如果pt1的值为NULL)
# 非集合选择模式(包括All、Last、和Previous选择模式)
. 用户选择模式
:? 其他回调选择模式(Other callbacks)
A 全部选择
B 框选模式
C 窗交选择模式
CP 圈交选择模式(选择多边形(通过在待选对象周围指定点来定义)内部或与之相交的多有对象)
:D 允许复制选择模式(Duplicates Ok)
:E 小孔中的所有实体(Everything in aperture)
F 栏选模式
G 选择编组
I 获得当前图形窗口中已经选择的实体(PickFirst 选择集)
:K 键盘回调选择模式(Keyword callbacks)
L 选择最近一次创建的可见实体
M 指定多次选择而不高亮显示对象,从而加快对复杂对象的选择过程
P 选择最近创建的选择集
:S 单一对象选择模式
W 窗口选择模式
WP 圈围选择模式
X 过滤选择模式

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2020-12-23 16:06  二十一19  阅读(2045)  评论(0编辑  收藏  举报