当前位置: 首页 > news >正文

成华网站制作手机网站设计开发

成华网站制作,手机网站设计开发,最新网站推广方法,中国移动官方网站登录入口FastCAE使用gmsh进行网格划分#xff0c;划分的时候直接启动一个新的gmsh进程#xff0c;个人猜测这么设计是为了规避gmsh的GPL协议风险。 进行网格划分时#xff0c;其大体运行如下图#xff1a; 一、Python到gmshModule模块 GUI操作到Python这步不再分析#xff0c;比…FastCAE使用gmsh进行网格划分划分的时候直接启动一个新的gmsh进程个人猜测这么设计是为了规避gmsh的GPL协议风险。 进行网格划分时其大体运行如下图 一、Python到gmshModule模块 GUI操作到Python这步不再分析比较简单。执行的Python代码大概如下 gmsher Mesher.Gmsher() gmsher.setDim(3) gmsher.selectedAll() gmsher.setElementType(Tet) gmsher.setElementOrder(1) gmsher.setMethod(1) gmsher.setSizeFactor(1) gmsher.setMinSize(0) gmsher.setMaxSize(100) gmsher.cleanGeo() gmsher.startGenerationThread()这些代码可以在控制台找到如下图 这样创建了一个gmsher对象赋予网格划分的控制参数最后调用startGenerationThread()方法这个方法的源码在Mesher.py文件中。对于三维问题会调用gmshModule模块的接口GenerateMesh3D()。gmshModule同样提供了针对二维、流体网格的划分接口代码在GmshPy.h文件中如下图所示。 二、启动gmsh线程写出gmsh文件生成网格 在GmshPy::GenerateMesh3D()函数中只是准备网格划分的参数最后会调用到GmshModule::generateSlot()函数中。 void GmshModule::generateSlot(GMshPara *para) {GmshThread *thread iniGmshThread(para);auto processBar new ModuleBase::ProcessBar(_mainwindow, tr(Gmsh Working...));_threadManager-insertThread(processBar, thread); // 运行gmsh线程 }// 初始化gmsh线程 GmshThread *GmshModule::iniGmshThread(GMshPara *para) {if (_threadManager-isRuning()){delete para;ModuleBase::Message m(Common::Message::Error, QString(Gmsh is running !));emit printMessageToMessageWindow(m);}GmshThread *thread new GmshThread(_mainwindow, _preWindow, this, para-_dim);thread-setPara(para);delete para;return thread; }在GmshModule::generateSlot函数中会初始化一个线程并启动运行。 再打开GmshThread的run方法大体流程就是合并几何对象形成一个TopoDS_Compound对象调用BRepTools::Write写出geometry.brep文件。写出gmsh控制文件最后调用gmsh命令生成网格文件。 void GmshThread::run(){this-mergeGeometry(); // 写出几何文件this-initGmshEnvoirment(); // 写出gmsh的控制文件this-generate(); // 执行gmsh命令}void GmshThread::mergeGeometry(){QString exelPath QCoreApplication::applicationDirPath();const QString tempDir exelPath /../temp/;QDir dir(tempDir);if (!dir.exists())dir.mkpath(tempDir);// 清理之前的临时文件const QString meshfilename exelPath /../temp/mesh.vtk;if (QFile::exists(meshfilename))QFile::remove(meshfilename);const QString geofilename exelPath /../temp/geometry.brep;if (QFile::exists(geofilename))QFile::remove(geofilename);const QString gmshfilename exelPath /../temp/gmsh.Geo;if (QFile::exists(gmshfilename))QFile::remove(gmshfilename);const QString tempPath tempDir QString(geometry.brep);if (_fluidMesh)_fluidMeshProcess-mergeFluidField(_compounnd, _solidHash);else if (_selectall)mergeAllGeo(); // 将需要划分网格的组成一个compounnd对象else if (_selectvisible)mergeVisibleGeo();elsemergeSelectGeo();QByteArray arr tempPath.toLatin1();BRepTools::Write(*_compounnd, arr.data()); // 使用BRepTools写出geometry.brep文件}void GmshThread::initGmshEnvoirment(){QString exelPath QCoreApplication::applicationDirPath();const QString tempDir exelPath /../temp/;// const QString gmshDir exelPath /gmsh/;QFile::remove(tempDir gmsh.Geo);_scriptWriter-setCompound(_compounnd);setGmshScriptData();if (_fluidMesh){QListint curve _fluidMeshProcess-getInerMember(1);QListint surface _fluidMeshProcess-getInerMember(2);_scriptWriter-writeFluidMeshScript(tempDir, _solidHash, curve, surface);}else_scriptWriter-writeGmshScript(tempDir); // 写出gmsh控制文件}void GmshThread::generate(){QString exelPath QCoreApplication::applicationDirPath();const QString tempDir exelPath /../temp/;// const QString gmshDir exelPath /gmsh/;QString gmshexe exelPath /gmsh;bool ok false; #ifdef Q_OS_WINok QFile::exists(gmshexe .exe); #endif #ifdef Q_OS_LINUXok QFile::exists(gmshexe); #endifif (!ok){QMessageBox::warning(_mainwindow, QString(tr(Warning)), QString(tr(Gmsh is not exist !)));return;}// 调用gmsh生成网格QString startProcess QString(%1 %2 -format vtk -bin -o %3 -%4).arg(gmshexe).arg(tempDir gmsh.Geo).arg(tempDir mesh.vtk).arg(_dim);if (gmshexe.contains( ))startProcess QString(\%1\).arg(startProcess);qDebug() startProcess;_process.start(startProcess);}最后调用的gmsh命令大体如下生成mesh.vtk网格文件。 C:/workspace/FastCAE/build/Debug/gmsh C:/workspace/FastCAE/build/Debug/…/temp/gmsh.Geo -format vtk -bin -o C:/workspace/FastCAE/build/Debug/…/temp/mesh.vtk -3 三、读取网格文件 读取网格文件代码在GmshThread::readMesh函数中注意执行这段代码时gmsh线程已经结束了。 void GmshThread::readMesh() {MeshData::MeshData *data MeshData::MeshData::getInstance();QString exelPath QCoreApplication::applicationDirPath();const QString fileName exelPath /../temp/mesh.vtk;QTextCodec *codec QTextCodec::codecForName(GB18030);QByteArray ba codec-fromUnicode(fileName);vtkSmartPointervtkDataSetReader vtkReader vtkSmartPointervtkDataSetReader::New();vtkReader-SetFileName(ba);vtkReader-Update();vtkDataSet *dataset vtkReader-GetOutput();if (dataset nullptr)return;if (!_isSaveToKernal)emit writeToSolveFileSig(dataset);else{auto k new MeshData::MeshKernal();k-setName(QString(Mesh_%1).arg(k-getID()));k-setMeshData(dataset);data-appendMeshKernal(k);if (!_fluidMesh)setGmshSettingData(k);emit _gmshModule-updateMeshTree();emit _gmshModule-updateSetTree();// emit _preWindow-updateMeshActorSig();emit _gmshModule-updateActions();emit updateMeshActor();} }由于gmsh输出的是vtk文件这里直接使用vtkDataSetReader读取的。
http://www.w-s-a.com/news/220293/

相关文章:

  • 做设计网上揽活哪个网站最好中企动力算大厂吗
  • 电子商务网站开发常用工具牡丹江吧
  • 四川成都网站制作公司wordpress 获取某个分类的文章
  • wordpress 编辑器推动门户网站建设不断优化升级
  • 做游戏网站的前景温江区建设局网站
  • 济南做微网站推广做网站seo优化总结
  • 巢湖网站建设电话长沙大型互联网公司
  • wordpress站群主机海南人
  • 云南网站建设维护商业网站建设教程
  • 云南省滇中引水工程建设管理局网站jsp个人网站设计
  • 网站建设 域名业务 邮箱互联网装饰网站
  • 建设厅技工在哪个网站上查询有了网站模板 还要怎样做
  • 城市联盟网站怎么做百度云网站建设视频教程
  • 织梦cms 官方网站网页视频如何下载到电脑
  • 查询建设公司业绩网站国外外链平台
  • 搭建直播网站需要怎么做做石材网站步骤
  • 移动网站如何做权重wordpress 统计字数 插件
  • 编写网站的软件百度指数教程
  • 网站改版建议策划书做设计什么兼职网站
  • 北京做兼职网站文创产品设计流程
  • 南阳做玉器网站wordpress 图片被缩小
  • 自己做网站卖衣服cms做网站容易不
  • 安徽安搜做的网站怎么样手机网站商城建设答辩问题
  • 分析不同网站的优缺点房产网站定制
  • 深圳工业设计大展2021论坛与网站做优化哪个更好
  • 什么网站做招聘比较好网络营销渠道管理
  • 网站建设选择什么模式淘宝网站可以做轮播吗
  • 山西免费网站制作乌市高新区建设局网站
  • 公司网站建设费用会计处理手机app免费下载
  • 网站的做网站的公司网站有些什么内容