乐筑天下

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

[编程交流] 请帮助错误:额外权限

[复制链接]

2

主题

5

帖子

3

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 21:43:59 | 显示全部楼层 |阅读模式
大家好,
 
我真的需要口齿不清,但不知道如何修复该脚本!谁能告诉我剧本中的问题在哪里?我甚至找不到命令名 224359pilfifwrajclahwj.png
 
谢谢并致以最良好的问候
 
原始脚本点:https://adndevblog.typepad.com/autocad/2014/03/extracting-isolines-from-surface.html
 
  1. // 1) Enable support for the BRep API in StdAfx.h
  2. #define _BREP_SUPPORT_            //- Support for the BRep API
  3. // 2) Code to retrieve the IsoLines from a surface
  4. Acad::ErrorStatus es;
  5. ads_point pt;
  6. ads_name ename;
  7. if (RTNORM != acedEntSel(L"Select a Surface", ename, pt))
  8.     return;
  9. AcDbEntity *pEnt = NULL;
  10. AcDbObjectId id;
  11. es = acdbGetObjectId(id, ename);
  12. es = acdbOpenAcDbEntity(pEnt, id, AcDb::kForWrite);
  13. AcDbSurface *pSurface = AcDbSurface::cast(pEnt);
  14. if(NULL == pSurface)
  15. {
  16.     acutPrintf(ACRX_T("\nPlease select a surface."));
  17.     return;
  18. }
  19. AcDbNurbSurfaceArray nsArray;
  20. es = pSurface->convertToNurbSurface(nsArray);
  21. if(es == Acad::eOk)
  22. {
  23.     if(nsArray.length() == 1)
  24.     {
  25.         AcDbDatabase *pDb
  26.             = acdbHostApplicationServices()->workingDatabase();
  27.         AcDbBlockTable *pBlockTable = NULL;
  28.         es = pDb->getBlockTable(pBlockTable, AcDb::kForRead);
  29.         AcDbBlockTableRecord *pMS = NULL;
  30.         es = pBlockTable->getAt(
  31.                        ACDB_MODEL_SPACE, pMS, AcDb::kForWrite);
  32.         AcDbNurbSurface *pNS = NULL;
  33.         pNS = AcDbNurbSurface::cast(nsArray.at(0));
  34.         Adesk::UInt16 uIsoDensity = pSurface->uIsolineDensity();
  35.         Adesk::UInt16 vIsoDensity = pSurface->vIsolineDensity();
  36.         AcDbBody* pBody = new AcDbBody();
  37.         es = pBody->setASMBody(pSurface->getLockedASMBody());
  38.         AcBr::ErrorStatus ebs;
  39.         AcBrBrep* pBrep = new AcBrBrep();
  40.         ebs = pBrep->set(*pBody);
  41.         if(AcBr::eOk == ebs)
  42.         {
  43.             AcBrBrepFaceTraverser* pFaceTrav
  44.                                 = new AcBrBrepFaceTraverser;
  45.             ebs = pFaceTrav->setBrep(*pBrep);
  46.             if(AcBr::eOk == ebs)
  47.             {
  48.                 for(pFaceTrav->restart();
  49.                         !pFaceTrav->done();pFaceTrav->next())
  50.                 {
  51.                     AcBrFace face;
  52.                     ebs = pFaceTrav->getFace(face);
  53.                     if(AcBr::eOk == ebs)
  54.                     {
  55.                         AcGeSurface *pGeSurface;
  56.                         ebs = face.getSurface(pGeSurface);
  57.                         Adesk::Boolean isClosedInU
  58.                                   = pGeSurface->isClosedInU();
  59.                         Adesk::Boolean isClosedInV
  60.                                   = pGeSurface->isClosedInV();
  61.                         int ucMax = uIsoDensity+2;
  62.                         if(isClosedInU)
  63.                             ucMax = uIsoDensity;
  64.                         int vcMax = vIsoDensity+2;
  65.                         if(isClosedInV)
  66.                             vcMax = vIsoDensity;
  67.                         AcGeInterval intervalU, intervalV;
  68.                         pGeSurface->getEnvelope
  69.                                        (intervalU, intervalV);
  70.                         double boundMinU = 0.0,
  71.                                boundMaxU = 0.0,
  72.                                boundMinV = 0.0,
  73.                                boundMaxV = 0.0;
  74.                         intervalU.getBounds
  75.                                        (boundMinU, boundMaxU);
  76.                         intervalV.getBounds
  77.                                        (boundMinV, boundMaxV);
  78.                         double paramIncrU =
  79.                         (boundMaxU - boundMinU) /
  80.                         (isClosedInU ? uIsoDensity :
  81.                                        (uIsoDensity+1));
  82.                         double paramIncrV =
  83.                         (boundMaxV - boundMinV) /
  84.                         (isClosedInV ? vIsoDensity :
  85.                                        (vIsoDensity+1));
  86.                         double paramU = boundMinU;
  87.                         for(int uc = 0; uc < ucMax; uc++)
  88.                         {
  89.                             double paramV = boundMinV;
  90.                             for(int vc = 0; vc < vcMax; vc++)
  91.                             {
  92.                                 AcArray<AcDbCurve*> uIsoLines;
  93.                                 es = pNS->getIsolineAtU(
  94.                                            paramU, uIsoLines);
  95.                                 if(es == Acad::eOk)
  96.                                 {
  97.                                     for(int cnt = 0;
  98.                                         cnt < uIsoLines.length();
  99.                                         cnt++)
  100.                                     {
  101.                                         AcDbCurve *pCurve
  102.                                             = uIsoLines[cnt];
  103.                                         pCurve->setColorIndex(1);
  104.                                         pMS->appendAcDbEntity
  105.                                                      (pCurve);
  106.                                         pCurve->close();
  107.                                     }
  108.                                 }
  109.                                 AcArray<AcDbCurve*> vIsoLines;
  110.                                 es = pNS->getIsolineAtV(
  111.                                            paramV, vIsoLines);
  112.                                 if(es == Acad::eOk)
  113.                                 {
  114.                                     for(int cnt = 0;
  115.                                         cnt < vIsoLines.length();
  116.                                         cnt++)
  117.                                     {
  118.                                         AcDbCurve *pCurve
  119.                                              = vIsoLines[cnt];
  120.                                         pCurve->setColorIndex(1);
  121.                                         pMS->appendAcDbEntity
  122.                                                      (pCurve);
  123.                                         pCurve->close();
  124.                                     }
  125.                                 }
  126.                                 paramV += paramIncrV;
  127.                             }
  128.                             paramU += paramIncrU;
  129.                         }
  130.                     }
  131.                     else
  132.                     {
  133.                         acutPrintf(
  134.                               ACRX_T("\nSorry, BRep error."));
  135.                         break;
  136.                     }
  137.                 }
  138.             }
  139.             else
  140.             {
  141.                 acutPrintf(ACRX_T("\nSorry, BRep error."));
  142.             }
  143.             delete pFaceTrav;
  144.         }
  145.         else
  146.         {
  147.             acutPrintf(ACRX_T("\nSorry, BRep error."));
  148.         }
  149.         delete pBrep;
  150.         es = pMS->close();
  151.         es = pBlockTable->close();
  152.     }
  153.     else
  154.     {
  155.         acutPrintf(ACRX_T("\nSorry, this code cannot handle
  156.                                multiple Nurb surfaces yet."));
  157.     }
  158.     // Cleanup
  159.     for(int cnt = 0; cnt < nsArray.length(); cnt++)
  160.     {
  161.         AcDbNurbSurface *pNS = NULL;
  162.         pNS = AcDbNurbSurface::cast(nsArray.at(cnt));
  163.         if(pNS != NULL)
  164.         {
  165.             delete pNS;
  166.         }
  167.     }
  168. }
  169. else
  170. {
  171.     acutPrintf(
  172.         ACRX_T("\nSorry, could not convert to Nurb surface."));
  173. }
  174. pSurface->close();
[颜色=#000000][size=10.6667px][size][color]
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 16:51 , Processed in 0.560807 second(s), 57 queries .

© 2020-2025 乐筑天下

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