You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GMSH网格生成问题:仅在矩形区域生成三角网格,排除圆形内部

解决GMSH矩形挖空圆形区域的网格生成问题

你的代码存在几个关键问题,导致无法正确挖空圆形区域,以下是修正后的完整代码及说明:

错误分析

  1. 圆形曲线环定义错误:原代码中Curve Loop(2) = {5, 6, 7}包含了点7,但曲线环只能由曲线组成,不能包含点;两个半圆已经能组成闭合圆形,无需额外点。
  2. 冗余的圆形曲面:无需单独创建圆形平面曲面,布尔减操作可以直接基于曲线环定义要移除的区域。
  3. 布尔操作语法问题:原代码的布尔减参数格式有误,需调整为正确的GMSH布尔操作语法。

修正后的代码

Mesh.MshFileVersion = 2.2;

//网格尺寸
lc = 0.25;

//点定义
Point(1) = {0, 0, 0, lc}; 
Point(2) = {8, 0, 0, lc}; 
Point(3) = {8, 2, 0, lc}; 
Point(4) = {0, 2, 0, lc};

//圆形参数
xc = 4; //x坐标 
yc = 1; //y坐标   
r = 0.2; //圆半径

Point(5) = {xc, yc + r, 0, lc}; //顶部点
Point(6) = {xc, yc, 0, lc};     //中心点
Point(7) = {xc, yc - r, 0, lc}; //底部点

//矩形边线  
Line(1) = {1, 2}; 
Line(2) = {2, 3}; 
Line(3) = {3, 4}; 
Line(4) = {4, 1};

//圆形曲线(两个半圆组成完整圆形)
Circle(5) = {7, 6, 5}; 
Circle(6) = {5, 6, 7}; 

//矩形曲线环与曲面
Curve Loop(1) = {1, 2, 3, 4}; 
Plane Surface(1) = {1};

//圆形曲线环(仅由曲线组成)
Curve Loop(2) = {5, 6};
//无需创建圆形曲面,直接用曲线环做布尔减

//从矩形曲面中减去圆形区域
BooleanDifference{ Plane Surface{1}; }{ Curve Loop{2}; Delete; };

//网格生成设置(如果需要结构化网格,确保曲面是被挖空后的新曲面)
Transfinite Surface {1};
// Mesh.RecombineAll = 1; //可选:如果需要四边形网格,开启重组,三角网格则删除该行

关键修改说明

  • 修正了圆形曲线环的定义,仅使用两个Circle曲线组成闭合环
  • 调整布尔减操作的参数顺序:先指定要保留的矩形曲面,再指定要移除的圆形曲线环,Delete参数用于清理临时几何对象
  • 移除了冗余的圆形平面曲面创建步骤

内容的提问来源于stack exchange,提问作者Afrânio Augusto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 08:27:16