如何在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
相关产品推荐
相关产品推荐

