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

建站程序太平洋手机

建站程序,太平洋手机,软件开发流程怎么写,上海网站制作网站制作公司目录 1、添加头文件与源文件 GEOMAlgo_Splitter.h GEOMAlgo_Splitter.cpp 2、测试 2.1平面分割立方体 2.2以边分面 2.3以面分面 1、添加头文件与源文件 GEOMAlgo_Splitter.h // Copyright (C) 2007-2019 CEA/DEN, EDF RD, OPEN CASCADE//// Copyright (C) 2003-2…目录 1、添加头文件与源文件 GEOMAlgo_Splitter.h GEOMAlgo_Splitter.cpp 2、测试 2.1平面分割立方体 2.2以边分面 2.3以面分面 1、添加头文件与源文件 GEOMAlgo_Splitter.h // Copyright (C) 2007-2019 CEA/DEN, EDF RD, OPEN CASCADE//// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,// CEDRAT, EDF RD, LEG, PRINCIPIA RD, BUREAU VERITAS//// This library is free software; you can redistribute it and/or// modify it under the terms of the GNU Lesser General Public// License as published by the Free Software Foundation; either// version 2.1 of the License, or (at your option) any later version.//// This library is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU// Lesser General Public License for more details.//// You should have received a copy of the GNU Lesser General Public// License along with this library; if not, write to the Free Software// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA//// See http://www.salome-platform.org/ or email : webmaster.salomeopencascade.com//// File: GEOMAlgo_Splitter.hxx//// Author: Peter KURNEV​#ifndef GEOMAlgo_Splitter_HeaderFile#define GEOMAlgo_Splitter_HeaderFile​#include Standard.hxx#include Standard_Macro.hxx#include Standard_Boolean.hxx#include Standard_Integer.hxx​#include NCollection_BaseAllocator.hxx​#include TopAbs_ShapeEnum.hxx​#include TopoDS_Shape.hxx​#include TopTools_ListOfShape.hxx#include TopTools_MapOfShape.hxx​#include BOPAlgo_Builder.hxx​////class : GEOMAlgo_Splitter//purpose ://class GEOMAlgo_Splitter : public BOPAlgo_Builder{public:​ Standard_EXPORT GEOMAlgo_Splitter();​ Standard_EXPORT GEOMAlgo_Splitter(const Handle(NCollection_BaseAllocator) theAllocator);​ Standard_EXPORT virtual ~GEOMAlgo_Splitter();​ Standard_EXPORT void AddTool(const TopoDS_Shape theShape);​ Standard_EXPORT const TopTools_ListOfShape Tools()const;​ Standard_EXPORT void SetLimit(const TopAbs_ShapeEnum aLimit);​ Standard_EXPORT TopAbs_ShapeEnum Limit()const;​ Standard_EXPORT void SetLimitMode(const Standard_Integer aMode);​ Standard_EXPORT Standard_Integer LimitMode()const;​ Standard_EXPORT virtual void Clear();​protected: Standard_EXPORT virtual void BuildResult(const TopAbs_ShapeEnum theType);​ Standard_EXPORT virtual void PostTreat();​protected: TopTools_ListOfShape myTools; TopTools_MapOfShape myMapTools; TopAbs_ShapeEnum myLimit; Standard_Integer myLimitMode;};​#endif​​ GEOMAlgo_Splitter.cpp // Copyright (C) 2007-2019 CEA/DEN, EDF RD, OPEN CASCADE//// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,// CEDRAT, EDF RD, LEG, PRINCIPIA RD, BUREAU VERITAS//// This library is free software; you can redistribute it and/or// modify it under the terms of the GNU Lesser General Public// License as published by the Free Software Foundation; either// version 2.1 of the License, or (at your option) any later version.//// This library is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU// Lesser General Public License for more details.//// You should have received a copy of the GNU Lesser General Public// License along with this library; if not, write to the Free Software// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA//// See http://www.salome-platform.org/ or email : webmaster.salomeopencascade.com//​// File: GEOMAlgo_Splitter.cxx// Created: Thu Sep 06 10:54:04 2012// Author: Peter KURNEV// pkvirinox//​#includeGEOMAlgo_Splitter.h#include TopAbs_ShapeEnum.hxx​#include TopoDS_Shape.hxx#include TopoDS_Compound.hxx#include TopoDS_Iterator.hxx​#include BRep_Builder.hxx​#include TopTools_MapOfShape.hxx#include TopTools_ListOfShape.hxx​#include TopExp.hxx​staticvoid TreatCompound(const TopoDS_Shape aC, TopTools_ListOfShape aLSX);​////function : //purpose : //GEOMAlgo_Splitter::GEOMAlgo_Splitter() : BOPAlgo_Builder(), myTools(myAllocator), myMapTools(100, myAllocator){ myLimit TopAbs_SHAPE; myLimitMode 0;}////function : //purpose : //GEOMAlgo_Splitter::GEOMAlgo_Splitter(const Handle(NCollection_BaseAllocator) theAllocator) : BOPAlgo_Builder(theAllocator), myTools(myAllocator), myMapTools(100, myAllocator){ myLimit TopAbs_SHAPE; myLimitMode 0;}////function : ~//purpose : //GEOMAlgo_Splitter::~GEOMAlgo_Splitter(){}////function : AddTool//purpose : //void GEOMAlgo_Splitter::AddTool(const TopoDS_Shape theShape){ if (myMapTools.Add(theShape)) { myTools.Append(theShape); // AddArgument(theShape); }}////function : Tools//purpose : //const TopTools_ListOfShape GEOMAlgo_Splitter::Tools()const{ return myTools;}////function : SetLimit//purpose : //void GEOMAlgo_Splitter::SetLimit(const TopAbs_ShapeEnum aLimit){ myLimit aLimit;}////function : Limit//purpose : //TopAbs_ShapeEnum GEOMAlgo_Splitter::Limit()const{ return myLimit;}////function : SetLimitMode//purpose : //void GEOMAlgo_Splitter::SetLimitMode(const Standard_Integer aMode){ myLimitMode aMode;}////function : LimitMode//purpose : //Standard_Integer GEOMAlgo_Splitter::LimitMode()const{ return myLimitMode;}////function : Clear//purpose : //void GEOMAlgo_Splitter::Clear(){ myTools.Clear(); myMapTools.Clear(); myLimit TopAbs_SHAPE; BOPAlgo_Builder::Clear();}////function : BuildResult//purpose : //void GEOMAlgo_Splitter::BuildResult(const TopAbs_ShapeEnum theType){ TopAbs_ShapeEnum aType; BRep_Builder aBB; TopTools_MapOfShape aM; TopTools_ListIteratorOfListOfShape aIt, aItIm; // aIt.Initialize(myArguments); for (; aIt.More(); aIt.Next()) { const TopoDS_Shape aS aIt.Value(); aType aS.ShapeType(); if (aType theType !myMapTools.Contains(aS)) { if (myImages.IsBound(aS)) { const TopTools_ListOfShape aLSIm myImages.Find(aS); aItIm.Initialize(aLSIm); for (; aItIm.More(); aItIm.Next()) { const TopoDS_Shape aSIm aItIm.Value(); if (aM.Add(aSIm)) { aBB.Add(myShape, aSIm); } } } else { if (aM.Add(aS)) { aBB.Add(myShape, aS); } } } }}////function : PostTreat//purpose : //void GEOMAlgo_Splitter::PostTreat(){ if (myLimit ! TopAbs_SHAPE) { Standard_Integer i, aNbS; BRep_Builder aBB; TopoDS_Compound aC; TopTools_IndexedMapOfShape aMx; // aBB.MakeCompound(aC); // TopExp::MapShapes(myShape, myLimit, aMx); aNbS aMx.Extent(); for (i 1; i aNbS; i) { const TopoDS_Shape aS aMx(i); aBB.Add(aC, aS); } if (myLimitMode) { Standard_Integer iType, iLimit, iTypeX; TopAbs_ShapeEnum aType, aTypeX; TopTools_ListOfShape aLSP, aLSX; TopTools_ListIteratorOfListOfShape aIt, aItX, aItIm; TopTools_MapOfShape aM; // iLimit (Standard_Integer)myLimit; // // 1. Collect the shapes to process aLSP aIt.Initialize(myArguments); for (; aIt.More(); aIt.Next()) { const TopoDS_Shape aS aIt.Value(); if (myMapTools.Contains(aS)) { continue; } // aType aS.ShapeType(); iType (Standard_Integer)aType; // if (iType iLimit) { aLSP.Append(aS); } // else if (aType TopAbs_COMPOUND) { aLSX.Clear(); // TreatCompound(aS, aLSX); // aItX.Initialize(aLSX); for (; aItX.More(); aItX.Next()) { const TopoDS_Shape aSX aItX.Value(); aTypeX aSX.ShapeType(); iTypeX (Standard_Integer)aTypeX; // if (iTypeX iLimit) { aLSP.Append(aSX); } } } }// for (; aIt.More(); aIt.Next()) { // aMx.Clear(); TopExp::MapShapes(aC, aMx); // 2. Add them to aC aIt.Initialize(aLSP); for (; aIt.More(); aIt.Next()) { const TopoDS_Shape aS aIt.Value(); if (myImages.IsBound(aS)) { const TopTools_ListOfShape aLSIm myImages.Find(aS); aItIm.Initialize(aLSIm); for (; aItIm.More(); aItIm.Next()) { const TopoDS_Shape aSIm aItIm.Value(); if (aM.Add(aSIm)) { if (!aMx.Contains(aSIm)) { aBB.Add(aC, aSIm); } } } } else { if (aM.Add(aS)) { if (!aMx.Contains(aS)) { aBB.Add(aC, aS); } } } } }// if (myLimitMode) { myShape aC; }//if (myLimit!TopAbs_SHAPE) { // Standard_Integer aNbS; TopoDS_Iterator aIt; TopTools_ListOfShape aLS; // aIt.Initialize(myShape); for (; aIt.More(); aIt.Next()) { const TopoDS_Shape aS aIt.Value(); aLS.Append(aS); } aNbS aLS.Extent(); if (aNbS 1) { myShape aLS.First(); } // //BOPAlgo_Builder::PostTreat();}////function : TreatCompound//purpose : //void TreatCompound(const TopoDS_Shape aC1, TopTools_ListOfShape aLSX){ Standard_Integer aNbC1; TopAbs_ShapeEnum aType; TopTools_ListOfShape aLC, aLC1; TopTools_ListIteratorOfListOfShape aIt, aIt1; TopoDS_Iterator aItC; // aLC.Append(aC1); for (;;) { aLC1.Clear(); aIt.Initialize(aLC); for (; aIt.More(); aIt.Next()) { const TopoDS_Shape aC aIt.Value(); //C is compound // aItC.Initialize(aC); for (; aItC.More(); aItC.Next()) { const TopoDS_Shape aS aItC.Value(); aType aS.ShapeType(); if (aType TopAbs_COMPOUND) { aLC1.Append(aS); } else { aLSX.Append(aS); } } } // aNbC1 aLC1.Extent(); if (!aNbC1) { break; } // aLC.Clear(); aIt.Initialize(aLC1); for (; aIt.More(); aIt.Next()) { const TopoDS_Shape aSC aIt.Value(); aLC.Append(aSC); } }// while(1)}//// myErrorStatus// // 0 - Ok// 1 - The object is just initialized// 2 - PaveFiller is failed// 10 - No shapes to process// 30 - SolidBuilder failed​​ 2、测试 2.1平面分割立方体 #include BRepPrimAPI_MakeBox.hxx#includeGEOMAlgo_Splitter.h#include gp_Pln.hxx#include BRepBuilderAPI_MakeFace.hxx#include TopExp_Explorer.hxx​​#includeViewer.h​​​int main(int argc, char* argv[]){ gp_Pnt p0 gp_Pnt(5, 5, 5); gp_Dir vnorm gp_Dir(1, 1, 1); gp_Pln pln gp_Pln(p0, vnorm); TopoDS_Face face BRepBuilderAPI_MakeFace(pln, -10, 10, -10, 10).Face(); TopoDS_Shape box BRepPrimAPI_MakeBox(10, 10, 10).Shape(); //启动分割函数 GEOMAlgo_Splitter splitter GEOMAlgo_Splitter(); //将box作为参数将面face作为分割工具。 splitter.AddArgument(box); splitter.AddTool(face); splitter.Perform(); Viewer vout(50, 50, 500, 500); //显示分割后的体 for (TopExp_Explorer i(splitter.Shape(), TopAbs_SOLID); i.More(); i.Next()) { vout i.Current(); } vout face; vout.StartMessageLoop(); return 0;} #include BRepPrimAPI_MakeBox.hxx#includeGEOMAlgo_Splitter.h#include gp_Pln.hxx#include BRepBuilderAPI_MakeFace.hxx#include TopExp_Explorer.hxx​​#includeViewer.h​​​int main(int argc, char* argv[]){ gp_Pnt p0 gp_Pnt(5, 5, 5); gp_Dir vnorm gp_Dir(1, 1, 1); gp_Pln pln gp_Pln(p0, vnorm); TopoDS_Face face BRepBuilderAPI_MakeFace(pln, -10, 10, -10, 10).Face(); TopoDS_Shape box BRepPrimAPI_MakeBox(10, 10, 10).Shape(); //启动分割函数 GEOMAlgo_Splitter splitter GEOMAlgo_Splitter(); //将box作为参数将面face作为分割工具。 splitter.AddArgument(box); splitter.AddTool(face); splitter.Perform(); Viewer vout(50, 50, 500, 500); //显示分割后的体 TopExp_Explorer i(splitter.Shape(), TopAbs_SOLID); i.Next(); vout i.Current(); vout face; vout.StartMessageLoop(); return 0;} 2.2以边分面 #include vector#include gp_Pnt.hxx#include gp_Circ.hxx#include gp_Pln.hxx#include BRepBuilderAPI_MakeFace.hxx#include BRepBuilderAPI_MakeEdge.hxx#includeViewer.h#includeGEOMAlgo_Splitter.h#include TopExp_Explorer.hxx​int main(int argc, char* argv[]){ gp_Pnt p0 gp_Pnt(); gp_Dir vnorm gp_Dir(1, 0, 0); gp_Pln pln gp_Pln(p0, vnorm); TopoDS_Shape face BRepBuilderAPI_MakeFace(pln, -10, 10, -10, 10); gp_Pnt p1 gp_Pnt(0, 0, 15); gp_Pnt p2 gp_Pnt(0, 0, -15); TopoDS_Shape edge BRepBuilderAPI_MakeEdge(p1, p2); //启动分割函数 GEOMAlgo_Splitter splitter GEOMAlgo_Splitter(); //将面作为参数将边edge作为分割工具。 splitter.AddArgument(face); splitter.AddTool(edge); splitter.Perform(); //显示分割后的体 TopExp_Explorer i(splitter.Shape(), TopAbs_FACE); i.Next(); Viewer vout(50, 50, 500, 500); vout i.Current(); vout edge; vout.StartMessageLoop(); return 0;} 2.3以面分面 #include vector#include gp_Pnt.hxx#include gp_Circ.hxx#include gp_Pln.hxx#include BRepBuilderAPI_MakeFace.hxx#include BRepBuilderAPI_MakeEdge.hxx#includeViewer.h#includeGEOMAlgo_Splitter.h#include TopExp_Explorer.hxx​int main(int argc, char* argv[]){ //第一个面 gp_Pnt p0 gp_Pnt(5, 5, 5); gp_Dir vnorm gp_Dir(1, 1, 1); gp_Pln pln gp_Pln(p0, vnorm); TopoDS_Shape face1 BRepBuilderAPI_MakeFace(pln, -10, 10, -10, 10); //工具面 vnorm gp_Dir(1, 1, 0); pln gp_Pln(p0, vnorm); TopoDS_Shape face2 BRepBuilderAPI_MakeFace(pln, -20, 20, -20, 20); //启动分割函数 GEOMAlgo_Splitter splitter GEOMAlgo_Splitter(); //将面作为参数将边edge作为分割工具。 splitter.AddArgument(face1); splitter.AddTool(face2); splitter.Perform(); //显示分割后的体 TopExp_Explorer i(splitter.Shape(), TopAbs_FACE); i.Next(); Viewer vout(50, 50, 500, 500); vout i.Current(); vout face2; vout.StartMessageLoop(); return 0;}
http://www.pierceye.com/news/249690/

相关文章:

  • 养生网站模板下载山东网站建设哪家专业
  • 最新电子产品网站模板网站建设公司 腾佳
  • 跟公司产品做网站用什么程序做网站最好优化
  • 在线代理网页浏览网站山东省城乡住房建设厅网站
  • 网站建设需准备什么彩页模板图片
  • 怎么用网站源码建站网站换空间步骤
  • 酒店网站开发回扣商丘企业网站建设服务
  • 网站建设策划解决方案河北自助建站系统平台
  • 有没有做高仿手表的网站设计师的职责
  • struts2 做的网站seo公司怎样找客户
  • 帮别人做网站赚钱吗中山快速建站合作
  • 保靖网站建设做网站要运用到代码吗
  • 我用织梦5.7做个网站应该把淘宝客店铺链接放到哪frontpage可以制作网页吗
  • 潍坊优化网站排名在线网页设计培训机构
  • c做的网站ps做 网站标准尺寸
  • 老虎淘客系统可以做网站吗wordpress po mo
  • 网站的建设与维护那个网站做图片好
  • 昆山网站建设详细方案建设企业网站初始必备的六大功能
  • 做网站是前端还是后端网站规划 设计 制作 发布与管理过程
  • 黄山网站开发威县做网站哪里便宜
  • 网站怎么分类视频聚合网站怎么做不侵权
  • 有没有做问卷还能赚钱的网站套别人的网站模板吗
  • 东莞做汽车有没有买票的网站做谷歌推广一个月赚10万
  • 抚州城乡建设厅网站建设局官网查询
  • 汉中微信网站建设装修3d效果图怎么制作
  • wordpress 主题放哪站内关键词自然排名优化
  • 网站备案后经营做网站实例教程
  • 软件网站怎么做的python下载安装教程
  • 旅游网站开发分析报告网站建设教程搭建芽嘱湖南岚鸿信赖
  • 网站的配色方案高校网站建设意义