找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 694|回复: 0

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

[复制链接]

已领礼包: 13个

财富等级: 恭喜发财

发表于 2016-9-21 13:15:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
[code=code]
//以下代码通过选择一个块参照,将块内的圆对象的坐标转换为该圆在当前dwg中的坐标并输出。相当于炸开块参照后再读取圆对象坐标的效果  
    ads_name ObjName;  
    ads_point pnt;  
    AcDbObjectId objId;  
    if (RTNORM != acedEntSel(_T(""),ObjName,pnt))  
    {  
        return;  
    }  
      
    acdbGetObjectId(objId,ObjName);  
    AcDbEntity *pEnt=NULL;  
    acdbOpenObject(pEnt,objId,AcDb::kForRead);  
    if(pEnt->isKindOf(AcDbBlockReference::desc()))  
    {  
       AcDbBlockReference *pBlkRef=AcDbBlockReference::cast(pEnt);  
       AcGeMatrix3d mat= pBlkRef->blockTransform();  
         
       AcDbBlockTableRecordPointer BlkTBRec_Ptr(pBlkRef->blockTableRecord(),AcDb::kForRead);  
       if(Acad::eOk  == BlkTBRec_Ptr.openStatus())  
       {  
            AcDbBlockTableRecordIterator *pIt=NULL;  
            BlkTBRec_Ptr->newIterator(pIt);  
            for (pIt->start();!pIt->done();pIt->step())  
            {  
                AcDbEntity *pEntItem=NULL;  
                pIt->getEntity(pEntItem,AcDb::kForRead);  
                if(pEntItem->isKindOf(AcDbCircle::desc()))  
                {  
                    AcDbCircle *pCircle=AcDbCircle::cast(pEntItem);  
                    AcGePoint3d transPnt= mat * pCircle->center(); //将变换矩阵应用到对象的块内位置上,即得其在当前dwg图中的位置   
                    acutPrintf(_T("块内位置:%f,%f\n"),pCircle->center().x,pCircle->center().y);  
                    acutPrintf(_T("在当前图中的位置%f,%f\n"),transPnt.x,transPnt.y);  
                }  
                pEntItem->close();  
            }  
            delete pIt;  
       }  
    }  
    pEnt->close();  [/code]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-8 07:18 , Processed in 0.344057 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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