Arx
pangshaohua
这个作者很懒,什么都没留下…
展开
-
Win10或Win8下ObjectARX2015 Wizard向导创建项目失败解决方法
objectARX 2015 Wizard安装向导在Win8/win10下无法创建项目的解决方法总结by edata @2017-5-1objectARX 2015 Wizard安装向导在Win8/win10下无法创建项目的解决方法因为Win8/Win10对系统盘(默认c:)使用了高级权限管理,所以在此盘下操作文件的修改工作都需要管理员权限才行。基于这个原因,导致非管理员安装Wiz转载 2017-11-23 13:05:32 · 647 阅读 · 0 评论 -
DWG文件生成函数的实现
DWG文件生成函数的实现 如要为新类实现dwgOutFields()和dwgInFields()函数时,必须首先调用assertReadEnalbed()或assertWriteEnalbed()函数保证对象打开模式正确。派生类下一步所必须做的事是在父类中调用同样的函数(例如,d原创 2011-07-11 11:13:47 · 1744 阅读 · 0 评论 -
why gpDesc is NULL?
I have definde a entity derived from AcDbEntity.But when i use new to create a entity, i find that myentity'gpDesc is null. So i can not app原创 2011-07-07 17:04:23 · 776 阅读 · 0 评论 -
AutoCAD的启动参数
1. “/c”开关 “/c”开关用于指定AutoCAD系统启动时所使用的硬件配置文件。用户可以指定任意一个扩展名为“.CFG”的文件名作为配置文件,如果该文件不存在,AutoCAD将自动创建该文件。缺省的配置文件名为“acad2004.cfg”。 用户可利用该参数在不同的快捷方式中设置不同的配置文件,这样在启动AutoCAD系统时可实现多配置的选择。 使用该参数的例子如下: "D:/Program Files/AutoCAD 2002/acad.exe" /c "D:/AutoCAD Files/mycof原创 2010-11-10 16:40:00 · 5062 阅读 · 2 评论 -
用arx 如何让 cad关闭文档时,不提示保存。
<br />最近,有一个这样的需求,所以把解决方法给贴出来一下。<br />首先,cad判断图纸是否被修改过,是根据一个变量的值来判断的,这个变量就是 DBMOD,很多人肯定会想到,那我把这个变量的值给修改成0或者是-1不就行了吗? 很不幸告诉你,这个变量是只读的。那么怎么办呢? 幸好桌子公司还挺厚道的,导出了一个接口给我们来修改database的这个flag,只不过是在官方的sdk文档里没有给出来而已,这个接口的原型如下:<br />//声明设置数据库模式的函数<br />extern long acdb转载 2010-11-10 16:37:00 · 2829 阅读 · 0 评论 -
获得文件路径的几种方法
<br />获得当前绝对路径的方法<br />在工程代码中加入如下代码即可获得当前绝对路径:<br /> char szFileName[MAX_PATH]; GetModuleFileName(NULL, szFileName, MAX_PATH); CString strFileName = szFileName; if ( '//' !=szFileName[strlen(szFileName)-1]) { int nPos = strFileName.ReverseFind(原创 2010-09-29 13:14:00 · 1212 阅读 · 0 评论 -
拉伸图形形成solid实例
<br />//将实体加入到模型数据库中int addEntityToModelSpace(Acad::ErrorStatus& es,AcDbObjectId& entityId,AcDbEntity *pEntity){ //创建块表 AcDbBlockTable *pBlockTable; acdbHostApplicationServices() -> workingDatabase() ->getSymbolTable(pBlockTable,AcDb::kForRead原创 2010-06-09 11:07:00 · 1077 阅读 · 0 评论 -
对不平行的两条直线进行连接
功能:对不平行的两条直线进行连接,(若是有角度,则以交点连接,若是在同一直线上,但不相连,则把其中的一条连接起来)注意:本程序目前只能做直线的连接功能,由于防止选择实体时有误,因此对实体所在的图层做了处理,即两条曲线必须是同一图层才能连接原创 2010-06-04 09:28:00 · 896 阅读 · 0 评论 -
绘制多边形并计算其面积的一个demo
绘制多边形并计算其面积的一个demo int drawPolyline(){ Acad::ErrorStatus es = Acad::eOk; AcGePoint3dArray vertexArray; int iErrSta = 0, i = 0; while (1) { //由于是多边形,即最终要封闭,所以就不需要提示用户来封闭它,如果 //多边形原创 2010-04-09 10:01:00 · 1668 阅读 · 2 评论 -
ObjectARX调试问题大搜集
我认为开发中常见的有下面几个错误:1、忘记关闭数据库中的对象,这是最为常见的一个错误。在下面的情况下都需要关闭对象: (1)创建新对象并添加到数据库中,或者使用符号表和符号表记录。这在最基本的创建实体程序中可以看到。 (2)使用acdbOpenObject、acdbOpenAcDbEntity和acdbOpenAcDbObject 函数打开一个对象之后。 (3)使用遍历器遍历原创 2010-01-13 08:31:00 · 2568 阅读 · 0 评论 -
判断一个点是否在面域上的边上), double dMinDist = 1;
int isPointOnRegion( bool& bIsOn, AcGePoint3d pt,AcDbObjectId regionId,double dMinDist ){ Acad::ErrorStatus es; bIsOn = false ; AcDbRegion* pRegion ; es = acdbOpenObject( pRegion, regionId, AcDb::kF原创 2010-01-15 08:43:00 · 780 阅读 · 0 评论 -
实现ZOOM的功能啊
//////////////////////////////////////////////////////////////////////////////// This is command ZOOMEXT, by Fenton Webb [Apr/17/2002], DevTech, Autodeskvoid asdkzoomExt(){// get the extents of the d原创 2010-01-13 08:38:00 · 4022 阅读 · 0 评论 -
resbuf的理解
resbuf(Result buffer structure:结果缓存区表)是用来处理所有AutoCAD的基本数据类型的.struct resbuf { struct resbuf *rbnext; //指向下一个resbuf的指针 short restype; //原创 2010-03-23 14:04:00 · 4969 阅读 · 2 评论 -
扩展数据
扩展数据(xdata)是由应用程序通过ObjectArx或AutoLISP建立并添加到任何对象上.扩展数据包含一个应用程序使用的结果缓冲区(resbuf)链接表.数据与在1000至1071范围内的DXF组码相对应.该方法节省空间,在向对象添加少量数据时是很有用的.然而,扩展数据不能超过16KB,其数据只能在既有的DXF组码和类型范围内.void printXdata(); //原创 2010-03-22 13:38:00 · 2762 阅读 · 3 评论 -
通过用AcDbObject或者AcDbEntity派生的类,无法用代理直接取代
今天遇到了AcDbObject或者AcDbEntity派生的类,无法用代理直接取代从理论上或者AutoDesk的相关资料是可以的最后经过实践,终于找到相应的原因是在相应的dwgInFile和dwgOutFile中没有对基类的读写文件进行调用即没有调用相应的AcDbObject::原创 2011-07-08 11:02:28 · 1976 阅读 · 0 评论 -
用arx 如何让 cad关闭文档时,不提示保存。
最近,有一个这样的需求,所以把解决方法给贴出来一下。首先,cad判断图纸是否被修改过,是根据一个变量的值来判断的,这个变量就是 DBMOD,很多人肯定会想到,那我把这个变量的值给修改成0或者是-1不就行了吗? 很不幸告诉你,这个变量是只读的。那么怎么办呢? 幸好桌子公司还挺厚道的转载 2011-07-08 11:15:23 · 2203 阅读 · 1 评论 -
arx中的代理对象。。
何谓代理对象?当主应用程序没有加载时,打开了存在该应用程序中定义的对象的DXF或DWG文件,ACAD就必须为其创建一个代理对象,并支持对其很简单、基本的操作既然没有加载主应该程序,那么代理对象怎么知道,该对象对应的图形应该怎么显示?需要说明的是,DWG文件中,通常都保存了,最后一转载 2011-07-08 10:55:12 · 868 阅读 · 0 评论 -
在ARX中通过COM在ACAD中添加菜单和工具条
http://blog.csdn.net/habit2/article/details/438318代码如下:extern "C" AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt){ switch (msg) { case AcRx::kInitAppMsg: // C转载 2017-11-23 12:42:12 · 2466 阅读 · 0 评论 -
AcGe类的误差
struct AcGeContext { AcGeTol gTol; void (* gErrorFunc)(); void (* gOrthoVector)(const AcGeVector3d&,AcGeVector3d&); void* (* gAllocMem)(size_t); void* (* gAllocMemLeak)(size_t, const char *,原创 2014-12-25 15:23:54 · 1909 阅读 · 1 评论 -
ARX二次开发中使用DAO方式访问数据库,导致AutoCAD2004及以上版本退出时报错的解决方法
使用ObjectARX对AutoCAD进行二次开发,当使用DAO方式访问数据库时,会导致AutoCAD2004及以上版本退出时报错,解决方法如下:在UnloadApplication()函数未尾(处理case AcRx::kUnloadAppMsg时调用)添加如下代码即可: void UnloadApplication(){ // NOTE: DO NOT edit转载 2014-10-16 17:09:09 · 1443 阅读 · 0 评论 -
解决附加进程调试时出现"无法命中断点,还没有为文档加载任何符号这个问题"
在vs2005中调试arx时一定要注意与以前的附加进程相比有所改动,这是由于当 Visual Studio 调试器附加到一个正在运行的进程时,该进程可能包含一种或多种类型的代码。调试器能够附加到的代码类型有本机、托管、T-SQL 和脚本类型。在“附加到进程”对话框中显示并选择这些代码类型。所以在附加进程调试时,一定要选中附加到->选择->调试以下类型代码->本机,这样上面的问题就得以解决!原创 2011-10-21 14:50:02 · 8788 阅读 · 0 评论 -
包含arxHeader.h的工程中调用了标准fstream, sstream, iosteam等引发链接问题的解决方案
问题的提出: 最近在施行多平台编译,原来没有的问题,由于维护多平台而涌现了出来,在其中的一个工程中,用到了fsteam等类库,当初在vs2002中,没有加arxHeader.h编译没问题,由于要向多平台转换,因此加入了arxHeader.h,因为arxHeade原创 2011-10-18 15:00:53 · 1730 阅读 · 0 评论 -
包含arxHeader时定义CMESH引发的错误
今天在编译一个程序的时候出现了这样的错误CMESH.h(13): error C2011: “__unnamed” : “enum”类型重定义 ObjectArx\inc\acappvar.h(33) : 参见“__unnamed”的声明CMESH.h(原创 2011-10-18 10:54:57 · 1144 阅读 · 0 评论 -
Arx中文字的三维显示(修改版)
AutoCAD中,文字的显示是通过文字位置,所在平面,以及文字对应的角度,来确定文字如何显示。对于文字位置和所在的平面,可以很容易的确定。那对于文字的角度呢?它是X轴与文字方向的夹角吗?如果文字应该在的方向是个三维向量,那AcDbText::setRotation() 的角度原创 2011-09-23 15:42:47 · 1561 阅读 · 0 评论 -
objectarx中angeOnPlane()函数的真实含义
问题的提出是由同事的一个提问引出的,同事问一个向量vector与一个平面plane的夹角怎样获得?当时在arx的帮助文档中查看相关的API函数,发现angleOnPlane()函数很相似,但是从描述上又不是很正确,心想如果是描述一个适量与在平面投影的夹角用如此多的评议描述是不原创 2011-09-09 14:30:35 · 2902 阅读 · 0 评论 -
用arx删除自定义的字典
今天遇到个图纸,里面有个自定义的字典出错了,想删除掉自定义的字典,但是在AutoCAD中没找到相应的命令,特此写了一个,很简单 void deldict(){ AcDbDictionary* pNamedobj; acdbHostApplicationSe原创 2011-09-06 14:46:39 · 1191 阅读 · 0 评论 -
内存调试#define new DEBUG_NEW
在用vc时,利用AppWizard会产生如下代码:#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif原创 2011-08-01 14:33:29 · 1097 阅读 · 0 评论 -
AcDbObjectId、AcDbHandle与AcDbStub之间的关系
近期,由于项目的需要做一套撤销恢复机制,特地研究了一下AutoCAD(下文称为ACAD)的撤销恢复机制,ACAD的撤销和恢复是无限次的,也是就说,只要是同在一个会话(打开到关闭的一个过程)中的操作你都可以撤销到原来的状态或者是重做刚才被撤销的状态。而要实现整个一套机制的基础就包涵转载 2011-07-18 10:48:15 · 3009 阅读 · 0 评论 -
sendStringToExecute之问
在学习单位自助开发的源代码,遇到个如下这行代码:acDocManager->sendStringToExecute(curDoc(),"\003\003DigitalDiduanmian ")我在帮助文件里看了下AcApDocument Class 也没能搞懂这行代码。特别是"\原创 2011-07-22 10:56:07 · 5985 阅读 · 0 评论 -
解决加载arx时,出现非法异常的方案
This can happen when one of the MS Jet Database Engines DLL files (dao360.dll) is not registered at all or not registered correctly. I am not sure what might cause this to happen, but below are some s原创 2010-01-08 09:43:00 · 5040 阅读 · 0 评论 -
如何交互生成面域对象
AcDbObjectId eId; AcDbEntity * ent; ads_name en; int rc = acdbEntLast(en); //获取数据库中任意一个实体 if (rc != RTNORM) { acutPrintf("the database has nothing./n", rc); } if(!acedCommand(RTS原创 2010-01-07 08:58:00 · 891 阅读 · 0 评论 -
清除AutoCAD中的Undo棧
acedCommand(RTSTR,"Undo",RTSTR,"C",RTSTR,"N",0); acedCommand(RTSTR,"Undo",RTSTR,"A",0);原创 2010-01-29 11:28:00 · 845 阅读 · 0 评论 -
explode()函数使用
static AcDbObjectId AppendEntity(AcDbEntity *pEnt){AcDbDatabase *pDb = acdbHostApplicationServices()->workingDatabase();AcDbBlockTable *pBt;pDb->getBlockTable(pBt, AcDb::kForRead);AcDbBlockTableRecord原创 2010-01-31 16:48:00 · 1117 阅读 · 0 评论 -
getOsnapPoin()函数使用
static void test(void){ads_name ent; AcGePoint3d pickPt(0, 0, 0); if(acedEntSel(_T("/n请选择圆、圆弧或椭圆对象:"), ent, asDblArray(pickPt)) != RTNORM) { return; }AcDbObjectId entId; acdbGetObjectId(entId, ent)原创 2010-01-31 16:42:00 · 1201 阅读 · 0 评论 -
ObjectARX:C# ObjectARX--起步
注:适合于有C++ ObjectARX开发经验的朋友。1. 新建一个C# 的库工程,名字就叫做HelloWorld2. 添加acdbmgd和 acmgd这两个引用,它们都放在你的AutoCAD安装目录里面3. 把启动程序相设置为AutoCAD准备工作就这么简单。加入第一句语句:[assembly: Autodesk.AutoCAD.Runtime.CommandClass(typeof(Hello转载 2010-01-29 09:01:00 · 2070 阅读 · 0 评论 -
ObjectARX
1. ObjectARX的介绍: ObjectARX是AutoDesk公司针对AutoCAD平台上的二次开发而推出的一个开发软件包,它提供了以C++为基础的面向对象的开发环境及应用程序接口,能真正快速的访问AutoCAD图形数据库。 与以往的 AutuCAD 二次开发工具 AutoLISP 和ADS不同,ObjectARX应用程序是一个DLL(动态链接库),共享AutoCAD的地址空间,对A原创 2010-01-26 22:41:00 · 1555 阅读 · 0 评论 -
Regen的等价实现
1、直接调用实体对象本身的成员函数: 先把生成实体加入数据库,关闭指针,获取ID,再把对象打开,运行其成员函数Draw(AcDbEntity::draw)2、分为二步:(使用宏:actrTransactionManager) ①:运行其成员函数:actrTransactionManager->flushGraphics(); ②:运行全局函数:acedUpdateDisplay();原创 2010-01-26 08:20:00 · 1490 阅读 · 1 评论 -
ObjectARX的基础
ObjectARX为AutoCAD平台下开发,意味着你省去了AutoCAD平台的研究,这个平台的使用不能说完美,但,多少年的积累下来和世界各地的反馈意见,实属精品系列了。一个好的平台并不能包罗万象,通用的东西有了,那就有特别的东西,在设计、制造、研究等多领域内完成领域内独特的数据管理、成果输出等,都需要在平台上搭建自己的工作空间。ObjectARX是一个好东西,采用高效图形平台,只要你愿意原创 2010-01-26 22:39:00 · 1242 阅读 · 0 评论 -
AutoCAD平台下ObjectARX应用
目前国内很多领域的CAD(computer aided design)都采用AutoDesk公司的CAD系统,国内广泛使用的是AutoCAD,其它产品使用的的确不多。AutoCAD使用时间长了,无论如何增加技巧,都无法解决部分工程技术问题,或者为可模块化的工作不得不进行反复、细致的机械劳动,想想那些日子不知道是怎么熬过来的。 还好,Autodesk提供AutoCAD平台下采用Object原创 2010-01-26 22:38:00 · 758 阅读 · 0 评论 -
Arx中的点点滴滴
ads_point与AcGePoint3d的相互转换:ads_point ->AcGePoint3d :asPnt3d示例:ads_point center, startPt; if (acedGetPoint(NULL, "/nLocate center of polygon: ", center) != RTNORM) { return Acad::eInva原创 2010-01-26 08:23:00 · 1197 阅读 · 0 评论