天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 25|回复: 0

C++ 从 AcDbSolid 中检索可能位于块中的顶点

[复制链接]
  • TA的每日心情
    开心
    昨天 06:36
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    105

    主题

    11

    回帖

    1308

    积分

    管理员

    积分
    1308
    QQ
    发表于 2024-10-6 17:21:50 | 显示全部楼层 |阅读模式
    1. void CRmWindow::solid_meshing(AcDbEntity* entity, const AcGeMatrix3d& trans)
    2. {
    3. #if 0
    4.         AcDbSolid* pSolid = AcDbSolid::cast(entity);

    5.         double thickness = pSolid->thickness();

    6.         AcGePoint3d vertices[4];
    7.         int numVertices = 4;
    8.         AcGeVector3d normal = pSolid->normal();
    9.         double elevation = pSolid->elevation();

    10.         for (int i = 0; i < 4; ++i)
    11.                 pSolid->getPointAt(i, vertices[i]);

    12.         if (vertices[2].isEqualTo(vertices[3]))
    13.                 numVertices = 3;

    14.         for (int i = 0; i < numVertices; ++i)
    15.                 vertices[i].z += elevation;
    16.        
    17.         std::vector<AcGePoint3d> allVertices;

    18.         for (int i = 0; i < numVertices; ++i) {
    19.                 vertices[i].transformBy(trans);
    20.                 allVertices.push_back(vertices[i]);
    21.         }

    22.         for (int i = 0; i < numVertices; ++i) {
    23.                 AcGePoint3d extrudedVertex = vertices[i] + normal * thickness;
    24.                 extrudedVertex.transformBy(trans);
    25.                 allVertices.push_back(extrudedVertex);
    26.         }

    27.         std::ofstream file(path_from_mfc + L'\\' + mesh_file_str, std::ios::app);
    28.         if (!file.is_open()) {
    29.                 acutPrintf(L"Failed to open file for writing.\n");
    30.                 return;
    31.         }

    32.         std::size_t numTotalVertices = allVertices.size();
    33.         file << global_obj_mesh_counter << '\n' << numTotalVertices << "    " << 1 << '\n'; // Number of vertices and one solid

    34.         for (const auto& vertex : allVertices) {
    35.                 file << formatDouble(vertex.x) << '\n'
    36.                         << formatDouble(vertex.y) << '\n'
    37.                         << formatDouble(vertex.z) << '\n';
    38.         }
    39.         file.close();
    40. #endif
    41. }
    复制代码

     

     

     

     

    C++ 从 AcDbSolid 中检索可能位于块中的顶点
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

    GMT+8, 2024-11-1 10:34 , Processed in 0.132708 second(s), 22 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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