- 博客(34)
- 收藏
- 关注
原创 CAD带文字线型的文字偏移bug介绍
应惊惊要求做个此bug的简单介绍bug图示当直线有Z值,且Z值均不相等,如果需要正立文字的时候,就会出现文字线型的文字偏移。bug说明AutoCAD2011开始,带文字的线型支持文字正立U模式,便于阅读,效果比较线型正立涉及CAD版本介绍AutoCAD 中望CAD 浩辰CAD BricsCAD CAD2011-2023支持正立,空间直线有bug zwcad2017-2022支持正立,无bug gcad2022,支持正立,无bu..
2022-04-27 15:20:47
820
原创 ObjectARX 2013~2021向导中添加命令的一种方法
从ObjectARX 2013开始,ObjectARX向导取消了工具条,工具条可以添加管理命令,而没有工具条,添加命名比较麻烦,一般都是复制粘贴修改向导提供的命令名,个人感觉比较麻烦.所以我觉得使用vc助手va_x的代码片段功能可以实现简单的命令添加.方法如下片段参考代码static void $SymbolName$$SymbolContext$(){ $end$}ACED_ARXCOMMAND_ENTRY_AUTO($ClassName$,..
2022-03-31 13:49:41
703
原创 ObjectARX属性块参照遍历属性值实例代码
属性块属性值遍历参考代码. //获取块参照属性 ads_name ent; ads_point pt; if (RTNORM != acedEntSel(NULL,ent,pt)) { acutPrintf(_T("\n未选择有效对象!")); return; } AcDbObjectId objId; acdbGetObjectId(objId,ent); AcDbObjectPointer<AcDbBlockReference> pBl
2022-03-31 13:47:11
782
原创 浅谈ObjectARX智能指针AcDbObjectPointer的用法
前言用ARX智能指针打开对象,可以不在乎是否close,但同时也要注意这个变量的作用域(生命周期)问题,ARX智能指针,他的原理是利用类的析构造函数特性自动关闭对象.这里的智能指针指的是AcDbObjectPointer这一类使用AcDbObjectPointerBase基类派生的类模板统称.下面是打开示例.void testOpen(){ ads_point pt; ads_name ent; if (RTNORM != acedEntSel(NULL,ent,pt)) {
2022-03-31 13:46:18
1586
原创 VS2017中使用ObjectARX 2019 wizard的 ArxWizMFCSupport向导出现的bug修复前因后果
VS2017中使用ObjectARX 2019 wizard的 ArxWizMFCSupport向导出现的bug,提示脚本错误.实际原因类似在arx2012向导的问题,需要修改C:\Program Files (x86)\Autodesk\ObjectARX 2019 Wizards\ArxWizMFCSupport\HTML\1033下的default.htm首先查找vs2017的VsWizard.dll文件是否注册,如果注册了,会在注册表中有一个 计算机\HKEY_CLASSE...
2022-03-31 13:43:59
716
原创 ObjectARX 使用std::sort坐标点排序带图元排序例子
有不少人是从autolisp转向ObjectARX开发,习惯了一些lisp的数据结构.虽然objectARX编程和lisp编程是不同编程语言,但是编程思想是可以相互借鉴的.就拿这个点表排序来说,在lisp中常用的方式就是构建一个(点 图元名)的表集合,使用vl-sort来排序.而在ObjectARX中,同样我们也可以实现这样的操作..排序的时候按点坐标排序,点附带了对象ID,便于排序后处理实体对象..我们这里使用一个struct来构造 点 和对象ID的结构体;代码 //定义结构体 pt
2022-03-31 13:43:20
592
1
原创 ObjectARX 常见编译错误解决方式记录
C1189 Winver 0x501 fatal error C1189: #error: MFC does not support WINVER less than 0x0501.方式一&方式二注释掉后,vs会自动从WinSDKVer.h头文件获取_WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h)C1189 RTCc fatal error C1189: #error: /R
2022-03-31 13:40:53
1555
原创 简单模拟多段线绘制Pline命令过程的撤销功能
#简单模拟多段线绘制Pline命令过程的撤销功能###这是关于多段线pline命令中的撤销功能的简单代码代码使用了事务管理器来执行增加对象和撤销处理.####代码 /// <summary> /// 简单模拟多段线绘制过程的撤销功能. /// code by edata 2020-3-11 /// </summary> /// <remarks>简单模拟多段线绘制过程的_u撤销功能.仅考虑了UCS问题</remarks> /
2022-03-31 13:39:55
1130
原创 ObjectARX创建带文字的线型实例代码
ObjectARX创建带文字的线型实例代码 AcDbLinetypeTable* pLinetypeTable=NULL; Acad::ErrorStatus es = acdbHostApplicationServices()->workingDatabase()->getLinetypeTable(pLinetypeTable,AcDb::kForWrite); if (Acad::eOk != es) { return; } AcDbObjectId tx
2022-03-31 13:37:05
766
原创 ObjectARX JIG简单示意,实现正交例子
jigcpp主要修改附上jigcpp文件// (C) Copyright 2005-2007 by Autodesk, Inc. //// Permission to use, copy, modify, and distribute this software in// object code form for any purpose and without ...
2022-03-31 13:33:37
870
原创 ObjectARX 创建AcDbLeader引线附着块对象实例
三点引线附着块参照实例 // 创建AcDbLeader引线 ads_point p1,p2,p3; if (RTNORM != acedGetPoint(NULL,_T("\n请选择引线第一点: "),p1)) return; if (RTNORM != acedGetPoint(p1,_T("\n请选择引线第二点: "),p2)) return; if (RTNOR...
2022-03-31 13:31:44
700
原创 wblockCloneObjects从块定义写块到外部文件
wblockCloneObjects从块定义写块到外部文件简单例子 AcDbObjectIdArray objIds; ads_name ent; ads_point pt; if (RTNORM != acedEntSel(_T("\n选择一个块参照对象:"),ent,pt)) { acutPrintf(_T("\n未选择有效对象!")); return; }
2022-03-30 08:40:22
690
原创 AcDbRegion面域交集布尔运算简单实例
ads_name ss; struct resbuf *rb=acutBuildList(RTDXF0,_T("REGION"),RTNONE); acutPrintf(_T("\n请选择两个需要布尔运算(交集)的面域: ")); if(RTNORM != acedSSGet(NULL,NULL,NULL,rb,ss)) { acutRelRb(rb); return; ...
2022-03-29 16:40:34
695
原创 ObjectARX插入属性块简单例子
//插入属性块简单例子2020-10-11 by www.cnblogs.com/edata //指定块名 CString blkName=_T("123"); //指定块插入点 AcGePoint3d insertPoint(100,100,0); //ARX智能指针打开块表 AcDbBlockTablePointer pBlkTbl(curDoc()->database(),AcDb::...
2022-03-29 16:39:46
483
原创 ObjectARX选择集快还是遍历块表记录获取实体objectid快?
这是根据拾取点来获取 点实体AcDbPoint 的结果,明显遍历更快。虽然有点以偏概全,但对于条件固定的选择,使用遍历是个更高效率的选择。以下是测试源码。 static void getpoint1() { ads_name ss; ads_point pt; if (RTNORM!=acedGetPoint(NULL,_T("\n选择点: "),pt)) { return; } clock_t start,finish; double to..
2022-03-29 16:37:45
563
原创 ObjectARX延时动画效果简单示意
测试代码如下 ads_point pt; ads_name ent; if (RTNORM != acedEntSel(_T("\n选择对象: "),ent,pt)) { return; } AcDbObjectId objId; acdbGetObjectId(objId,ent); if (objId.isNull()) {...
2022-03-29 16:36:36
260
原创 ObjectARX延时动画之定时器简单示意
使用定时器可以延时操控cad,不影响视图操作。如果你在定时器运行期间使用命令,可能会导致定时器生成的实体无法刷新,变为当前不可见实体。示例代码//声明静态全局变量static int nPrintNumber=0;void CALLBACK MyCopyFunc(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime);//回调函数声明void CALLBACK MyCopyFunc(HWND hwnd,UINT uMsg,UINT idEv...
2022-03-29 16:35:32
340
原创 ObjectARX递归AcArray数组组合函数
ObjectARX递归AcArray数组组合函数图文by edata ,转载注明出处http://www.cnblogs.com/edataObjectARX QQ群: 630401507 (仅ObjectARX)AutoCAD.net QQ群: 193522571 (ObjectARX\AutoLisp\AutoCAD.net)函数源码为了通用,写为函数模板.代码如下 // 指定组合数量递归函数模板(1 2 3) n=1 => (1) (2) (3...
2022-03-29 16:34:10
317
原创 也谈vs2019手工新建ObjectARX2021项目
条件准备 ARXSDK 和 VS2019(要选择安装c++,mfc,windows10SDK) 略过!ARXSDK可以参考 https://www.cnblogs.com/edata/p/14243995.htmlVS2019自行解决.新建mfc动态链接库输入项目名称和项目保存位置默认使用共享mfc dll即可解决方案资源管理中选择项目右键属性,更改平台为x64.高级 高级属性改目标扩展名为arx添加ARXSDK包含目录.添加ARXSDK库目录切换当前编译平台为x64,选择
2022-03-29 16:32:31
973
原创 也谈vs2010手工新建ObjectARX2013项目
新建MFC Dll项目,设置项目名称和保存位置.默认即可解决方案右键项目属性修改目标扩展名为.arx,注意当前平台为win32修改md模式修改_DEBUG预定义为_NDEBUG添加包含目录,当前win32添加 inc和inc-win32目录添加库目录,lib-win32选择链接器,常规,选择输出路径,右键复制修改调试,命令为cad的exe路径,命令参数为小写的LD+ 复制的输出地址 /ld "$(OutDir)$(TargetName)$(TargetExt)"保存修
2022-03-29 16:31:52
347
原创 也谈vs2017手工新建ObjectARX2019项目
新建MFC Dll项目选择使用共享MFC右键项目属性选择所有配置,所有平台,修改目标扩展名为.arx选择调试,在命令中浏览或编辑acadexe路径选择链接器 ,找到输出文件地址,复制备用回到调试在命名参数添加小写/LD+输出文件路径 /ld "$(OutDir)$(TargetName)$(TargetExt)"应用设置配置Win32平台,保存选择所有配置不变,平台改为win32,选择c++目录,添加包含ARXSDK路径添加库目录应用设置配置x64平台保存选择
2022-03-29 16:31:03
585
1
原创 ObjectARX通过选定的实体获取所有组名示例
效果方式一通过实体所在对象的永久反应器获取组对象 ads_name ent; ads_point pt; if (RTNORM != acedEntSel(_T("\n选择对象: "),ent,pt)) { return; } AcDbObjectId objId; acdbGetObjectId(objId,ent); AcDbEntityPointer pEnt(objId,AcDb::kForRead); Acad::ErrorStatus es=pEn
2022-03-29 16:29:02
608
原创 ObjectARX使用事务简单示例
AcDbDatabase *pDb = acDocManager->mdiActiveDocument()->database(); if (!pDb) { acutPrintf(_T("\nNullDabase!")); return; } AcTransaction *pTrans = actrTransactionManager->startTransaction(); if (!pTrans) { acutPrintf(_T("\..
2022-03-28 11:52:35
626
原创 AutoCAD模型空间多视口之叠加视口应用
###模型空间的视口和图纸空间的视口一样可以叠加###叠加玩法ARX代码 //复制重叠模型空间当前视口 AcDbDatabase *pDb=curDoc()->database(); if (NULL == pDb) { acutPrintf(_T("\n获取数据库指针失败!")); return; } AcDbViewportTablePointer pTbl(pDb,AcDb::kForWrite); Acad::ErrorStatus es= pTbl.
2022-03-27 17:38:37
602
原创 获取标注文字包围盒简单实例
标注文字处于标注块中 ads_point pt; ads_name ent; if (RTNORM != acedEntSel(_T("\n选择一个标注"),ent,pt)) { return; } AcDbObjectId objId; acdbGetObjectId(objId,ent); AcDbObjectPointer<AcDbDimension> pDim(objId,AcDb::kForRead); Acad::ErrorStatus es
2022-03-27 17:37:51
472
原创 ObjectARX自定义实体中使用实体填充之类似多段线带弧形宽度
###代码多段线带弧形宽度闭合效果 assertReadEnabled () ; AcGePoint2d p1(0,0); AcGePoint2d p2(10,0); AcGePoint2d p3(10,10); AcGePoint2d p4(0,10); AcGePoint2d p1x(0,1); AcGePoint2d p2x(9,1); AcGePoint2d p3x(9,9); AcGePoint2d p4x(0,9); AcArray <AcGeCurve2d*>
2022-03-27 17:37:06
603
原创 遍历动态块块定义的可见性名称方法
测试代码由于autocad没有公布动态块块定义的相关接口,无法遍历到可见性的名称列表,现有的api只能得到名称,不能确定是可见性还是其他属性,不能够精确的判断。此例子可以通过遍历数据库所有对象,通过dxf名称获取可见性句柄,通过entget方式获取相关信息。代码如下。 AcDbDatabase *pDb=curDoc()->database(); AcDbHandle endHandle= pDb->handseed(); for (AcDbHandle h=pDb->bl
2022-03-27 17:36:14
850
原创 ObjectARX标注公差简单实例
代码 ads_name ent; ads_point pt; if (RTNORM != acedEntSel(_T("\n选择对象: "),ent,pt)) { return; } AcDbObjectId objId; acdbGetObjectId(objId,ent); AcDbObjectPointer<AcDbDimension>pDim(objId,AcDb::kForWrite); Acad::ErrorStatus es=pDim.op
2022-03-27 17:35:33
314
原创 ObjectARX单点JIG正交简单例子
代码//-----------------------------------------------------------------------------//- BeamLineJig.h#pragma once//-----------------------------------------------------------------------------class CBeamLineJig : public AcEdJig {public: //- Array of i
2022-03-27 17:32:11
452
原创 ObjectARX 实体双击之消息截获
高版本的双击参杂了cui自定义双击处理,继承AcDbDoubleClickEdit的双击协议可能无效,因此可以尝试从消息处理代码bool filterMouse(MSG *pMsg){ if( pMsg->message == WM_LBUTTONDBLCLK ) { ads_name ss; if(RTNORM != acedSSGet(_T("I"),NULL,NULL,NULL,ss)) { return false; } ads_name ent; ac
2022-03-27 17:31:13
618
1
原创 ARX项目lib依赖默认使用情况分析
#lib文件在arxheaders.h中包含的情况分析默认情况下arx向导生成的项目包含arxheaders.h即可使用大部分lib文件。arxheaders.h包含 dbxheaders.h ,所以arx项目常用lib如下。以下是ARX2022的头文件分析,未使用的lib需要手动添加依赖。dbxheaders.h rxapi.lib acdb24.lib acge24.lib acismobj24.lib acgiapi.lib axdb.lib ac1st24.lib acdb
2022-03-27 17:29:36
463
原创 ObjectARX 打印常见问题
打印慢可能是系统变量默认为后台打印,导致生成缓慢,解决方式,设置BACKGROUNDPLOT系统变量为前台打印 struct resbuf res,res2; acedGetVar(_T("BACKGROUNDPLOT"),&res); res2.restype=RTSHORT; res2.resval.rint=0; acedSetVar(_T("BACKGROUNDPLOT"),&res2); //恢复系统变量 acedSetVar(_T("BACKGROUNDPLO
2022-03-27 13:38:47
851
转载 [转]ObjectARX 使用 AcDbMultiModesGripPE 夹点上下文菜单
这是一个使用 AcDbMultiModesGripPE 为自定义实体实现夹点上下文菜单的示例项目。它演示了使用多模式夹点来获取与自定义实体相关的输入。为了让它变得有趣,我创建了一个类似于树的自定义实体。它的夹点上下文菜单显示两种模式 - “春季”和“冬季”。创建树自定义实体后,当夹点变热时将出现上下文菜单。选择“春天”将确保树有叶子,选择“冬天”将使树脱落叶子。
2022-03-27 12:38:23
1005
原创 Win10或Win8下ObjectARX2015 Wizard向导创建项目失败解决方法
[原创]objectARX 2015 Wizard安装向导在Win8/win10下无法创建项目的解决方法总结by edata @2017-5-1objectARX 2015 Wizard安装向导在Win8/win10下无法创建项目的解决方法因为Win8/Win10对系统盘(默认c:)使用了高级权限管理,所以在此盘下操作文件的修改工作都需要管理员权限才行。基于这个原因,导致非管理员安
2017-05-01 22:12:26
6787
8
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人