找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 179|回复: 0

[每日一码] AcDbRegion::transformBy在2014和2015结果不同的解决方案

[复制链接]

1

主题

0

回帖

55

积分

管理员

积分
55
发表于 2024-3-14 20:41:58 | 显示全部楼层 |阅读模式
  1. /*Resetting sytsem wide tolerance for ACAD 2015*/
  2. AcGeContext::gTol.setEqualPoint(1.0e-8);
  3. AcGeContext::gTol.setEqualVector(1.0e-6);
  4. static void transformTest()
  5. {
  6.         /*Resetting sytsem wide tolerance for ACAD 2015*/
  7.         AcGeContext::gTol.setEqualPoint(1.0e-8);
  8.         AcGeContext::gTol.setEqualVector(1.0e-6);
  9.         double epTol = AcGeContext::gTol.equalPoint();
  10.         double evTol = AcGeContext::gTol.equalVector();
  11.         CString msg;
  12.         msg.Format(采用T("point tolerance is %e, and vector tolerance is %e\n"), epTol, evTol);
  13.         acedPrompt(msg);
  14.         // Second, create a transform matrix that maps from one coordinate syste to another
  15.         AcGePoint3d startPoint;
  16.         AcGeVector3d mStockProfileXDir, mExtrudeDir, mNormalDir;
  17.         startPoint.set(12342.705102605765, -14874.057509290647, 25.766600469474248);
  18.         mStockProfileXDir.set(0.00000000000000000, 1.0000000000000000, 0.00000000000000000);
  19.         mNormalDir.set(-0.048960818631765893, -6.4357153980460105e-012, 0.99880069995915965);
  20.         mExtrudeDir.set(-0.99880069995915977, 0.00000000000000000, -0.048960818631764047);
  21.         AcGeMatrix3d xform;
  22.         xform.setToAlignCoordSys(AcGePoint3d(0, 0, 0),
  23.                 AcGeVector3d::kXAxis,
  24.                 AcGeVector3d::kYAxis,
  25.                 AcGeVector3d::kZAxis,
  26.                 startPoint,
  27.                 mStockProfileXDir,
  28.                 mNormalDir,
  29.                 mExtrudeDir);
  30.         // Is the new coordinate system orthogonal?
  31.         if (!xform.isUniScaledOrtho())
  32.                 acedPrompt(采用T("Transform matrix axes are not orthogonal\n"));
  33.         else
  34.                 acedPrompt(采用T("Transform matrix axes are orthogonal\n"));
  35.         // Finally, transform a region to the new coordinate system.
  36.         AcDbVoidPtrArray curves, regions;
  37.         AcDbCircle *pTestCircle = new AcDbCircle(AcGePoint3d::kOrigin, AcGeVector3d::kZAxis, 10.0);
  38.         if (pTestCircle != NULL)
  39.         {
  40.                 curves.append(pTestCircle);
  41.                 AcDbRegion::createFromCurves(curves, regions);
  42.                 if (regions.length() != 0)
  43.                 {
  44.                         for (int i = 0; i < regions.length(); i++)
  45.                         {
  46.                                 AcDbRegion* testRegion = static采用cast<AcDbRegion*>(regions<i>);
  47.                                 Acad::ErrorStatus es = testRegion->transformBy(xform);
  48.                                 delete testRegion;
  49.                                 msg.Format(采用T("The transform operation returned %d\n"), es);
  50.                                 acedPrompt(msg);
  51.                         }
  52.                 }
  53.                 delete pTestCircle;
  54.         }
  55. }
复制代码

 

 

 

 

[每日一码] AcDbRegion::transformBy在2014和2015结果不同的解决方案
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2025-2-6 03:57 , Processed in 0.107583 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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