乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 52|回复: 2

AcDbDynBlockReferenceProperty学习~

[复制链接]

3

主题

7

帖子

3

银币

初来乍到

Rank: 1

铜币
19
发表于 2014-12-4 16:53:00 | 显示全部楼层 |阅读模式
AcDbDynBlockReferenceProperty:
  1.     ads_name  ent;
  2.     ads_point sltpt;
  3.     int ret;
  4.     Acad::ErrorStatus es;
  5.     ret=acedEntSel(_T("\n Selct BlockReference:"), ent,sltpt);
  6.     if (RTNORM!=ret)
  7.     {
  8.       acedAlert(_T("NotSelect"));
  9.       return;
  10.     }
  11.     AcDbObjectId DynBlkId;
  12.     es=acdbGetObjectId(DynBlkId,ent);
  13.     if (Acad::eOk!=es)
  14.     {
  15.       acedAlert(_T("Failed to get entity's ID!"));
  16.       return;
  17.     }
  18.     AcDbDynBlockReference dynblkRef(DynBlkId);
  19.     //////////////////////blkName////////
  20.     AcDbObject* pObj; es = acdbOpenAcDbObject(pObj, DynBlkId  , AcDb::kForRead);
  21.     AcDbBlockReference *Reference=AcDbBlockReference::cast(pObj);           
  22.     AcDbObjectId refId=Reference->blockTableRecord();        
  23.     AcDbBlockTableRecord* pBlkTableRec; es=acdbOpenObject(pBlkTableRec,refId,AcDb::kForRead);     
  24.     if(es != Acad::eOk) {acutPrintf(_T("BlockTableRec Open  Error?????")); return;}
  25.     const ACHAR* Name; es = pBlkTableRec->getName(Name);
  26.     acutPrintf(_T("Name %s"),Name);
  27.     pObj->close();
  28.    
  29.     ////////////////////////////DynBlkName///////
  30. AcDbObjectId  blockRecordId=   dynblkRef.dynamicBlockTableRecord ();
  31. es = acdbOpenAcDbObject(pObj, blockRecordId  , AcDb::kForRead);
  32. if (es != Acad::eOk) {acutPrintf(_T("dynBlock Table Rec Open  Error")); return;}   
  33. AcDbBlockTableRecord* blkTblRec = AcDbBlockTableRecord::cast(pObj);   
  34. ACHAR *effectiveName;
  35. es=blkTblRec->getName(effectiveName);
  36. if(es!= Acad::eOk) return;
  37. acutPrintf(_T("\n Effective Name %s"),effectiveName);
  38. pObj->close();
  39. ///////////
  40. if (!dynblkRef.isDynamicBlock())
  41. {
  42.   acedAlert(_T("It is not dynamic block reference!"));
  43.   return;
  44. }
  45. acutPrintf(_T("\nIt is dynamic block!"));
  46. AcDbDynBlockReferencePropertyArray propArr;
  47. dynblkRef.getBlockProperties(propArr);
  48. acutPrintf(_T("\nThere are %d properities!"),propArr.length());
  49. for (int i=0;i<propArr.length();++i)
  50. {
  51.   AcDbDynBlockReferenceProperty prop1=propArr.at(i);
  52. AcDbEvalVariant evalvar=prop1.value();
  53. CString strEvalType;
  54. CString strEval;     
  55. acutPrintf(_T("\n\n Restype %d"),evalvar.restype);
  56. switch (evalvar.restype)
  57.   {   
  58. case 70:// см. dxfcod (entget)
  59.    strEvalType=_T("int");   
  60.     strEval.Format(_T("%d"),evalvar.resval.rint);//
  61.    break;
  62.   case 40 ://
  63.    strEvalType=_T("Double");
  64.    strEval.Format(_T("%g"),evalvar.resval.rreal);
  65.    break;
  66.   case 11  : //
  67.   strEvalType=_T("Point2d");
  68.    strEval.Format(_T("(%.5f,%.5f,0)"),
  69.     evalvar.resval.rpoint[0],
  70.        evalvar.resval.rpoint[1]);
  71.    break;
  72.   case 1 : //
  73.    strEvalType=_T("String");
  74.    strEval.Format(_T("%s"),evalvar.resval.rstring);
  75.    break;
  76.   default : // e.t.c
  77.       strEvalType=_T("unknown");  
  78.   }   
  79.   acutPrintf(_T("\nproperty : %d"),i+1);
  80.   acutPrintf(_T("\n      Name:%s"),prop1.propertyName().constPtr());
  81.   acutPrintf(_T("\n      Description : %s"),prop1.description().constPtr());
  82.   acutPrintf(_T("\n      Value Type= %s"),strEvalType);
  83.   acutPrintf(_T("\n      Value = %s\n"),strEval);  
  84. }

回复

使用道具 举报

0

主题

6

帖子

1

银币

初来乍到

Rank: 1

铜币
6
发表于 2014-12-5 08:54:00 | 显示全部楼层
厉害,学习了
回复

使用道具 举报

2

主题

13

帖子

4

银币

初来乍到

Rank: 1

铜币
21
发表于 2014-12-23 08:54:00 | 显示全部楼层
刚路过,见一回顶一回
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-5 03:56 , Processed in 0.149598 second(s), 58 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表