指标系之间的转换函数: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+坐标系变换相关推荐

  1. QPainter中坐标系变换问题

    一.坐标系简介. Qt中每一个窗口都有一个坐标系,默认的,窗口左上角为坐标原点,然后水平向右依次增大,水平向左依次减小,垂直向下依次增大,垂直向上依次减小.原点即为(0,0)点,然后以像素为单位增减. ...

  2. 视觉slam学习--坐标系变换 | 欧式变换+仿射变换+射影变换

    机器人坐标系变换 https://wenku.baidu.com/view/eebf7912866fb84ae45c8dd5.html?sxts=1600217363607&word=%E6% ...

  3. 研究相机和IMU坐标系变换

    刚开始录制的数据时没有考虑相机和IMU之间的坐标变换,但是后来发现跟踪效果不好,去查验imu数据时,发现,我采集保存的imu数据格式没有和euroc数据集中的imu数据保存格式统一,所以需要研究的是在 ...

  4. 汉诺塔问题的核心除了递归还有坐标系变换

    一开始我这么写,虽然感觉有道理,但是不知道f(2)每次调用的时候怎么判定落点 之后才知道原来是把轴像坐标系变换那样子换了

  5. ggplot2_coor_xxx()坐标系变换

    作者:Li_Yuhui 四川大学研究生在读 本文是ggplot2_可视化_速成的第2节 第3节:scale_xxx()标度调整 第4节:facet_xxx()分面系统 第5节:Guides图例与增加坐 ...

  6. 理解计算机3D图形学中的坐标系变换

    要谈坐标系变换,那么坐标系有哪些呢?依次有:物体坐标系,世界坐标系,相机坐标系,投影坐标系以及屏幕坐标系.我要讨论的就是这些坐标系间的转换.      这些坐标系不是凭空而来,他们都是为了完成计算机3 ...

  7. (七) carla真实世界坐标系与全局俯视地图像素坐标系变换

    (七) carla真实世界坐标系与全局俯视地图像素坐标系变换 问题陈述 下图为 carlacarlacarla 中 Town07Town07Town07 的真实世界. 下图为 carlacarlaca ...

  8. 一、Mahony姿态解算——坐标系变换

    坐标系 在飞行器姿态解算中,通常以地球坐标系(E系)为绝对坐标系,以机体坐标系(B系)为相对坐标系,并通常设初始状态时E系和B系重合. 坐标系变换 我们将空间中某一向量从一个坐标系,通过坐标系变换,映 ...

  9. [图形学] 坐标系变换——从世界坐标系到相机坐标系

    坐标系变换是图形学中最基础的部分,一个物体从建模到显示在屏幕,经历了从物体坐标系到世界坐标系,再从世界坐标系到观察坐标系,最后通过投影到2D平面,再变换到屏幕坐标等一系列过程. 投影矩阵 我们可以很容 ...

最新文章

  1. Codeforces.959E.Mahmoud and Ehab and the xor-MST(思路)
  2. Git 自救指南:这些坑你都跳得出吗?
  3. [转载]判断IE浏览器-世界上最短的代码
  4. 一个交换机到底能带几台摄像头
  5. MySQL同表关联的id替换名称_MySQL JOIN用另一个表中的值替换ID
  6. Java Zip压缩实现(亲测)
  7. 【干货集锦】如何轻松玩转文档管理工具?我们为你精心准备了一份学习大礼包...
  8. Exception in thread “main“ java.lang.NoClassDefFoundError: javax/script/Compilable
  9. java chain_java 8中 predicate chain的使用
  10. .NET 6 新特性 PeriodicTimer
  11. 底层软件工程师的一次冒险经历
  12. SVM(1)-概念与理解
  13. 计算机二级C语言判断标准,2012年计算机等级考试二级C语言常见问题:标准输入输出库...
  14. 基于动态优先级的时间片轮转调度算法c语言
  15. 基于深度学习技术的智能分类垃圾桶设计方案
  16. 【天池大数据竞赛】“数智教育”2019数据可视化竞赛亚军方案总结
  17. 基于STC89C52RC的小车黑线钝角、锐角、迷宫、虚线循迹模块化代码
  18. Shell脚本入门学习
  19. 过河问题(贪心算法)(python)
  20. 浅谈音视频开发入门基础及进阶资源分享

热门文章

  1. Reverse | 使用UPX对软件进行加壳
  2. 2021年美容师(初级)报名考试及美容师(初级)考试内容
  3. FTP设置用户名和密码
  4. 某土地市场网 webpack逆向分析
  5. 不抛弃,不放弃.这就叫“钢七连”
  6. 一篇文章带你搞定HashTable
  7. 万网m3 windows linux切换,万网M3型Windows云主机如何实现伪静态
  8. USACO2014MAR 破坏Sabotage
  9. js读取excel的值
  10. 用mdf文件和ldf文件恢复数据库