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

如何在FreeCAD的Coin3D场景中使用OpenGL进行绘图?

在FreeCAD的QuarterWidget中直接使用OpenGL绘图

需求与前期准备

希望在FreeCAD衔接Coin3D与OpenCascade场景的QuarterWidget中,直接使用OpenGL绘制新对象(不依赖Coin3D等库),采用Python开发(也接受C++示例)。已通过以下代码获取到相关对象:

def GetQuarterWidget(self): #From FreeCAD forum
    views = []
    self.mainWindow=Gui.getMainWindow()
    for w in self.mainWindow.findChild(QtGui.QMdiArea).findChildren(QtGui.QWidget):
        if w.inherits("SIM::Coin3D::Quarter::QuarterWidget"):
            views.append(w)
    return views

def getMdiWindow(self):  #From FreeCAD forum
    mw = Gui.getMainWindow()
    mdi = mw.findChild(PySide2.QtWidgets.QMdiArea)

已实现的三角形绘制代码

已成功绘制三角形,代码如下:

from OpenGL.GL import *
from OpenGL.GLU import *
import PySide2
import FreeCADGui as Gui
import pivy.coin as coin
import PySide.QtCore as QtCore
import PySide.QtGui as QtGui
from PySide2.QtOpenGL import *
from OpenGL.WGL import *

def drawOpenGl(arg1,arg2):
    glTranslatef(-2.5, 0.5, -6.0)
    glColor3f( 1.0, 1.5, 0.0 )
    glPolygonMode(GL_FRONT, GL_FILL)
    glBegin(GL_TRIANGLES)
    glVertex3f(2.0,-1.2,0.0)
    glVertex3f(2.6,0.0,0.0)
    glVertex3f(2.9,-1.2,0.0)
    glEnd()

def drawsomething():
    w_view = Gui.ActiveDocument.ActiveView
    Root_SceneGraph = w_view.getSceneGraph()
    calback_=coin.SoCallback()
    calback_.setCallback(drawOpenGl)
    Root_SceneGraph.addChild(calback_)

drawsomething()

依赖安装步骤

需通过FreeCAD自带的Python环境安装PyOpenGL,执行命令:

FREECAD_DIR/bin/Scripts/pip install pyopengl

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 05:31:23