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

Python调用GMSH生成体网格时如何通过代码设置曲面可见性

问题:通过Python控制Gmsh网格可见性设置

我使用Python调用Gmsh进行体网格划分,网格生成流程正常,但在Gmsh中查看结果时曲面默认不可见。由于后续需要构建结构化网格,手动通过「选项->网格->可见性」勾选[2d element faces]并取消勾选[3d element edges](默认勾选[2d element edges]和[3d element edges])来显示曲面过于繁琐,现询问是否可通过代码实现该可见性设置。

实现代码

import gmsh
import math

def main():
    gmsh.initialize()

    # alias to facilitate code writing
    factory = gmsh.model.geo

    # default mesh size
    lc = 1.

    # Geometry
    # points
    p1 = factory.addPoint(0., 0., 0., lc)
    p2 = factory.addPoint(10., 0., 0., lc)
    p3 = factory.addPoint(0., 10., 0., lc)
    p4 = factory.addPoint(4., 0., 0., lc)
    p5 = factory.addPoint(0., 4., 0., lc)
    p6 = factory.addPoint(4., 4., 0., lc)
    angle = math.pi/4.
    p7 = factory.addPoint(10*math.cos(angle), 10*math.sin(angle), 0., lc)

    # lines
    l1 = factory.addLine(p5, p6)
    l2 = factory.addLine(p6, p4)
    l3 = factory.addLine(p4, p1)
    l4 = factory.addLine(p1, p5)
    l5 = factory.addLine(p4, p2)
    l6 = factory.addLine(p5, p3)
    l7 = factory.addLine(p6, p7)
    l8 = factory.addCircleArc(p2, p1, p7)
    l9 = factory.addCircleArc(p7, p1, p3)

    # curve loops
    cl1 = factory.addCurveLoop([l3, l4, l1, l2])
    cl2 = factory.addCurveLoop([l7, l9, -l6, l1])
    cl3 = factory.addCurveLoop([l5, l8, -l7, l2])

    # surfaces
    s1 = factory.addPlaneSurface([cl1])
    s2 = factory.addPlaneSurface([cl2])
    s3 = factory.addPlaneSurface([cl3])

    # extrusions
    dx = 5.
    num_els_z = 10
    factory.extrude([(2, s1), (2, s2), (2, s3)], 0., 0., dx,
                    numElements=[num_els_z], recombine=True)

    factory.synchronize()

    # Meshing
    meshFact = gmsh.model.mesh

    # transfinite curves
    n_nodes = 10
    # "Progression" 1 is default
    meshFact.setTransfiniteCurve(l1, numNodes=n_nodes)
    meshFact.setTransfiniteCurve(l2, numNodes=n_nodes)
    meshFact.setTransfiniteCurve(l3, numNodes=n_nodes)
    meshFact.setTransfiniteCurve(l4, numNodes=n_nodes)
    meshFact.setTransfiniteCurve(l5, numNodes=n_nodes)
    meshFact.setTransfiniteCurve(l6, numNodes=n_nodes)
    meshFact.setTransfiniteCurve(l7, numNodes=n_nodes)
    meshFact.setTransfiniteCurve(l8, numNodes=n_nodes)
    meshFact.setTransfiniteCurve(l9, numNodes=n_nodes)
    # transfinite surfaces
    meshFact.setTransfiniteSurface(s1)
    meshFact.setTransfiniteSurface(s2)
    meshFact.setTransfiniteSurface(s3)

    # mesh
    meshFact.generate(2)
    meshFact.recombine()
    meshFact.generate(3)

    gmsh.fltk.run()

    gmsh.finalize()


if __name__ == "__main__":
    main()

效果对比

  • 默认状态:默认显示效果
  • 期望状态:期望显示效果

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 08:42:13