设为首页收藏本站

中国膜结构网

 找回密码
 立即注册
膜结构车棚
膜结构车棚膜结构资质国产膜材 膜结构网中国膜结构协会
查看: 78|回复: 0

Arx: AcdbPolyline的二维三维转换矩阵

[复制链接]
  • TA的每日心情
    开心
    2021-3-9 08:49
  • 签到天数: 1442 天

    连续签到: 21 天

    [LV.10]以坛为家III

    发表于 2021-1-19 15:07 | 显示全部楼层 |阅读模式
    http://www.mjgw.org/ 专业从事膜结构设计、制作加工、施工安装的膜结构咨询服务,能够为客户提供专业的膜结构整体解决方案。做中国最好的膜结构综合服务平台。欢迎大家联系QQ:463017170.
    1. 1. AcdbPolyline的GetPointAt有两个:一个是获取二维点坐标(In OCS),一个是获取三维点坐标(In WCS)
    2. Acad::ErrorStatus

    3. getPointAt(

    4. unsigned int index,

    5. AcGePoint2d& pt) const;

    6. This function sets pt to the 2D location of the vertexindex in thepolyline's own ojbect coordinate system (OCS).



    7. Acad::ErrorStatus

    8. getPointAt(

    9. unsigned int unnamed,

    10. AcGePoint3d& pt) const;

    11. This function sets pt to the 3D location of the vertexindexin World Coordinates.



    12. 如果AcdbPolyLine不在x/y平面上的话,我们可以看出来,他们是不完全对应的:

    13. 例如下面的这个

    14. Point: x-670.8292, y-18.2542

    15. Point: x-670.8292, y-12.0000, z-18.2542



    16. 二维、三维之间如何转换呢?借助matrix可以完成转换:我们借助两个函数
    17. AcDbEntity::getEcs Function

    18. virtual void

    19. getEcs(

    20. AcGeMatrix3d& retVal) const;

    21. retVal        Output filled in with transformation matrix to go from OCS to WCS


    22. AcDbPolyline::elevationFunction

    23. double

    24. elevation() const;

    25. This returns the distance from the WCS origin to the plane of the polyline.



    26. 第一种方法: 通过getEcs获取其转换矩阵,通过elevation获取PLine线所在面 距 WCS原点的距离

    27. (我们通过GetPointAt获取二维点时,其实他们本身是缺省带有z坐标elevation的---也就是PLine线所在面 距 WCS原点的距离)

    28.         AcGeMatrix3d matixToWCS;
    29.         pPlineTop->getEcs(matixTransToWCS);       
    30.         double dElevetion = pPlineTop->elevation();
    31. 转换的时候:调用transformby,完成转换

    32. 注:dElevetion作为了z坐标

    33. AcGePoint3d  pt3dPoint = AcGePoint3d(pt2dTemp.x, pt2dTemp.y, dElevetion).transformBy(matixToWCS);


    34. 第二种方法: 把dElevetion也放到转换矩阵中来,直接转换

    35.         AcGeMatrix3d matixToWCS;
    36.         pPlineTop->getEcs(matixTransToWCS);       
    37.         // 矩阵附加elevation的转换       
    38.         matixTransToWCS *= AcGeMatrix3d::translation(AcGeVector3d::kZAxis * pPlineTop->elevation());       
    39.                
    40.         AcGePoint3d pt3dPoint = AcGePoint3d(pt2dTemp.x, pt2dTemp.y, dElevToWCS).transformBy(matixToWCS);
    复制代码
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    推荐膜材品牌上一条 /5 下一条

    进口膜材 国产膜材 pvdf膜材ptfe膜材ETFE膜材
    最好的膜结构公司 一级膜结构资质 膜结构一级资质
    膜结构设计-膜结构十大品牌-etfe设计-充气膜结构
    诺科膜结构
    遨都膜结构设计
    中国膜结构网
    中国空间膜结构协会

    QQ|申请友链|Archiver|手机版|中国膜结构论坛

    GMT+8, 2021-3-9 11:43 , Processed in 0.284874 second(s), 23 queries .

    Powered by 中国膜结构网->膜材采购->膜结构设计->膜结构安装->膜结构维修

    © 2014-2020 膜结构协会->进口膜材->国产膜材->PVDF膜材->PTFE膜材->ETFE膜材.

    快速回复 返回顶部 返回列表