乐筑天下

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

获取选定的圆圈中心点

[复制链接]

7

主题

23

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
51
发表于 2009-12-16 05:41:52 | 显示全部楼层 |阅读模式
嗨…
我正在做一个应用程序来获取选定的圆的圆心和半径
如果我选择了实体,它应该会显示出来。请帮帮我。
我的代码是
  1. [code]void CDbModReactor::objectModified(const AcDbDatabase* pDb,
  2. const AcDbObject* pDbObj)
  3. {
  4. AcAxDocLock docLock(pDbObj->ownerId(), AcAxDocLock::kNormal);
  5. if(docLock.lockStatus() != Acad::eOk)
  6. return;
  7. else
  8. objDisplay("modified", pDbObj);
  9. }
  10. void objDisplay(const char* pWhat, const AcDbObject* pDbObj)
  11. {
  12. if(!gpDlg)
  13. return;
  14. char hstr[20];
  15. char idstr[20];
  16. const char *pClsName = NULL;
  17. double pRadius, y_value;
  18. if(pDbObj)
  19. {
  20. AcDbObjectId id = pDbObj->objectId();
  21. AcDbHandle h;
  22. pClsName = pDbObj->isA()->name();
  23. pDbObj->getAcDbHandle(h);
  24. h.getIntoAsciiBuffer(hstr);
  25. //acutPrintf("\nDbModReactor: obj %s: "
  26. // "class %s, id %lx, handle %f.\n",
  27. // pWhat, pClsName , id, idstr);
  28. //sprintf(idstr, "0x%08lx", id);
  29. }
  30. else
  31. {
  32. pClsName = "";
  33. strcpy(hstr, "");
  34. strcpy(idstr, "");
  35. }
  36. ads_name ss;
  37. if( RTNORM !=
  38. acedSSGet("P",NULL,NULL,NULL,ss))
  39. {
  40. // Get Previous selection set
  41. if( RTNORM != acedSSGet(NULL,NULL,NULL,NULL,ss))
  42. {
  43. acDocManager->unlockDocument(acDocManager->curDocument());
  44. return;
  45. }
  46. }
  47. long nEnts;
  48. acedSSLength(ss,&nEnts);
  49. AcDbObjectIdArray entities(nEnts);
  50. //acutPrintf("\nFound %d Entities", nEnts);
  51. CString Tot_Cir;
  52. Tot_Cir.Format("%d",nEnts);
  53. gpDlg->SetDlgItemText(IDC_EDIT1, Tot_Cir);
  54. AcDbCircle* pCircle = AcDbCircle::cast(pDbObj);
  55. if(pCircle == NULL)
  56. return;
  57. AcGePoint3d pCenter = pCircle->center();
  58. y_value = pCenter.y;
  59. pRadius = pCircle->radius();
  60. //acutPrintf("Selected object Y value %f\n", y_value);
  61. //acutPrintf("Selected object X value %f\n", pCenter);
  62. Cir_Radius.Format("%f",pRadius);
  63. Cent_X.Format("%f",pCenter);
  64. Cent_Y.Format("%f",y_value);
  65. m_lstCtrl.InsertItem(0,Cent_X);
  66. m_lstCtrl.SetItemText(0,1,Cent_Y);
  67. FILE * pFile;
  68. pFile = fopen ("C:myfile.csv","a");
  69. if (pFile!=NULL)
  70. {
  71. CString x2 = Cent_X+","+Cent_Y+"\n";
  72. fwrite(x2, x2.GetLength(), 1, pFile);
  73. fclose (pFile);
  74. }
  75. acedSSFree(ss);
  76. }

[/code]

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

7

主题

23

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
51
发表于 2009-12-16 08:34:23 | 显示全部楼层
您可以尝试在选择集中打开圆k进行书写。
欢迎来到沼泽
回复

使用道具 举报

7

主题

23

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
51
发表于 2009-12-16 09:47:18 | 显示全部楼层
感谢您的回复。
我是对象ARX的新手。
请给一些代码syntex...
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-5 22:11 , Processed in 0.221641 second(s), 58 queries .

© 2020-2025 乐筑天下

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