C++ ARX CAD二次开发实体操作
得到选中的实体,修改实体如等分线段
AcGeVector3d是点阵的集合,通过等分点的差集得到。
新的点可以通过点与点阵相差得到。
static void ArxProject2partLine(void)
{ads_name entName;ads_point pt;acedEntSel( _T("\n选择:"),entName,pt);//得到选中的实体AcDbObjectId ObjId;//得到实体IDif( acdbGetObjectId(ObjId,entName) != Acad::eOk )//如果没有选中的实体则返回{acutPrintf( _T("\nno"));return;}AcDbEntity* pEnt;//得到实体if( acdbOpenObject(pEnt,ObjId,AcDb::kForRead) == Acad::eOk){acutPrintf( _T("\nok"));AcDbLine* pLine = (AcDbLine* )pEnt;//强制转换AcGePoint3d ptStart = pLine->startPoint();//得到起点AcGePoint3d ptEnd = pLine->endPoint();pEnt->close();//根据点和线的方向生成点组,绘制线段int nPart = 5;//五等分AcGeVector3d Vect = (ptEnd - ptStart)/nPart;//矩阵,点与点的差集平分可得到for (int n=0; n<nPart; n++){AcDbObjectId ObjIdNew;MakeLine(ptStart+n*Vect,ptStart+(n+1)*Vect,ObjIdNew);//等分线段的方法}//将选中的线段删除,if( acdbOpenObject(pEnt,ObjId,AcDb::kForWrite) == Acad::eOk ){pEnt->erase();pEnt->close();}}
}
**将实体添加到数据库**
static Acad::ErrorStatus AddToDb(AcDbEntity* ent, AcDbObjectId& objId)
{ Acad::ErrorStatus es;AcDbBlockTable* pBlockTable;AcDbBlockTableRecord* pSpaceRecord;if ((es = acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlockTable, AcDb::kForRead))!= Acad::eOk) {return es;}if ((es = pBlockTable->getAt(ACDB_MODEL_SPACE, pSpaceRecord,AcDb::kForWrite)) != Acad::eOk) {return es;}if ((es = pBlockTable->close()) != Acad::eOk) {return es;}if ((es = pSpaceRecord->appendAcDbEntity(objId, ent)) != Acad::eOk) {return es;}return pSpaceRecord->close();
}static void MakeLine(AcGePoint3d ptStart,AcGePoint3d ptEnd,AcDbObjectId lineId){AcDbLine *pLine = new AcDbLine(ptStart,ptEnd);if(AddToDb(pLine,lineId)!=Acad::eOk)//传入指针,传出idAfxMessageBox( _T("加入实体到数据库失败!"));pLine->close();}
C++ ARX CAD二次开发实体操作相关推荐
- CAD 二次开发 图层操作(3)取得指定图层下的所有对象id
对于CAD二次开发的人来说,可能需要对某一图层下的实体(点,线,面域,块,三维实体)进行不同的操作.下面的方法,即可实现获取指定图层名称下的所有实体ID. 输入参数为图层名称: 返回值为:对象主键集合 ...
- CAD 二次开发 图层操作(1)创建图层
CAD二次开发的资料比较少,除了李冠亿先生的<深居浅出AutoCAD二次开发>这本书之外,目前没有找到合适的参考资料.现将自己工作中用的的一些方法贴出来.方便各位网友快速入门. #regi ...
- 【CAD二次开发】实现双击实体的响应
一.基本双击响应实现 通过向导在VS中创建MFC支持的新项目: 项工程中添加普通CDoubleClick类, 基类选择AcDbDoubleClickEdit: 类的头文件为: class CDoubl ...
- 关于objectArx /CAD二次开发中“属性块”操作
关于objectArx /CAD二次开发中"属性块"操作 属性块就是在图块上附加一些文字属性(Attribute),这些文字可以非常方便地修改.属性块被广泛应用在工程设计和机械设计 ...
- c# cad 二次开发 类库 netload 图层操作、创建图层、删除图层、设置当前图层等
c# cad 二次开发 类库 netload 图层操作.创建图层.删除图层.设置当前图层等 using Autodesk.AutoCAD.ApplicationServices; using Auto ...
- 我的CAD二次开发程序中的操作excel的部分
这是我的CAD二次开发程序中的操作excel的部分,特此分享 using System; using System.Collections.Generic; using System.Text; us ...
- c# cad 二次开发 类库 块的操作
c# cad 二次开发 类库 块的操作 using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServi ...
- c# cad 二次开发 类库 CAD表格的操作,给CAD添加一个表格
c# cad 二次开发 类库 CAD表格的操作,给CAD添加一个表格 using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCA ...
- c# cad二次开发实现注记搜索跟扩展属性搜索,并点击即可定位到位置,添加了界面操作
c# cad二次开发实现注记搜索跟扩展属性搜索,并点击即可定位到位置,添加了界面操作 在这里插入图片描述 using Autodesk.AutoCAD.DatabaseServices; using ...
最新文章
- 【转】early-z、z-culling、hi-z、z-perpass
- 存储过程 触发器 约束
- free -m 下的含义
- SAP License:部分清帐和剩余清帐的区别(实例)
- 像素生存者2为什么显示服务器不可用,像素生存者2为什么更新了玩不了 | 手游网游页游攻略大全...
- 两款程序员的好帮手——BitNami,Hoo WinTail
- windows7电脑备份系统教程
- nokia手机的含义
- 手机cpu性能天梯图2022 手机cpu性能排行2022 手机cpu哪个好
- B树代码实现--C++
- Jenkin权限控制——基于角色授权策略
- 日本某地发生了一件谋杀案
- 【小程序】QQ小程序的入门与开发
- 从一个url地址到最终页面渲染完成,发生了什么?
- 计算机冷门领域,毕业后很吃香的三大“冷门”专业!不比热门专业差,适合中等考生...
- VC++ Tab Control控件的基本用法
- 应届生面试要点总结(10)操作系统相关
- vscode运行php报错php not found
- 自己训练的Resnet部署(python版本)
- Android 监听home、锁屏、解屏简单实现
热门文章
- 七彩动态|棱镜七彩获“北京国家金融科技认证中心”颁发的「金融开源技术服务商能力评估证书」
- iuplua 简易记事本开发
- 程序猿生存指南-32 实习招聘(下)
- 湖南hp服务器虚拟化解决方案,惠普扩展HP ProLiant服务器虚拟化功能
- 荣耀智慧屏鸿蒙安装第三方软件的方法,华为荣耀智慧屏安装第三方软件的教程,图文详解,一看就会!...
- 力天创见Brickstream客流统计系统
- Photoshop极坐标滤镜巧绘三维游泳圈
- SQLServer用windows身份验证后没有权限问题
- Lanecat网猫内网功能介绍
- Carsim 对开路面和对接路面