Open CASCADE学习|拉伸

目录

1、沿方向拉伸

2、沿路径拉伸

3、变形拉伸


1、沿方向拉伸

#include <Geom_CylindricalSurface.hxx>
#include <gp_Ax3.hxx>
#include <GeomAPI_Interpolate.hxx>
#include <BRepAdaptor_Curve.hxx>
#include <BRepBuilderAPI_MakeEdge.hxx>
#include <Geom2d_TrimmedCurve.hxx>
#include <GCE2d_MakeSegment.hxx>
​
#include <GeomAPI_PointsToBSpline.hxx>
#include <BRepBuilderAPI_MakeFace.hxx>
#include <GC_MakeCircle.hxx>
#include <BRepBuilderAPI_MakeWire.hxx>
#include <BRepPrimAPI_MakeCylinder.hxx>
#include <BRep_Builder.hxx>
#include <TopoDS.hxx>
​
#include <TopExp_Explorer.hxx>
#include <BRepFeat_SplitShape.hxx>
​
#include"Viewer.h"
​
​
#include <BRepAlgoAPI_Section.hxx>
#include <BRepPrimAPI_MakePrism.hxx>
​
​
int main(int argc, char* argv[])
{
    gp_Dir  Z(0.0, 0.0, 1.0);
    gp_Dir  ZX(1.0, 0.0, 1.0);
    gp_Pnt center(0, 0, 0.0);
    gp_Pnt xr(0.5, 0, 0.0);
    gp_Pnt yr(0.0, 1.0, 0.0);
    gp_Pnt zr(0.0, 0.0, 7.0);
    gp_Ax2  wb(center, Z);
    gp_Circ  wbcircle(wb, 0.125 / 2);
    TopoDS_Edge wbe = BRepBuilderAPI_MakeEdge(wbcircle);
    TopoDS_Edge xline = BRepBuilderAPI_MakeEdge(center, xr);
    TopoDS_Edge yline = BRepBuilderAPI_MakeEdge(center, yr);
    TopoDS_Edge zline = BRepBuilderAPI_MakeEdge(center, zr);
    BRepPrimAPI_MakeCylinder aCylinderMaker(10.0, 20.0);
    TopoDS_Shape aCylinder = aCylinderMaker.Shape();
    gp_Pln TPlane(center, ZX);
    TopoDS_Face tanF = BRepBuilderAPI_MakeFace(TPlane);
    TopoDS_Shape out = BRepPrimAPI_MakePrism(zline, 10*ZX);
    
    //TopoDS_Edge out = BRepBuilderAPI_MakeEdge(c1);
    Viewer vout(50, 50, 500, 500);
    vout << out;
    vout << xline;
    vout << yline;
    vout << zline;
    vout.StartMessageLoop();
    return 0;
}
​

2、沿路径拉伸

#include <Geom_CylindricalSurface.hxx>
#include <gp_Ax3.hxx>
#include <GeomAPI_Interpolate.hxx>
#include <BRepAdaptor_Curve.hxx>
#include <BRepBuilderAPI_MakeEdge.hxx>
#include <Geom2d_TrimmedCurve.hxx>
#include <GCE2d_MakeSegment.hxx>
​
#include <GeomAPI_PointsToBSpline.hxx>
#include <BRepBuilderAPI_MakeFace.hxx>
#include <GC_MakeCircle.hxx>
#include <BRepBuilderAPI_MakeWire.hxx>
#include <BRepPrimAPI_MakeCylinder.hxx>
#include <BRep_Builder.hxx>
#include <TopoDS.hxx>
​
#include <BRepOffsetAPI_MakePipe.hxx>
#include <GC_MakeSegment.hxx>
​
#include"Viewer.h"
​
​
#include <GC_MakeArcOfCircle.hxx>
#include <BRepPrimAPI_MakePrism.hxx>
​
​
int main(int argc, char* argv[])
{
    gp_Dir  Z(0.0, 0.0, 1.0);
    gp_Dir  ZX(1.0, 0.0, 1.0);
    gp_Pnt center(0, 0, 0.0);
    gp_Pnt xr(0.5, 0, 0.0);
    gp_Pnt yr(0.0, 1.0, 0.0);
    gp_Pnt zr(0.0, 0.0, 7.0);
    gp_Ax2  wb(center, Z);
    gp_Circ  wbcircle(wb, 0.125 / 2);
    TopoDS_Edge wbe = BRepBuilderAPI_MakeEdge(wbcircle);
    TopoDS_Edge xline = BRepBuilderAPI_MakeEdge(center, xr);
    TopoDS_Edge yline = BRepBuilderAPI_MakeEdge(center, yr);
    TopoDS_Edge zline = BRepBuilderAPI_MakeEdge(center, zr);
    BRepPrimAPI_MakeCylinder aCylinderMaker(10.0, 20.0);
    TopoDS_Shape aCylinder = aCylinderMaker.Shape();
    gp_Pln TPlane(center, ZX);
    TopoDS_Face tanF = BRepBuilderAPI_MakeFace(TPlane);
    Handle(Geom_TrimmedCurve) arc = GC_MakeArcOfCircle(gp_Pnt(0, 0, 0), gp_Pnt(10, 10, 0), gp_Pnt(0, 20, 0));
    Handle(Geom_TrimmedCurve) arc2 = GC_MakeArcOfCircle(gp_Pnt(0, 20, 0), gp_Pnt(-10, 30, 0), gp_Pnt(0, 40, 0));
    Handle(Geom_TrimmedCurve) seg = GC_MakeSegment(gp_Pnt(0, 40, 0), gp_Pnt(20, 40, 0));
    Handle(Geom_TrimmedCurve) seg1 = GC_MakeSegment(gp_Pnt(20, 40, 0), gp_Pnt(20, 60, 0));
    TopoDS_Edge arcEdge = BRepBuilderAPI_MakeEdge(arc);
    TopoDS_Edge arcEdge1 = BRepBuilderAPI_MakeEdge(arc2);
    TopoDS_Edge segEdge = BRepBuilderAPI_MakeEdge(seg);
    TopoDS_Edge segEdge1 = BRepBuilderAPI_MakeEdge(seg1);
    TopoDS_Wire arcWire = BRepBuilderAPI_MakeWire(arcEdge, arcEdge1, segEdge/*, segEdge1*/); //return arcWire;
    TopoDS_Shape out = BRepOffsetAPI_MakePipe(arcWire,zline);
    
    //TopoDS_Edge out = BRepBuilderAPI_MakeEdge(c1);
    Viewer vout(50, 50, 500, 500);
    vout << out;
    vout << xline;
    vout << yline;
    vout << zline;
    vout.StartMessageLoop();
    return 0;
}
​

3、变形拉伸

#include <Geom_CylindricalSurface.hxx>
#include <gp_Ax3.hxx>
#include <gp_Circ.hxx>
#include <BRepBuilderAPI_MakeEdge.hxx>
#include <Geom_Plane.hxx>
#include <BRepPrimAPI_MakeBox.hxx>
#include <GCE2d_MakeSegment.hxx>
​
#include <BRepOffsetAPI_DraftAngle.hxx>
#include <TopExp_Explorer.hxx>
#include <GC_MakeCircle.hxx>
#include <BRepBuilderAPI_MakeWire.hxx>
#include <BRepPrimAPI_MakeCylinder.hxx>
#include <BRep_Builder.hxx>
#include <TopoDS.hxx>
​
#include <gp_Pln.hxx>
#include <GC_MakeSegment.hxx>
​
#include"Viewer.h"
​
​
#include <GC_MakeArcOfCircle.hxx>
#include <BRepPrimAPI_MakePrism.hxx>
​
​
int main(int argc, char* argv[])
{
    gp_Dir  Z(0.0, 0.0, 1.0);
    gp_Dir  ZX(1.0, 0.0, 1.0);
    gp_Pnt center(0, 0, 0.0);
    gp_Pnt xr(0.5, 0, 0.0);
    gp_Pnt yr(0.0, 1.0, 0.0);
    gp_Pnt zr(0.0, 0.0, 7.0);
    gp_Ax2  wb(center, Z);
    gp_Circ  wbcircle(wb, 0.125 / 2);
    TopoDS_Edge wbe = BRepBuilderAPI_MakeEdge(wbcircle);
    TopoDS_Edge xline = BRepBuilderAPI_MakeEdge(center, xr);
    TopoDS_Edge yline = BRepBuilderAPI_MakeEdge(center, yr);
    TopoDS_Edge zline = BRepBuilderAPI_MakeEdge(center, zr);
    TopoDS_Shape S = BRepPrimAPI_MakeBox(200., 300., 150.);
    BRepOffsetAPI_DraftAngle adraft(S);
    TopExp_Explorer Ex;
    for (Ex.Init(S, TopAbs_FACE); Ex.More(); Ex.Next()) 
    {
        TopoDS_Face F = TopoDS::Face(Ex.Current());
        Handle(Geom_Plane) surf = Handle(Geom_Plane)::DownCast(BRep_Tool::Surface(F));
        gp_Pln apln = surf->Pln();
        gp_Dir dirF = apln.Axis().Direction();
        if (dirF.IsNormal(gp_Dir(0., 0., 1.), Precision::Angular()))
            adraft.Add(F, gp_Dir(0., 0., 1.), 15. * M_PI / 180, gp_Pln(gp::XOY()));
    }
    TopoDS_Shape out = adraft.Shape();
    //TopoDS_Edge out = BRepBuilderAPI_MakeEdge(c1);
    Viewer vout(50, 50, 500, 500);
    vout << out;
    vout << xline;
    vout << yline;
    vout << zline;
    vout.StartMessageLoop();
    return 0;
}
​

相关推荐

  1. Babylonjs学习笔记(十)——多边形

    2024-02-05 14:48:03       34 阅读
  2. 图片覆盖整个页面的css写法

    2024-02-05 14:48:03       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-05 14:48:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-05 14:48:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-05 14:48:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-05 14:48:03       18 阅读

热门阅读

  1. 正则表达式

    2024-02-05 14:48:03       26 阅读
  2. WSL和Ubuntu编译IJKPlayer

    2024-02-05 14:48:03       26 阅读
  3. 前端实现数组的去重

    2024-02-05 14:48:03       32 阅读
  4. 排序刷题3

    2024-02-05 14:48:03       32 阅读
  5. 【Ubuntu】安装filebeat

    2024-02-05 14:48:03       31 阅读
  6. ubuntu 安装 ffmpeg 6.0

    2024-02-05 14:48:03       35 阅读
  7. 蓝桥杯典型真题分析详解--编程思维--日期统计

    2024-02-05 14:48:03       28 阅读
  8. ASR 概述

    2024-02-05 14:48:03       31 阅读
  9. SQL--DDL

    SQL--DDL

    2024-02-05 14:48:03      27 阅读
  10. MySQL的DDL语言

    2024-02-05 14:48:03       35 阅读