网站大量收购独家精品文档,联系QQ:2885784924

ARX函数集合b.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ARX函数集合b

ARX函数集合b objectARX 常用功能实现集合 一 在ARX中禁用AutoCAD的某个命令 以LINE命令为例,在程序中加入下面的一句即可禁用LINE命令: acedCommand(RTSTR, undefine, RTSTR, line,RTNONE); 下面的语句则可恢复LINE命令的定义: acedCommand(RTSTR, redefine, RTSTR, line,RTNONE); 二 在对话框中预览DWG文件 使用acdbDisplayPreviewFromDwg函数,具体的方法为: char fileName[100]; strcpy(fileName, C:\test.dwg); bool es; HWND pWnd; CFrameWnd *pFrame = (CFrameWnd*)GetDlgItem(IDC_PICTURE); es = acdbDisplayPreviewFromDwg(fileName, pFrame-m_hWnd); 上面的代码将在一个Picture控件中显示指定的图形。 另外,需要包含“dbmain.h”头文件。 三 通过ARX更改AutoCAD窗口的标题名称 CMDIFrameWnd *pp; pp=acedGetAcadFrame(); pp-SetWindowText (yourName); pp-UpdateWindow (); 四 获得当前数据库 在ARX编程中,经常需要使用当前数据库,例如需要获得当前图形中设置的文字样式、标注样式等。 要获得当前数据库,都可以直接使用下面的方法: AcDbTextStyleTable *pTextStyleTAble; AcDbObjectId textstyleId; textstyleId=acdbHostApplicationServices()-workingDatabase()-textstyle(); 如果用acadCurDwg来代替acdbHostApplicationServices()-workingDatabase(),也能得到同样的结果。 五 将一个图插入另一个图(两种方法) 在实践中常常要将外部的图形文件source.dwg中插入到另外一个图形中或者当前图形中.以插入到当前图形dest.dwg为例. 为了将一个source.dwg插入dest.dwg中,首先要找到source.dwg这个文件. 我们可以使用各种基本的技术和相应的规则从你的机器上或PDM数据库中检索到你要插入的source.dwg, 返回来一个字符窜sFileName代表整个文件及其路径. 然后创建一个空的数据库pNewDb读入source.dwg. AcDbDatabase *pNewDb =new AcDbDatabase(Adesk::kFalse); //在这里一定要用Adesk::kFalse acDocManager-lockDocument(acDocManager-curDocument()) ;//如果确定你不需要LockDocument, 这一行可以不要 es=pNewDb-readDwgFile(sFileName , _SH_DENYNO,false); if (es!=Acad::eOk) { acutPrintf(\nThe file %s cannot be opend,sFileName); return; } 这样,source.dwg以经用pNewDb来表示了. 我们用pDb来表示当前数据库 AcDbDatabase *pDb; pDb =acdbHostApplicationServices ()-workingDatabase () ; 现在,我们用Insert来插入数据库. Insert有两种用法,一种是直接insert, source.dwg中的图元实体被分散地插入pDb中 pDb-insert( AcGeMatrix3d::kIdentity, pNewDb );//这里假定不对source.dwg做比例和转角的变换. 如果我们在这里结束程序,我们能看到source.dwg已经被插入,但不是一个图块. 另外一种插入法是要求插入后source.dwg成为一个图块,图块的attribute也要从source.dwg中得到.这种方法要做大量的工作.首先运行insert() CString pBlockName=”TestBlock”; AcDbObjectId blockId; if((es=pDb-insert(blockId, pBlockName,pNewDb, tr))==Acad::eOk) { acutPrintf(\ninsert ok\n); } else { AfxMessageB

文档评论(0)

153****9595 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档