天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 116|回复: 0

[每日一码] (块变换矩阵的应用)图块中的圆坐标转换到当前WCS下的方法

[复制链接]
  • TA的每日心情
    开心
    昨天 06:36
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    105

    主题

    11

    回帖

    1308

    积分

    管理员

    积分
    1308
    QQ
    发表于 2024-3-14 19:31:36 | 显示全部楼层 |阅读模式
    1. 以下代码通过选择一个块参照,将块内的圆对象的坐标转换为该圆在当前dwg中的坐标并输出。相当于炸开块参照后再读取圆对象坐标的效果  
    2.     ads采用name ObjName;  
    3.     ads采用point pnt;  
    4.     AcDbObjectId objId;  
    5.     if (RTNORM != acedEntSel(采用T(""),ObjName,pnt))  
    6.     {  
    7.         return;  
    8.     }  
    9.       
    10.     acdbGetObjectId(objId,ObjName);  
    11.     AcDbEntity *pEnt=NULL;  
    12.     acdbOpenObject(pEnt,objId,AcDb::kForRead);  
    13.     if(pEnt->isKindOf(AcDbBlockReference::desc()))  
    14.     {  
    15.        AcDbBlockReference *pBlkRef=AcDbBlockReference::cast(pEnt);  
    16.        AcGeMatrix3d mat= pBlkRef->blockTransform();  
    17.          
    18.        AcDbBlockTableRecordPointer BlkTBRec采用Ptr(pBlkRef->blockTableRecord(),AcDb::kForRead);  
    19.        if(Acad::eOk  == BlkTBRec采用Ptr.openStatus())  
    20.        {  
    21.             AcDbBlockTableRecordIterator *pIt=NULL;  
    22.             BlkTBRec采用Ptr->newIterator(pIt);  
    23.             for (pIt->start();!pIt->done();pIt->step())  
    24.             {  
    25.                 AcDbEntity *pEntItem=NULL;  
    26.                 pIt->getEntity(pEntItem,AcDb::kForRead);  
    27.                 if(pEntItem->isKindOf(AcDbCircle::desc()))  
    28.                 {  
    29.                     AcDbCircle *pCircle=AcDbCircle::cast(pEntItem);  
    30.                     AcGePoint3d transPnt= mat * pCircle->center(); //将变换矩阵应用到对象的块内位置上,即得其在当前dwg图中的位置   
    31.                     acutPrintf(采用T("块内位置:%f,%f\n"),pCircle->center().x,pCircle->center().y);  
    32.                     acutPrintf(采用T("在当前图中的位置%f,%f\n"),transPnt.x,transPnt.y);  
    33.                 }  
    34.                 pEntItem->close();  
    35.             }  
    36.             delete pIt;  
    37.        }  
    38.     }  
    39.     pEnt->close();
    复制代码

     

     

     

     

    [每日一码] (块变换矩阵的应用)图块中的圆坐标转换到当前WCS下的方法
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

    GMT+8, 2024-11-1 13:31 , Processed in 0.150519 second(s), 27 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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