AutoCAD+坐标系变换
指标系之间的转换函数:int acedTrans(const ads_point pt, //将被转换的三维点或三维向量
Conststruct resbuf* from,//源坐标系的结构缓冲区地址
Const struct resbuf* to,//目标坐标系的结构缓冲区地址
Int disp, //若为0,则pt被当成三维点,否pt为三维向量。
Ads_point result); //转换坐标系后的返回点
范例: ads_point pt,result;
Struct resbuf fromrb,torb;
Pt[X] = 1.0;
Pt[Y] = 2.0;
Pt[Z] = 3.0;
Fromrb.restype = RTSHORT; //restype = RTSHORT 代表进行坐标系转换
Torb.restype = RTSHORT;
Fromrb.resval.rint = 0; //这时resval = 0 代表原坐标系为WCS
Torb.resval.rint = 1; //这时resval = 1 代表目的坐标系为UCS
acedTrans(pt,fromrb,torb,FALSE,result);
曲线函数:
getOrthoProjectedCurve()投影函数
getOffsetCurves()偏移函数
块:每一个块由一个AcDbBlockBegin对象开始,以一个AcDbBlockEnd对象结束
设置块名和基点:
PBlockRecord->setName(“NEWBLOCKWITHATTR”);
PBlockRecord->setOrigin(basePoint);
块引用:
AcDbBlockReference* pBlkRef = newAcDbBlockReference;
pBlkRef->setBlockTableRecord(blockId); //将块引用指向实际块记录
查看块表中是否含有相同名字的块:
pBlockTable->has(“XXX”);
pBlockTable->getAt(“XXX”,blockId);
迭代器的使用
AcDbBlockTableRecordIterator* pIterator;//声明
pBlockDef->newIterator(pIterator); //初始化迭代器
AcDbEntity *pEnt;
AcDbAttributeDefinition *pAttdef;
For(pIterator->start();!pIterator->done();pIterator->step())
{
pIterator->getEntity(pEnt,AcDb::kForRead); //遍历实体
pIterator->getEntityId(XXX) //获取实体ID
XXXXX
pEnt->close(); //实体对象一定要及时关闭
}
克隆操作:
AcDbAttributeDefinition *pAttdef2 = AcDbAttributeDefinition::cast(pAttdef->clone());
获取实体的ID
AcdbGetObjectId(eId,en);
迭代器 多段线
AcDb2dPolyline *pPline;
acdbObjectIterator *pVertexIter =pPline->vertexIterator;
pVertexIter->ObjectId; 取出对象ID
交互式的获取实体:int acedEntSel(const char*str, ads_name entres, ads_point ptres);
删除或恢复删除当前图形中的实体对象:int acedEntDel(const ads_name ent);
获取数据库中最后一个未被删除的实体名:int acedEntLast(ads_name result);
获取数据库中指定实体的下一个实体的实体名:int acedEntNext(const ads_name ent, ads_name result);
获取实体信息:struct resbuf* acdbEntGet(const ads_name ent);
获取包含扩展数据的实体信息:struct resbuf* acdbEntGetX(const ads_name ent, const struct resbuf*apps);
根据结果缓冲区ent的内容更新实体:int acdbEntMod(const struct resbuf* ent);
根据结果缓冲区ent的内容创建新实体:int acdbEntMake(const struct resbuf* ent);
调用成功后返回RTNORM,输入错误返回RTERROR,用户取消输入RTCAN,用户键入回车键RTNONE,拒绝输入RTREJ,用户输入关键字RTKWORD。
在调用输入函数之前,可以调用函数acedInitGet()来初始化用户输入时的选项。
Int acedInitGet(int val, const char* kwl)
设置系统变量值:int acedSetVar(const char* sym, const struct resbuf* val)
获取系统变量值:int acedGetVar(const char* sym, struct resbuf* result)
对象捕捉点函数:当捕捉完一个对象之后,可以通过以下函数
Virtual Acad::ErrorStatusAcDbEntity::getOsnapPoints(AcDb::OsnapMode osnapMode,
IntgsSelectionMark,
ConstAcGePoint3d& pickPoint,
ConstAcGePoint3d& lastPoint,
ConstAcGePoint3d& viewXform,
AcGePoint3dArray&snapPoints,
AcDbIntArray&geomIds) const;
实体求交函数:virtual Acad::ErrorStatus AcDbEntity::intersectWith(constAcDbEntity* pEnt,
//另一个相交的实体
AcDb::Intersect intType, //求相交的方式
AcGePoint3dArray& points, //取出相交的节点序列
Int thisGsMarker = 0, //
Int otherGsMarker = 0) const;
Virtual Acad::ErrorStatusAcDbEntity::intersectWith(const AcDbEntity* pEnt,
AcDb::Intersect intType,
Const AcGePlane& projPlane, //相交的投影平面
AcGePoint3dArray& points,
Int thisGsMarker = 0, //传入GS标志加快求交速度
Int otherGsMarker = 0) const;
实体分解函数:virtual Acad::ErrorStatus explode(AcDbVoidPtrArray& entitySet)const;
EntitySet为当前分解所得的新实体的指针。
将GS标志值转换成子实体路径:
AcDbEntity::getSubentPathsAtGsMarker(AcDb::SubentTypetype, //需要得到的子实体类型
Int gsMark, //GS标志值
Const AcGePoint3d& pickPoint, 选择实体时输入的点
Const AcGeMatrix3d& viewXform, WCS 到 DCS的转换矩阵
Int& numPaths, subentPaths数组中AcDbFullSubentPath对象的数目。
AcDbFullSubentPath*& subentPaths, 返回根据GS标志值和其他附加信息创建的AcDbFullSubentPaths对象的指针构成的动态数组
Int numInserts = 0,
AcDbObjectId* entAndInsertStack = NULL) const;
获取更深层的信息Int acedNEntSelP(const char* str,
Ads_name entres,
Ads_point ptres,
Int pickflag,
Ads_matrix xformres,
Struct resbuf** refstkres)
Highlight()高亮子实体
Virtual AcDbEntity*AcdbEntity::subentPtr(const AcDbFullSubentPath& id) //获取一个子实体的复制品 id
AutoCAD+坐标系变换相关推荐
- QPainter中坐标系变换问题
一.坐标系简介. Qt中每一个窗口都有一个坐标系,默认的,窗口左上角为坐标原点,然后水平向右依次增大,水平向左依次减小,垂直向下依次增大,垂直向上依次减小.原点即为(0,0)点,然后以像素为单位增减. ...
- 视觉slam学习--坐标系变换 | 欧式变换+仿射变换+射影变换
机器人坐标系变换 https://wenku.baidu.com/view/eebf7912866fb84ae45c8dd5.html?sxts=1600217363607&word=%E6% ...
- 研究相机和IMU坐标系变换
刚开始录制的数据时没有考虑相机和IMU之间的坐标变换,但是后来发现跟踪效果不好,去查验imu数据时,发现,我采集保存的imu数据格式没有和euroc数据集中的imu数据保存格式统一,所以需要研究的是在 ...
- 汉诺塔问题的核心除了递归还有坐标系变换
一开始我这么写,虽然感觉有道理,但是不知道f(2)每次调用的时候怎么判定落点 之后才知道原来是把轴像坐标系变换那样子换了
- ggplot2_coor_xxx()坐标系变换
作者:Li_Yuhui 四川大学研究生在读 本文是ggplot2_可视化_速成的第2节 第3节:scale_xxx()标度调整 第4节:facet_xxx()分面系统 第5节:Guides图例与增加坐 ...
- 理解计算机3D图形学中的坐标系变换
要谈坐标系变换,那么坐标系有哪些呢?依次有:物体坐标系,世界坐标系,相机坐标系,投影坐标系以及屏幕坐标系.我要讨论的就是这些坐标系间的转换. 这些坐标系不是凭空而来,他们都是为了完成计算机3 ...
- (七) carla真实世界坐标系与全局俯视地图像素坐标系变换
(七) carla真实世界坐标系与全局俯视地图像素坐标系变换 问题陈述 下图为 carlacarlacarla 中 Town07Town07Town07 的真实世界. 下图为 carlacarlaca ...
- 一、Mahony姿态解算——坐标系变换
坐标系 在飞行器姿态解算中,通常以地球坐标系(E系)为绝对坐标系,以机体坐标系(B系)为相对坐标系,并通常设初始状态时E系和B系重合. 坐标系变换 我们将空间中某一向量从一个坐标系,通过坐标系变换,映 ...
- [图形学] 坐标系变换——从世界坐标系到相机坐标系
坐标系变换是图形学中最基础的部分,一个物体从建模到显示在屏幕,经历了从物体坐标系到世界坐标系,再从世界坐标系到观察坐标系,最后通过投影到2D平面,再变换到屏幕坐标等一系列过程. 投影矩阵 我们可以很容 ...
最新文章
- Codeforces.959E.Mahmoud and Ehab and the xor-MST(思路)
- Git 自救指南:这些坑你都跳得出吗?
- [转载]判断IE浏览器-世界上最短的代码
- 一个交换机到底能带几台摄像头
- MySQL同表关联的id替换名称_MySQL JOIN用另一个表中的值替换ID
- Java Zip压缩实现(亲测)
- 【干货集锦】如何轻松玩转文档管理工具?我们为你精心准备了一份学习大礼包...
- Exception in thread “main“ java.lang.NoClassDefFoundError: javax/script/Compilable
- java chain_java 8中 predicate chain的使用
- .NET 6 新特性 PeriodicTimer
- 底层软件工程师的一次冒险经历
- SVM(1)-概念与理解
- 计算机二级C语言判断标准,2012年计算机等级考试二级C语言常见问题:标准输入输出库...
- 基于动态优先级的时间片轮转调度算法c语言
- 基于深度学习技术的智能分类垃圾桶设计方案
- 【天池大数据竞赛】“数智教育”2019数据可视化竞赛亚军方案总结
- 基于STC89C52RC的小车黑线钝角、锐角、迷宫、虚线循迹模块化代码
- Shell脚本入门学习
- 过河问题(贪心算法)(python)
- 浅谈音视频开发入门基础及进阶资源分享