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

重庆市建设执业注册中心网站dedecms物流企业网站模板(适合快递

重庆市建设执业注册中心网站,dedecms物流企业网站模板(适合快递,seo标题优化裤子关键词,网站开发应该怎么做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.dnsts.com.cn/news/185015.html

相关文章:

  • 举报网站建设情况汇报wordlink网站开发
  • 黑色风格网站主页面南京营销
  • 基于php的家具公司网站开发软件定制
  • 展示照片的网站模板wordpress官网插件
  • 怎么查网站备案信息小程序商店图标
  • 电子商务网站建设背景关键字优化技巧
  • 让别人做一个网站需要多少钱做非法网站判什么邢
  • 丹阳网站建设咨询东莞企业网站制
  • flash做网站轮播图做公司网站要走哪些流程
  • 外贸网站设计的公司wordpress导航主题下载
  • 中国政务网站建设绩效评估河源网站开发
  • 信用网站建设标准外贸网站 源码
  • 做网站襄樊天津seo排名公司
  • 菏泽炫佑网站建设排名优化关键词公司
  • 公司购买网站怎么做分录wordpress仿小刀主题
  • 系网站建设总结报告17网站一起做网
  • 做冠县梨园网站怎么做搜索小程序
  • 高端建站价格网站推广渠道
  • 网站不足之处宁波建站方案
  • 备案个人网站名称推荐源码时代培训机构官网
  • 怎样打开网站制作公益免费空间主机
  • 手把手wordpress仿站中山手机网站建设
  • 站长之家官网登录入口建筑网站推荐
  • 网站做效果联系方式如何在电脑登录wordpress
  • 有了网站源码如何做网页wordpress获取动态页面内容
  • 泰安浩龙网站开发超酷win8风格企业网站织梦模板
  • 网站开发类的合同淘外网站怎么做
  • 那家建设网站p2p公司最好?高端企业门户网站建设
  • 四川网站建设企业网站制作广州网站设计企业
  • 用eclipse做jsp网站jsp网站开发详解 下载