occt 订阅
Over Clock Checking Tool简称OCCT,是一款计算机软件,该软件主要设计用于检测系统在高负荷工作状态下系统的稳定性,主要检测电源输出值与CPU、主板的温度,以便评估系统是否仍有超频的潜力。 展开全文
Over Clock Checking Tool简称OCCT,是一款计算机软件,该软件主要设计用于检测系统在高负荷工作状态下系统的稳定性,主要检测电源输出值与CPU、主板的温度,以便评估系统是否仍有超频的潜力。
信息
作    用
检测系统在高负荷工作状态稳定性
原    理
准确获得主板感应器的数据
外文名
Over Clock Checking Tool
简    称
OCCT
Over Clock Checking ToolOCCT简介
因其对电源的检测结果详尽、直观而深受用户的欢迎,几乎在所有涉及电源品质的讨论中,都以OCCT的检测结果为标准。
收起全文
精华内容
下载资源
问答
  • OCCT原生支持的功能包括NURBS,样条,表面缝纫,STL修复,STEP导入/导出以及其他复杂操作,以及CGAL支持的标准CSG操作 能够导入/导出STEP并能够以CAD包中创建的STEP模型开始,然后添加参数特征。 在使用STL的...
  • OCCT74.rar

    2020-02-27 10:10:23
    自己 编译的occ库可以直接使用,目前在使用netgen,有用到occ提供此库进行分享学习
  • OCCT基础

    2019-03-06 14:09:00
    OCCT存储器管理器可以被配置为将不同的优化技术应用于不同的存储器块(取决于它们的大小),甚至可以避免任何优化并直接使用C函数malloc()和free()。 MMGT_OPT:如果设置为0(默认值),则每个内存块直接在C...

    1620281-20190306140858005-116044193.png

    基础

    构成总览

    • Root类
      • 基本类型,如布尔,字符,整数或实数
      • 安全处理动态创建的对象,确保自动删除未引用的对象
      • 可配置的内存管理器,提高了应用程序的性能
      • 包含运行时类型信息机制,有助于创建复杂应用
      • 异常管理
      • 一些C++的流
    • 集合类
      • 字符串
      • 集合
    • 向量和矩阵
      • 向量矩阵的基本计算
    • 基础几何类
      • 基础几何(点,圆等)
      • 基础几何动作(缩放等)
    • 常用的数学工具
      • 求解一组线性代数方程的算法
      • 找到一个或多个自变量函数最小值的算法
      • 找到一个或一组非线性方程的根的算法
      • 找到方阵的特征值和特征向量的算法
    • 原子类
    • 应用服务
      • 单位转换工具,提供处理数量和相关物理单位的统一机制,详情UnitsAPI
      • 表达式的基本解释器,用于脚本创建等等。详情ExprIntrp
      • 用于处理配置资源文件和可自定义消息文件的工具。详情
      • 进度指示和用户中断接口

    库的组织方法

    模块和工具

    整个OCCT库由一组模块组成。Root模块提供了基础的服务并被其他模块所使用。
    每个模块主要由一个或多个工具包组成。在计算机中,工具包由共享库(例如.so或.dll)表示。

    一个包由语义上由联系的类组织在一起。例如:几何包包括点,线,圆等。包的命名规范,通常情况下包的命名为:包名_类名。例如:集合包下的圆的名字就是:Geom_Circle。包中的内容可以包括的数据类型:

    • 枚举
    • 对象类
    • 异常
    • 指向其他对象类的指针在包中

    数据类型

    对象是数据类型的实例,其定义决定了如何使用它。每种数据类型由一个或多个类实现,这些类构成系统的基本元素。
    Open CASCADE技术中的数据类型分为两类:

    • 由值操作的数据类型
    • 由句柄操作的数据类型

    由值操作的数据类型

    由值操纵的类型的变量包含实例本身。
    有三种类型:

    1620281-20190306140859017-14119141.jpg

    由句柄操作的数据类型

    由句柄操纵的类型的变量包含对实例的引用。
    注意
    由句柄操作的类型默认是NULL。因此我们需要使用

    Handle(MyClass) m=new MyClass;

    来进行赋初值。
    类型:
    由继承自Transient类的类

    什么时候需要句柄类型的数据?

    • 如果对象的生命周期比较长,那么就使用句柄类型的。
    • 如果对象的生命周期短,那么就是用值类型的。
    • 如果一个对象只在一段时间内创建,但在整个应用程序的生命周期中都存在,那么最好的选择可能是由句柄操作的类或声明为全局变量的值。

    使用句柄的编程方法
    句柄的定义
    句柄是在OCCT中的智能指针。几个句柄可以同时使用一个对象,单个句柄可以引用多个对象,但一次只能引用一个对象。如果需要引用其他对象,必须像使用C ++指针一样取消引用句柄。
    类的组织
    Standard_Transient是OCCT类大的基类,可以被句柄操作。
    从Transient派生(直接或间接)的类的对象通常使用new在动态内存中分配,并由句柄操作。句柄的定义使用模板类opencascade :: handle <>

    Handle(Geom_Line) aLine; // "Handle(Geom_Line)" 扩展于 "opencascade::handleL<Geom_Line>"

    在OCCT中,为句柄定义了附加的typedef,直接在相关的句柄中添加Handle_即可:

    Handle_Geom_Line aLine; //“Handle_Geom_Line”的本质是使用typedef重定义了“opencascade :: handleL <Geom_Line>”

    使用句柄:
    句柄的特征在于它引用的对象。
    声明句柄:

    Handle(Geom_Point) p1, p2; 

    声明句柄会创建一个不引用任何对象的空句柄。可以通过其方法IsNull()检查句柄为空。要使句柄无效,可以使用Nullify()方法。
    初始化句柄:
    可以创建一个新对象,或者可以为其分配另一个句柄的值,但是它们的类型必须是兼容的。

    • 内联值可以一行代码解决
    #include <Geom_Surface.hxx>
    class Appli_ExtSurface : public Geom_Surface
    {
    . . .
    public:
    DEFINE_STANDARD_RTTIEXT(Appli_ExtSurface,Geom_Surface)
    };
    • 外联使用宏的方式
    #include <Appli_ExtSurface.hxx>
    IMPLEMENT_STANDARD_RTTIEXT(Appli_ExtSurface,Geom_Surface)

    类型管理:

    Open CASCADE技术提供了一种以通用方式描述数据类型层次结构的方法,可以在运行时检查给定对象的确切类型(类似于C ++ RTTI)。
    如果需要使用这个功能,类声明应包括OCCT RTTI的声明。
    多态:

    Handle (Geom_Point) p1;
    Handle (Geom_CartesianPoint) p2;
    p2 = new Geom_CartesianPoint;
    p1 = p2; // 这样是Ok的

    显式类型转换:
    强制类型转换

    Handle (Geom_Point) p1;
    Handle (Geom_CartesianPoint) p2, p3;
    p2 = new Geom_CartesianPoint;
    p1 = p2; // OK, standard assignment
    p3 = Handle (Geom_CartesianPoint)::DownCast (p1);

    如果转换与引用对象的实际类型不兼容,则“强制转换”的句柄变为空(并且不会引发异常)。稳健的做法如下:

    void MyFunction (const Handle(A) & a)
    {
    Handle(B) b = Handle(B)::DownCast(a);
    if (! b.IsNull()) {
    //我们可以使用b,如果b是A的子类
    }
    else {
    // 
    }
    }

    向下转换特别适用于不同类型的对象集合; 但是,这些对象应该从相同的根类继承。
    例:

    Handle (A) a;
    Handle (B) b;
    Handle (Standard_Transient) t;
    SequenceOfTransient s;
    a = new A;
    s.Append (a);
    b = new B;
    s.Append (b);
    t = s.Value (1);
    // here, you cannot write:
    // a = t; // ERROR !
    // so you downcast:
    a = Handle (A)::Downcast (t);            //
    if (! a.IsNull()) {
    // types are compatible, you can use a
    }
    else {
    // the types are incompatible
    }

    使用句柄创建对象
    要创建一个由句柄操作的对象,请声明句柄并使用标准C ++ new运算符对其进行初始化,然后立即调用构造函数。构造函数可以是实例化对象的类源中指定的任何构造函数。

    Handle (Geom_CartesianPoint) p;
    p = new Geom_CartesianPoint (0, 0, 0);

    注意:
    与指针不同,删除操作符不适用于句柄; 引用的对象在不再使用时会自动销毁。

    调用方法类
    方法类近似于C++中的静态函数。使用类名::方法名的方式的形式调用
    例如:

    Standard_Integer n;
    n = Geom_BezierCurve :: MaxDegree();

    释放与处理
    删除对象之前,必须确保不再引用该对象。为了减少与此对象生命管理相关的编程负载,Open CASCADE技术中的删除功能由handle操作的类的引用计数器保护。句柄在不再引用时自动删除对象。通常,用户不需要在Standard_Transient的子类实例上显式调用delete运算符。
    创建同一对象的新句柄时,引用计数器会递增。当句柄被销毁,无效或重新分配给另一个对象时,该计数器会递减。当引用计数器变为0时,句柄会自动删除该对象。
    分配原理的例子:

    ...
    {
    Handle (TColStd_HSequenceOfInteger) H1 = new TColStd_HSequenceOfInteger;
    // H1申明并占用了 48 bytes内存
    {
    Handle (TColStd_HSequenceOfInteger) H2;
    H2 = H1; // H1 有两个引用
    if (argc == 3) {
    Handle (TColStd_HSequenceOfInteger) H3;
    H3 = H1;
    // Here, H1 有三个引用
    ...
    }
    // Here, H1 有两个引用
    }
    // Here, H1有一个引用
    }
    // Here, H1 没有引用并且引用 TColStd_HSequenceOfInteger 对象被删除. 

    通过定义以下内容,您可以轻松地将对象的引用转换为void *:

    void *pointer;
    Handle(Some_class) aHandle;
    // 这里复制指针
    Pointer = &aHandle;
    aHandle = * (Handle(Some_Class) *)pointer;

    周期
    如果两个或多个对象通过句柄相互引用,则会出现循环。在这种情况下,自动销毁将不起作用。
    考虑例如图形,其对象(图元)必须知道它们所属的图形对象,即图元必须具有对完整图形对象的引用。如果两个基元和图形都由句柄操纵,并且它们通过将句柄保持为字段来相互引用,则会出现循环。当应用程序中的最后一个句柄被破坏时,图形对象不会被删除,因为它的句柄存储在它自己的数据结构中。
    避免这种情况有两种方法:

    • 将C ++指针用于一种引用,例如从基元到图形
    • 当需要销毁图形对象时,将一组句柄(例如,基元中的图形的句柄)置为NULL

    插件管理

    插件的分发

    插件是可以动态加载到客户端应用程序中的组件,不需要直接链接到它。
    插件可用于:

    • 实现驱动程序的机制,即根据当前事务动态更改驱动程序实现(例如,检索存储在另一个应用程序版本中的文档),
    • 将处理资源限制到所需的最小值(例如,只要用户不需要,它就不会在运行时加载任何应用程序服务),
    • 促进模块化开发(应用程序可以提供基本功能,而一些高级功能将作为插件添加时可用)。
      在全局通用标识符(GUID)的帮助下识别插件。

    C++插件实现

    路径位置

    $CSF_PluginDefaults/Plugin 

    C++客户端插件实现

    例子:
    FAFactory.h

    #include <Standard_Macro.hxx>
    #include <Standard_GUID.hxx>
    #include <Standard_Transient.hxx>
    
    class FAFactory
    {
    public:
    Standard_EXPORT static Handle(Standard_Transient) Factory (const Standard_GUID& theGUID);
    };
    

    FAFactory.c

    #include <FAFactory.hxx>
    
    #include <FADriver_PartRetriever.hxx>
    #include <FADriver_PartStorer.hxx>
    #include <FirstAppSchema.hxx>
    #include <Standard_Failure.hxx>
    #include <FACDM_Application.hxx>
    #include <Plugin_Macro.hxx>
    
    static Standard_GUID StorageDriver ("45b3c690-22f3-11d2-b09e-0000f8791463");
    static Standard_GUID RetrievalDriver("45b3c69c-22f3-11d2-b09e-0000f8791463");
    static Standard_GUID Schema ("45b3c6a2-22f3-11d2-b09e-0000f8791463");
    
    //======================================================
    // function : Factory
    // purpose :
    //======================================================
    
    Handle(Standard_Transient) FAFactory::Factory (const Standard_GUID& theGUID)
    {
    if (theGUID == StorageDriver)
    {
    std::cout << "FAFactory : Create store driver\n";
    static Handle(FADriver_PartStorer) sd = new FADriver_PartStorer();
    return sd;
    }
    
    if (theGUID == RetrievalDriver)
    {
    std::cout << "FAFactory : Create retrieve driver\n";
    static Handle(FADriver_PartRetriever) rd = new FADriver_PartRetriever();
    return rd;
    }
    
    if (theGUID == Schema)
    {
    std::cout << "FAFactory : Create schema\n";
    static Handle(FirstAppSchema) s = new FirstAppSchema();
    return s;
    }
    
    Standard_Failure::Raise ("FAFactory: unknown GUID");
    return Handle(Standard_Transient)();
    }
    
    // export plugin function "PLUGINFACTORY"
    PLUGIN(FAFactory)
    

    Root类

    基本数据类型

    OCCT中的基本数据类型与C++之间的对比
    1620281-20190306140859527-742890938.png
    表中大部分数据类型都是对其相应的C++类型的typedef的重命名。但是,有几个个例:

    • Standard_Boolean是对是作为C ++ unsigned int基本类型的typedef实现的。
    • Standard_ExtString是对C ++ short基本类型的typedef实现的。

    内存管理

    在工作会话中,几何建模应用程序创建和删除在动态内存(堆)中分配的大量C ++对象。在这种情况下,用于分配和释放的标准存储器的的性能可能是不够的。
    因此,Open CASCADE技术采用标准包中实现的专用内存管理器。
    内存管理器基于以下原则:

    • 小内存阵列被分组成集群然后再循环(不在使用也不会回到系统中,被循环使用)。
    • 大的内存阵列通过系统的标准功能进行分配和解除分配(当不再使用时,阵列将被释放到系统中)。

    内存管理器的用法

    使用OCCT内存管理,我们不需要传统的malloc和free,取而代之的是Standard :: Allocate(),和Standard :: Free()。同时,使用Standard :: Reallocate()来代替C中的realloc()。

    配置内存管理器

    OCCT存储器管理器可以被配置为将不同的优化技术应用于不同的存储器块(取决于它们的大小),甚至可以避免任何优化并直接使用C函数malloc()和free()。

    • MMGT_OPT:如果设置为0(默认值),则每个内存块直接在C内存堆中分配(通过malloc()和free()函数)。在这种情况下,忽略除MMGT_CLEAR之外的所有其他选项; 如果设置为1,则内存管理器执行如下所述的优化; 如果设置为2,则使用英特尔®TBB优化内存管理器。
    • MMGT_CLEAR:如果设置为1(默认值),则每个分配的内存块由零清零; 如果设置为0,则按原样返回内存块。
    • MMGT_CELLSIZE:定义在大型内存池中分配的块的最大大小。默认值为200。
    • MMGT_NBPAGES:定义为页面中的小块分配的内存块的大小(取决于操作系统)。默认值为1000。
    • MMGT_THRESHOLD:定义在内部循环而不是返回到堆的块的最大大小。默认值为40000。
    • MMGT_MMAP:当设置为1(默认)时,使用操作系统的内存映射功能分配大内存块; 如果设置为0,它们将通过malloc()在C堆中分配。

    内存管理器的优化

    当MMGT_OPT设置为1时,使用以下优化技术:

    • 尺寸小于MMGT_CELLSIZE的小块不单独分配。而是分配在大型的内存池(每个池的大小为MMGT_NBPAGES的大小)。每个新的内存块都安排在当前池的备用位置。当前内存池完全占用时,将分配下一个内存池,依此类推。
    • 大小大于MMGT_CELLSIZE但小于MMGT_THRESHOLD的中型块直接在堆中分配(使用malloc()和free())。当通过方法Standard :: Free()释放这些块时,它们就像小块一样被回收。
    • 大小大于MMGT_THRESHOLD的大块,包括用于小块的内存池,根据MMGT_MMAP的值进行分配:如果为0,则这些块在堆中分配; 否则,它们使用管理内存的操作系统特定功能进行分配。调用Standard :: Free()时,会立即将大块返回给系统。

    优点和缺点

    OCCT内存管理器的主要优点在于它的小型和中型块的回收,这使得应用程序在不断分配和释放类似大小的多个内存块时工作得更快。
    相关的缺点是在程序执行期间回收的存储器不会返回到操作系统。这可能会导致大量内存消耗,甚至被误解为内存泄漏。为了最大限度地减少这种影响,必须在完成内存密集型操作后调用Standard :: Purge方法。
    OCCT内存管理器需要注意的是:

    • 仅当MMGT_OPT为1 时,在每个存储块的开头分配额外的4个字节(或64位平台上的8个字节)以保持其大小
    • 每个分配的内存块的大小最多为8个字节(当MMGT_OPT为0(默认值); 32位平台的典型值为4个字节)。
      OCCT内存管理器使用互斥锁来锁定对空闲列表的访问,因此在不同线程经常同时调用内存管理器的情况下,它可能比非优化模式更差的性能。原因是malloc()和free()的现代实现采用了几个分配场所,从而避免了等待互斥释放的延迟。

    异常

    每个异常都直接或通过继承另一个异常从Standard_Failure继承。

    抛出异常

    DomainError::Raise(“Cannot cope with this condition”);

    捕捉异常

    try {
    OCC_CATCH_SIGNALS
    // try block
    }
    catch(DomainError) {
    // handle DomainError exceptions here
    }

    注意
    通常,为了编写与平台无关的代码,建议在try {}块或其他可能发生信号的代码中插入宏OCC_CATCH_SIGNALS。

    集合类

    Collections 集合组件包含处理数据的动态大小的聚集体的类。集合类是通用的(类似C ++模板),也就是说,它们定义了一个结构和算法,允许保存各种对象,这些对象不一定从唯一的根类继承。当您需要使用给定类型对象的集合时,必须为此特定类型的元素实例化它。

    字符串

    字符串是基于ASCII / Unicode UTF-8(普通8位字符类型)和UTF-16 / UCS-2(16位字符类型)处理动态大小的字符序列的类。它们提供内置内存管理的编辑操作,使相对对象比普通字符数组更容易使用。

    • 使用内置字符串管理器对字符串对象进行编辑操作
    • 处理动态大小的字符序列
    • 从ASCII到UTF-8字符串的转换。

    分类
    TCollection_AsciiString:

    ASCII字符的可变长度序列(正常的8位字符类型)。它提供了内置内存管理的编辑操作,使AsciiString对象比普通字符数组更容易使用。
    TCollection_ExtendedString:

    可变长度的“扩展”(UNICODE)字符序列(16位字符类型)。它提供了内置内存管理的编辑操作,使ExtendedString对象比普通的扩展字符数组更容易使用。
    ExtendedString对象遵循值语义;也就是说,它们是实际的字符串,而不是字符串的句柄,并通过赋值进行复制。您可以使用HExtendedString对象来获取字符串的句柄。

    集合

    通用集合

    Array

    TCollection_Array1:与C阵列类似的一维数组,即固定大小但在构造时动态标注尺寸。
    TCollection_Array2:固定大小但在构造时动态标注尺寸的二维数组。

    TCollection_HArray1:与C容器类似的一维数组,即固定大小但在构造时动态标注尺寸。HArray1对象是数组的句柄。

    TCollection_HArray2:是TCollection_HArray1的二维形态
    TCollection_HSequence:这是一个由整数索引的序列。这个序列是可变大小的结构。
    TCollection_List:这些是非唯一对象的有序列表,可以使用迭代器按顺序访问。列表中的项目插入在任何位置都非常快。但是,如果列表很长,则按值搜索项目可能会很慢,因为它需要顺序搜索。
    TCollection_Sequence:这是一个由整数索引的序列。

    Map

    Map是动态扩展的数据结构,可以使用Key快速访问数据。TCollection_BasicMap是地图的根类。
    Map的一般属性
    映射项可能包含复杂的非单一数据,因此使用数组管理它们可能很困难。所以,需要使用Map数据结构。
    DataMap是一个通用类,它依赖于三个参数:

    • Key是地图中条目的键类型,
    • Item是与地图中的键相关联的元素的类型,
    • Hasher是键上的哈希类型。

    DoubleMap是一个泛型类,它依赖于四个参数:

    • Key1是地图中条目的第一个键的类型,
    • Key2是地图中条目的第二个键的类型,
    • Hasher1是第一个键上的哈希类型,
    • Hasher2是第二个键上的哈希类型。

    IndexedDataMap是一个通用类,它依赖于三个参数:

    • Key是地图中条目的键类型,
    • Item是与地图中的键相关联的元素的类型,
    • Hasher是键上的哈希类型。

    常用的数学算法

    Open CASCADE技术中提供的数学算法包括:

    • 向量和矩阵
    • 几何图元
    • 数学算法

    向量和矩阵

    Vectors和Matrices组件提供了基本类型Vector和Matrix的C ++实现,它们经常用于定义更复杂的数据结构。
    算法包括:

    • 涉及矢量和矩阵的基本计算;
    • 计算方阵的特征值和特征向量;
    • 求解一组线性代数方程;
    • 找到一组非线性方程的根的算法;
    • 用于查找一个或多个自变量的最小函数的算法。

    向量和矩阵具有的范围,必须在声明时定义,并且在声明后不能更改。

    math_Vector v(1, 3);
    // a vector of dimension 3 with range (1..3)
    math_Matrix m(0, 2, 0, 2);
    // a matrix of dimension 3x3 with range (0..2, 0..2)
    math_Vector v(N1, N2);
    // a vector of dimension N2-N1+1 with range (N1..N2)

    它们不能被共享并通过赋值进行复制。

    math_Vector v1(1, 3), v2(0, 2);
    v2 = v1;
    // v1 is copied into v2. a modification of v1 does not affect v2
    
    math_Vector v(1, 3);
    math_Matrix m(1, 3, 1, 3);
    Standard_Real value;
    
    v(2) = 1.0;
    value = v(1);
    m(1, 3) = 1.0;
    value = m(2, 2);

    Vector和Matrix对象上的某些操作可能不合法。在这种情况下会引发异常。使用了两个异常:

    • 当操作中涉及的两个矩阵或向量具有不兼容的维度时,会引发Standard_DimensionError异常。
    • 当操作中涉及的两个矩阵或向量具有不兼容的维度时,会引发Standard_DimensionError异常。
    math_Vector v1(1, 3), v2(1, 2), v3(0, 2);
    v1 = v2;
    // error: Standard_DimensionError is raised
    
    v1 = v3;
    // OK: ranges are not equal but dimensions are
    // compatible
    
    v1(0) = 2.0;
    // error: Standard_RangeError is raised
    来源: https://www.opencascade.com/doc/occt-7.3.0/overview/html/occt_user_guides__foundation_classes.html

    数学算法

    Gauss算法,为一组线性方程求Gauss解

    class Gauss {
    public:
    Gauss (const math_Matrix& A);
    Standard_Boolean IsDone() const;
    void Solve (const math_Vector& B,
    math_Vector& X) const;
    };
    #include <math_Vector.hxx>
    #include <math_Matrix.hxx>
    main ()
    {
    math_Vector a(1, 3, 1, 3);
    math_Vector b1(1, 3), b2(1, 3);
    math_Vector x1(1, 3), x2(1, 3);
    // a, b1 and b2 are set here to the appropriate values
    math_Gauss sol(a); // computation of the
    // LU decomposition of A
    if(sol.IsDone()) { // is it OK ?
    sol.Solve(b1, x1); // yes, so compute x1
    sol.Solve(b2, x2); // then x2
    ...
    }
    else { // it is not OK:
    // fix up
    sol.Solve(b1, x1); // error:
    // StdFail_NotDone is raised
    }
    }

    原子类

    原子类是用来支持各种类别日期和时间信息的处理,以及大多数物理量的基本类型。例如长度,面积,体积,质量,密度,重量,温度,压力等。
    原子类提供以下功能:

    • 表示大部分数学和物理量的原始类型的定义;
    • 单位转换工具提供统一的机制来处理数量和相关的物理单位:检查单位兼容性,执行不同单位之间的价值转换等(参见
    • 管理时间信息(如日期和时间段)的资源
    • 用于管理颜色定义的资源

    转载于:https://www.cnblogs.com/pcdack/p/10482911.html

    展开全文
  • Weka 的 OCCT 分类器实现 ####OCCT:用于实现一对多数据链接的一类聚类树######Abstract 一对多数据链接是许多领域的一项基本任务,但只有少数先前的出版物解决了这个问题。 此外,虽然传统上数据链接是在同一类型...
  • OCCT学习001-----简介

    千次阅读 2020-11-04 23:45:25
    Open CASCADE Technology(简称OCCT) 一、概述 Open CASCADE是由法国Matra Datavision公司开发的CAD/CAE/CAM软件平台。具有3D曲面和实体建模, CAD数据交换和可视化提供服务的开源软件开发平台。OCCT主要以C++...

    Open CASCADE Technology(简称OCCT)

    longlongway2012@hotmail.com 2020/11/05

    一、概述

    Open CASCADE是由法国Matra Datavision公司开发的CAD/CAE/CAM软件平台。具有3D曲面和实体建模功能的CAD数据交换和可视化提供服务的 开源软件开发平台。OCCT主要以C++类库形式对外提供功能包,并支持c#、Tcl、java等语言扩展。同时支持跨平台软件开发部署,包括Windows (IA-32和x86-64),Linux(x86-64),OS X / macOS(x86-64),Android(armv7和x86)和iOS(armv7,arm64)平台。

    OCCT主要涵盖3D建模(CAD),制造/测量(CAM)或数值模拟(CAE)领域,可以开发二维和三维几何 建模应用程序,包括通用的或专业的计算机辅助设计CAD系统、制造或分析领域的应用程序、仿真应用 程序或图形。

    二、OCCT组件包

    OCCT旨在实现真正的模块化和可扩展性,主要提供以下C++类库:

    • 基础数据结构(几何建模,可视化,交互式选择和特定于应用程序的服务);
    • 建模算法
    • (多面)网格数据处理
    • 基于自由格式(IGES,STEP)的数据互操作

    OCCT库可以总结为七大模块以及测试工具Draw:
    struct

    • 基础类库模块(Foundation Classes)是所有其他OCCT类库的基础。
    • 建模数据模块(Modeling Data)提供数据结构,以将2D和3D几何图元及其组成表示为CAD模型。
    • 建模算法模块(Modeling Algorithms)包含大量的几何和拓扑算法;
    • 网格模块(Mesh)实现对象的细分表示;
    • 可视化模块(Visualization)为图形数据表示提供了复杂的机制;
    • 数据交换模块(Data Exchange)可以与流行的数据格式进行互操作,并依靠Shape Healing来改善不同供应商的CAD软件之间的兼容性;
    • 应用框架模块(Application Framework)提供了即用型解决方案,用于处理特定于应用程序的数据(用户属性)和常用功能(保存/还原,撤消/重做,复制/粘贴,跟踪CAD修改等)。
      此外,Open CASCADE Test Harness(也称为Draw)为该库提供了一个入口点,并且可以用作其模块的测试工具。

    基础模块

    基础模块包含数据结构和服务组件所需的高层次抽象类,主要有:

    • 基本类型,如布尔,字符,整数或实数;
    • ASCII和Unicode字符串和字符串类处理;
    • 收集类,用于处理静态或动态调整大小的数据聚合,如数组,列表,队列,几何和哈希表;
    • 提供常用数据算法和基础线性代数计算(加法,乘法,向量和矩阵变换,求解线性代数系统等)
    • 代表实物数量和支持日期和时间信息的基本类型;
    • 基本几何类型提供定义和操纵基本数据结构的基本几何和代数实体的实现;
    • 描述异常情况的异常类,当程序正常执行被放弃时。

    此模块还提供各种通用服务,例如:

    • 安全处理动态创建的对象,确
    • 安全处理动态创建的对象,确保自动删除未引用的对象(智能指针);
    • 可配置的优化内存管理器,提高了密集使用动态创建对象的应用程序的性能;
    • 扩展的运行时类型信息(RTTI)机制维护完整的类型层次结构,并提供对其进行迭代的方法;
    • C++流的封装;
    • 通过特定的分配器自动管理堆内存;
    • 表达式的基本解释器,有助于创建定制的脚本工具,表达式的通用定义等;
    • 用于处理配置资源文件和可自定义的消息文件的工具,有助于在应用程序中提供多语言支持;
    • 进度指示和用户中断界面,甚至使低级算法也有可能以通用且方便的方式与用户通信;

    建模数据

    建模数据提供用于3D对象的边界表示(BRep,全称:boundary representation)的数据结构。
    在BRep中,形状表示为拓扑内几何体的集合。几何形状应理解为形状的数学描述,例如曲线和曲面(简单或规范,贝塞尔曲线,NURBS等)。拓扑是将几何对象绑定在一起的数据结构。

    几何类型和实用程序为以下各项提供几何数据结构和服务:

    • 点,向量,曲线和曲面的描述:
      • 使用轴或坐标系将其定位在3D空间中
      • 通过应用平移,旋转,缩放及其组合变换几何体
    • 通过差值和逼近创建参数曲线和曲面;
    • 直接构造算法;
    • 将曲线和曲面转换为NURBS形式;
    • 计算2D和3D曲线上的点坐标;
    • 计算几何对象之间的极值。

    拓扑定义了简单几何实体之间的关系。形状是基本的拓扑实体,可以分为多个分量(子形状):

    • 顶点-一种零维形状,对应于几何中的点;
    • 边-对应于曲线的形状,在每一个由顶点包围的末端;
    • 线框-一系列由顶点连接的边;
    • 面-部分(二维)平面或者(三维)表面,被一个闭合线框约束;
    • 壳-线框边界线的边连接的面的集合
    • 实体-与一个壳绑定的三维空间的一部分
    • 复合实体-实体的集合
      可以将复杂形状定义为简单实体的组合。

    建模算法

    建模算法模块将几何建模中使用的各种拓扑和几何算法分组。基本上,Open CASCADE Technology中有两组算法:

    • 实际设计中使用的高级建模例程;
    • 低级数学支持功能用作建模API的基础;
    • 低级几何工具提供以下算法:
      • 计算两条曲线,曲面或一条曲线与一个曲面的交点;
      • 将点投影到2D和3D曲线上,将点投影到曲面上,将3D曲线投影到曲面上;
      • 根据约束构造直线和圆;
      • 根据约束(插值,逼近,蒙皮,间隙填充等)构造自由形式的曲线和曲面;
    • 低级拓扑工具提供以下算法:
      • 棋盘形形状;
      • 检查形状的正确定义;
      • 确定形状的局部和全局特性(导数,惯性特性等);
      • 执行仿射变换;
      • 查找边缘所在的平面;
      • 将形状转换为NURBS几何;
      • 从单独的拓扑元素(面和边)缝制连接的拓扑(壳和线)。
        顶级API提供以下功能
    • 基元的构造
      • 盒子
      • 棱柱
      • 圆柱
      • 椎体
      • 球体
    • 运动学建模:
      • 棱柱-线性扫掠
      • 旋转-旋转扫掠
      • 管道-一般形式扫掠
      • 放样
    • 布尔运算,允许从源形状的组合创建新形状
      • 交:包含S1和S2中的所有点;
      • 并:包含S1或S2中的所有点;
      • 差:包含S1中而不是S2中的所有点
    • 本地修改的算法
      • 挖洞
      • 使用拔模角创建锥形形状;
      • 在形状边缘(包括半径可变的弦)上制作圆角和倒角的算法。
    • 用于创建机械特征的算法,即沿着平面或旋转表面的凹陷,突起,肋和凹槽或缝隙

      网格

      网格模块提供了以三角形小平面的形式处理对象的细分表示的功能,该模块包含:
    • 用于存储与形状关联的表面网格数据的数据结构以及用于处理它们的基本算法;
    • 数据结构和算法,用于从BRep对象(形状)构建三角形曲面网格;
    • 用于显示带有相关的预处理器和后处理器数据(标量或矢量)的网格的工具。
      Open CASCADE Technology包括两个网状转换器:
    • VRML转换器将Open CASCADE形状转换为VRML 1.0文件(虚拟现实建模语言)。
    • STL转换器将Open CASCADE形状转换为STL文件。
      Open CASCADE SAS还提供高级网格产品:
    • 打开CASCADE Mesh Framework(OMF)
    • 快速网格

      可视化

    可视化模块提供了即用型算法,可以根据各种对象(形状,网格等)创建图形表示。在Open CASCADE Technology中,
    可视化基于CAD数据及其图形表示的分离。可以自定义演示文稿,以考虑到您的应用程序的特殊性。

    该模块还支持快速而强大的交互式选择机制。

    OCCT提供的查看工具范围从处理基本几何形状和拓扑结构的低级工具(例如具有控制点和节点的NURBS可视化,渲染等值线
    以估计参数化的速度和质量,或者渲染边缘的参数化轮廓)到使用光线跟踪实时高质量渲染模型的高级工具:阴影,反射,
    透明度,抗锯齿等。

    这里只是几个例子:

    • 相机驱动的视图投影和方向。可以在透视,正投影和立体投影之间进行选择。
    • 使用递归Whitted算法和有限体积层次结构有效优化结构的实时光线跟踪技术。
    • 支持GLSL着色器。与其他任何OpenGL资源一样,着色器管理是全自动的。
    • 支持标准和自定义材料,由透明度,漫反射,环境和镜面反射和折射率定义。后者允许实现透明材料,例如玻璃,钻石和水。
    • 通过以下算法优化渲染性能:
      • 查看视锥剔除,在相机以外的部分将跳过渲染阶段
      • 背面剔除,减少了三角形的渲染数量并消除了形状边界处的瑕疵。
    • 通过平面方程系数定义裁剪平面。能够为水平或单个裁剪平面上的横截面定义视觉属性。
    • 可以灵活调整3D视图中尺寸的外观。3D文本对象将给定的文本字符串表示为模型空间中的真实3D对象。

    数据交换

    数据交换允许开发基于OCCT的应用程序,该应用程序可以通过在外部数据之间读写CAD模型来与其他CAD系统进行交互。无论外部
    数据的质量如何,还是对内部表示的要求(例如,数据类型,可接受的几何误差等),交换都可以顺利进行。

    数据交换以模块化的方式组织成一组接口,这些接口符合各种CAD格式:IGES,STEP,STL,VRML等。这些接口允许基于OCCT的
    软件与各种CAD/PDM软件包交换数据,从而维护良好的互操作性。

    • 标准化的数据交换界面允许查询和检查输入文件,将其内容转换为CAD模型并在完全转换的形状上运行有效性检查。当前支持以下格式。
      • STEP(AP203:机械设计,涵盖通用3D CAD; AP214:汽车设计)
      • IGES (up to 5.3)
      • glTF, OBJ, VRML and STL meshes.
    • 扩展数据交换(XDE)允许翻译附加到几何数据的其他属性(颜色,图层,名称,材料等)。
    • 高级数据交换组件,以支持使用以下专有格式的CAD软件的互操作性和数据适配(也使用Shape Healing):
      • ACIS SAT
      • Parasolid
      • DXF
      • IFC
      • JT
        这些组件基于与STEP和IGES的接口相同的体系结构

    形状修复

    形状修复库提供的算法可校正和调整从其他CAD系统导入OCCT的形状的几何形状和拓扑。
    形状修复算法包括但不限于以下操作:

    • 分析形状特征,尤其是通过分析几何对象和拓扑来识别不符合OCCT几何和拓扑有效性规则的形状:
      • 检查边和线的一致性;
      • 检查线在线框中的顺序;
      • 检查面的方向;
      • 分析形状公差;
      • 识别线框中的闭合和断开边界。
    • 修复不正确或不完整的形状:
      • 提供3D曲线与其对应的参数曲线之间的一致性;
      • 修复有缺陷的线框;
      • 使形状符合用户定义的公差值;
      • 填补补丁和边之间的缝隙。
    • 升级和更改形状特征:
      • 降低曲线和表面度;
      • 分割形状以获得C1连续性;
      • 将任何类型的曲线或曲面转换为Bezier或B样条曲线或曲面并反向转换;
      • 拆分封闭曲面和旋转曲面。
    子域描述对形状的影响
    分析探索形状属性,计算形状特征,检测是否违反OCCT要求形状本身未修改
    修复固定形状以满足OCCT要求形状可能会更改其原始形式:修改,移除或创建子形状等)
    升级改进形状以适合某些特定算法形状被替换为新形状,但是在几何形状上它们是相同的
    定制化修改形状表示以适应特定需求形状不会更改,只有其内部表示形式的数学形式会更改
    处理通过用户可编辑的资源文件进行形状修改的机制

    应用框架

    Open CASCADE应用程序框架(OCAF)根据应用程序/文档范式处理应用程序数据。由于以下现成的功能和服务,
    它使用关联引擎来简化CAD应用程序的开发:

    • 管理应用程序数据的数据属性,可以根据开发需求进行组织;
    • 数据存储和持久性(打开/保存);
    • 可以修改和重新计算文档中的属性。使用OCAF,可以轻松地表示模型中的修改历史和参数依赖性。
    • 可以管理多个文档;
    • CAD / CAM / CAE应用程序共有的预定义属性(例如,存储尺寸);
    • 撤消重做和复制粘贴功能。
    • 由于OCAF处理应用程序结构,因此唯一的开发任务是创建特定于应用程序的数据和GUI。

    OCAF与其他任何CAD框架的不同之处在于应用程序数据的组织,因为那里的数据结构基于参考键而不是形状。
    在模型中,诸如形状数据,颜色和材质之类的属性将附加到比形状深的不变结构上。形状对象成为Shape
    属性的值,就像整数是Integer属性的值和字符串是Name属性的值一样。

    OCAF将这些属性组织并嵌入到文档中。OCAF文件又由OCAF应用程序管理。

    Draw Test Harness

    Draw是用于OCCT库的便捷测试工具。在构建整个应用程序之前,可以将其用于测试各种算法并为其原型设计。这包括:

    • 基于TCL语言的命令解释器;
    • 大量的2D和3D查看器;
    • 一组预定义的命令。
    • 查看器支持诸如缩放,平移,旋转和全屏视图之类的操作。

    基本命令提供通用服务,例如:

    • 获得帮助;
    • 从文件中评估脚本;
    • 在文件中捕获命令;
    • 管理观点;
    • 显示对象。
      此外,Test Harness还提供命令来创建和操纵曲线和曲面(几何)和形状,访问可视化服务,使用OCAF文档,执行数据交换等。

    您可以添加自定义命令来测试或展示你开发的任何新功能。

    reference

    OCC官网
    百度百科
    OpenCasCade 简介
    Technical Overview

    展开全文
  • OpenCASCADE:Qt OCCT 概览示例OpenCASCADE:Qt OCCT 概览示例内容如何构建Qt OCCT概述应用程序运行应用程序如何使用 OCCT 概览应用程序: OpenCASCADE:Qt OCCT 概览示例 内容 目录samples/qt/OCCTOverview包含 Qt ...

    OpenCASCADE:Qt OCCT 概览示例

    内容

    目录samples/qt/OCCTOverview包含 Qt OCCT 概览应用程序的文件夹和文件:

    文件OCCTOverview.pro和OCCTOverview0.pro是 Qt 项目文件。
    文件genproj.bat来定义 MS Visual Studio 项目。
    文件msvc.bat以运行 MS Visual Studio 项目。
    文件make.sh以在 Linux 上构建应用程序。
    文件run.bat和run.sh以运行应用程序。
    文件env.bat和custom.bat是从genproj.bat、msvc.bat、run.bat 调用的。文件custom.bat应由用户定义,以提供 QT 目录和 OCCT 安装目录的路径(请参阅custom.bat.template)。
    src和res目录提供源文件和资源文件。
    目录samples/OCCTOverview/code包含示例的源代码。

    如何构建Qt OCCT概述应用程序

    编辑 cust

    展开全文
  • OCCT的拓朴结构

    2020-01-03 10:59:28
    OCCT 的拓朴表示采用 BREP 形式,可以支持 non-manifold 实体。 OCCT 的拓朴表示分为两层:拓朴对象层和 BREP 表示层。 先看拓朴对象层,如下是类继承关系: TopoDS_Shape ―― TopoDS_Solid ―― TopoDS_Shell...

      OCCT 的拓朴表示采用 BREP 形式,可以支持 non-manifold 实体。

           OCCT 的拓朴表示分为两层:拓朴对象层和 BREP 表示层。

           先看拓朴对象层,如下是类继承关系:

           TopoDS_Shape

           ―― TopoDS_Solid

           ―― TopoDS_Shell

           ―― TopoDS_Face

           ―― TopoDS_Edge

           ―― TopoDS_CompSolid 

           ―― TopoDS_Compound 

           ―― TopoDS_Vertex      

           ―― TopoDS_Wire

           这里, shape 对象是一个对下层拓朴对象的引用( reference ),并记录对象的位置和方向属性。这里可以针对不同位置或方向的同一个底层对象,实现共享。属性三个:

           Handle_TopoDS_TShape myTShape;// 底层对象

    TopLoc_Location myLocation;// 位置信息

    TopAbs_Orientation myOrient;// 方向。

    上述这些对象,都是一些引用,结构和简单。具体的拓朴信息和几何信息在 Tshape 中。下面看 TopoDS_Tshape 的继承关系:

    TopoDS_TShape     

    ―― TopoDS_TWire

    ―― TopoDS_TVertex    

    ―――― BRep_TVertex   

    ―― TopoDS_TSolid      

    ―― TopoDS_TShell      

    ―― TopoDS_TFace      

    ―――― BRep_TFace     

    ―― TopoDS_TEdge      

    ―――― BRep_TEdge     

    ―― TopoDS_TCompSolid      

    ―― TopoDS_TCompound      

           这里 TopoDS 开始的类是拓朴层的类, Brep 开始的类是具体的 BREP 表示层的类。 Tshape 具有如下主要的属性:

           TopoDS_ListOfShape myShapes;

    Standard_Integer myFlags;

    即每个 Tshape 有一系列的 TopoDS_Shape (引用)组成,每个引用记录的相应的几何信息和拓朴信息。例如:一个 Twire 可能由多个 Edge 组成等。如下是类的一些简单说明:

    Tvertex: A  Vertex is a topological  point in  two or three dimensions 。
    Tedge : A topological part  of a  curve  in 2D or 3D,  the boundary is a set of oriented    Vertices 。
    Twire : A set of edges connected by their vertices 。
    Tface: A  topological part  of a surface   or  of the  2D space.The  boundary  is  a   set of  wires   and vertices.
    Tshell : A set of faces connected by their edges.
    Tsolid: A Topological part of 3D space, bounded by shells, edges and vertices.
    TCompSolid; A set of solids connected by their faces.
    TCompound; A TCompound is an all-purpose set of Shapes.
     

    总之, TcompSolid 由一系列的 Solid 组成,每个 TSolid 由一系列的 Shell 组成,每个 TShell 由一系列的 Face 组成,每个 TWire 由一系列的 Edge 组成,每个 Tedge 由一系列的 Vertex 组成。当然,不是随便就可以组成的,还是有要求的,比如: Face 组成 Tshell 要求 Face 的边境相连等。

    上述的声明和实现主要在 TopoDS package 中。

    上述 TopoDS_T* 类,主要是上面显示的两种属性。具体的几何数据和拓朴数据由 BREP 层实现。

    BREP 层描述了一个 Boundary  Representation Data   Structure ,并通过继承 TopoDS 层的类,添加了几何信息。从上可以看出,有三个主要的实现类:

    Brep_Tvertex 、 Brep_Tedge 、 Brep_Tface 类。

    先从简单的 Brep_Tvertex 类说起。 Tvertex 表示一个节点拓朴对象,包含了一个 3D 点信息和一个 Tolerance 信息,如下:

    gp_Pnt myPnt;

    Standard_Real myTolerance;

    BRep_ListOfPointRepresentation myPoints;

    第三个属性目前似乎没有使用。

    再看 Brep_Tedge 类,改类比较复杂,看 OCCT 的文档说明:

    The TEdge from BRep is  inherited from  the  Tedge from TopoDS. It contains the geometric data ,The TEdge contains :

           * A tolerance.
           * A same parameter flag.
           * A same range flag.
           * A Degenerated flag.
           *  A  list   of curve representation.
     

    属性如下:

    Standard_Real myTolerance;

    Standard_Integer myFlags;

    BRep_ListOfCurveRepresentation myCurves;

    其中,比较复杂的是 listofcurve 属性。每个 Edge 包含了一系列各类的 curve ,看一些 OCCT 的文档说明:

    An Edge is  defined by a list  of curve representations  which are either :

        --  Geometric representations :

        * A 3d curve (at most one)  3D 曲线。
        * A curve on surface, curve in parametric space. 参数曲线
        * A curve on closed surface, two curves in parametric space. 例如圆柱的边。
     

        --  Polygonal representations : 剖分后的数据。

        * A 3d polygon (at most one).
        * A Polygon on triangulation (array of node indices)
        * A Polygon on closed triangulation (2 arrays of node indices)
        * A polygon on surface (array of 2d points in parametric space)
     

       

        --  Curve on 2 surfaces :

        * This is used for storing shape continuity.

      足够的复杂了。下面看一些 list 中可能有那些类:

    BRep_CurveRepresentation      

    ―― BRep_PolygonOnTriangulation

    ―――― BRep_PolygonOnClosedTriangulation      

    ―― BRep_PolygonOnSurface

    ―――― BRep_PolygonOnClosedSurface      

    ―― BRep_Polygon3D    

    ―― BRep_GCurve

    ―――― BRep_Curve3D      

    ―――― BRep_CurveOnSurface    

    ―――――― BRep_CurveOnClosedSurface

    ―― BRep_CurveOn2Surfaces 

    这些类很多,后面再详细补充,主要关注如下类:

    Gcurve 类:表示是几何曲线类,可能是 3D 曲线( Curve3D ),也可能是参数曲线( CurveOnSurface 类),而参数曲线可能是闭合曲线的参数曲线( CurveOnClosedSurface 类)。

    裁剪曲面中,裁剪环中的裁剪曲线,就是使用 CurveOnSurface 表示的。

    通常,如果一条曲线是单独的 3D 曲线,则 listofcurve 中通常只包含 Curve3d 。如果一个曲线是一个裁剪曲线,则通常包括一条 3d 曲线和一个参数曲线。当所在曲面进行了剖分后,则还会有对于的 polygon 数据。这也是为什么使用 list 记录这些信息的原因。

    先到这里,下面看 Tface 。

    先看 OCCT 文档说明:

    The TFace contains :

           * A suface, a tolerance and a Location.
           * A NaturalRestriction flag,   when this  flag  is True the  boundary of the  face is known to be the parametric space (Umin, UMax, VMin, VMax).
           *  An    optional Triangulation.   If  there  is a triangulation the surface can be absent.
           *  The  Location is  used   for the Surface.
           *   The triangulation  is in the same reference system   than the TFace.     A point on mySurface must   be transformed with myLocation,  but  not a point  on the triangulation.
           *   The Surface may  be shared by different TFaces but not the  Triangulation, because the  Triangulation may be modified by  the edges.
     

     

    Tface 包括如下属性:

    Handle_Geom_Surface mySurface; 关联的 geom 层的曲面信息,这个曲面可能是无界曲面,例如: Plane 。
    Handle_Poly_Triangulation myTriangulation; Face 网格剖分后生成的网格数据。主要用于显示时使用。
    TopLoc_Location myLocation; 曲面的位置信息,为了便于同一个曲面在不同位置显示时的数据共享。
    Standard_Real myTolerance; 曲面的误差。
    Standard_Boolean myNaturalRestriction; 是否自然参数限制的曲面,当是自然限制时,曲面被矩形参数区域[U1,U2] × [V1,V2] 限制,否则,为裁剪曲线限制,参数裁剪区域通常不是规则的矩形区域。
     

    通常,一个裁剪曲面 Tface ,除包含上述信息外,还会包含一系列的 Wire 子 shape ,这些 wire 构成了 Tface 的多个裁剪环,其中一个为外环, 0 个或多个内环。

    展开全文
  • OpenCASCADE:OCCT WebGL 查看器示例OpenCASCADE:OCCT WebGL 查看器示例 OpenCASCADE:OCCT WebGL 查看器示例 此示例演示了在使用 C++ 编写的 Web 应用程序中使用 OCCT 库并使用 Emscripten SDK (emsdk) 转换为 ...
  • OCCT4.0.0(电源测试)

    2015-01-13 10:00:02
    绿色软件,可以用来测试笔记本和台式机电源的质量和系统稳定性。
  • OCCT 建模,VTK显示

    千次阅读 2019-06-21 19:17:50
    OCCT中visualization中有现成的VTK接口 从Topo::DS_Shape到Mapper的接口如下所示: IVtkOCC_Shape::Handle aShapeImpl = new IVtkOCC_Shape(MakeBottle(20,30,8)); vtkSmartPointer<IVtkTools_...
  • 一个基于OCCT(https://www.opencascade.com/)的实验性CAD程序-OccTry。 OccTry原资源下载自https://download.csdn.net/download/astrosky/1736346 OccTry原文见...
  • OpenCASCADE:Windows平台上构建OCCT使用的第三方库OpenCASCADE:Windows平台上构建OCCT使用的第三方库Tcl/Tk从源安装:Tcl从源安装:TkFreeType编译程序TBBfreeimage搭建流程:VTK搭建流程: OpenCASCADE:Windows...
  • OCCT安装与测试 longlongway2012hotmail.com 一、前言 occ作为开源软件,可以通过官网注册下载,也可以从网上搜索别人的分享连接来获得。官网occ7.5下载地址。最新版增加了很多新的特性,同时需要vs2017支持。本人受...
  •  在OCCT中,构造一个裁剪平面的方法如下: Geom_RectangularTrimmedSurface::Geom_RectangularTrimmedSurface ( const Handle(Surface)& S, const Standard_Real U1, const Standard_Real U2, const ...
  • cup 测试 OCCT V1.11让电脑30分钟满负载运行测试
  •  在OCCT中,偏移面的构造如下: Geom_OffsetSurface::Geom_OffsetSurface (const Handle(Geom_Surface)& theSurf, const Standard_Real theOffset, const Standard_Boolean isTheNotCheckC0) : offset...
  • OCCT 基础2

    2019-04-30 11:31:00
    OpenCASCADE 基础 一直在用OCC作项目,但这方面的中文资料很少,看来OCC在中国还不是十分普及; 后来,项目中使用OCC和DirectX结合使用,取得了很好的效果; 随着OCC6.3版本的推出,Open CASCADE在速度方面已有了...
  • OCCT模块结构图 基础类: Foundation Classes module underlies all other OCCT classes; 模型数据: Modeling Data module supplies data structures to represent 2D and 3D geometric primitives and their ...
  • 电源检测工具 OCCT v5.5.7 正式版绿色单文件 包含显卡检测以及功耗墙检测 目前找到的比较好用的功耗检测软件之一
  •  在OCCT中,Geom_Plane有如下几种初始化方式。 Geom_Plane::Geom_Plane (const gp_Ax3& A3) { pos = A3; }  创建三维空间中的平面,A3的“Z轴方向”表示平面的“法向”,A3的“位置”表示平面的“原点”...
  • 4 编译生成解决方案 进入之前创建的生成文件夹(E:\OpenCasCade\vs2019),找到OCCT.sln,用VS2019打开(如果之前采用了默认的INSTALL_DIR路径,需要先使用管理员权限打开VS2019,然后再打开E:\OpenCasCade\vs2019\...
  • 本文仅作demo展示,关于OCCT的使用不做介绍 基于OCCT开发的一个CMM软件中路径仿真的demo,以模拟三坐标测量机探针系统下的路径仿真 0. 加载IGES或STP格式模型 1. 动画 2. 布尔判断进行碰撞检测,路径优化绕过...
  • OpenCASCADE:Mac OS X平台上构建OCCT使用的第三方库OpenCASCADE:Mac OS X平台上构建OCCT使用的第三方库Tcl/Tk 8.5 - 8.6;FreeType 2.4.10待定 3.x 或 4.x OpenCASCADE:Mac OS X平台上构建OCCT使用的第三方库 有...
  • 描述一条无界的线。通过空间中的“原点”和“方向”定义。  Geom_Line的参数化表示为:  P(u)= O + u * Dir  其中,P的线上的点,O是原点,Dir是单位方向向量,参数u的范围是。 ... 线的构造方法如下: ...
  • OCCT 4.1.0 beta 4.0

    2013-08-05 12:04:50
    用来测试电脑主机电源的负载能力及稳定性。它可让电脑满负荷运算,同时监测电源各电压输出的波动,并以曲线图的方式输出,可以很直观的了解被测电源的大概品质。虽然不能和专业电源测试工具相比,但其测试大致可以...
  • OpenCASCADE:OCCT应用框架OCAF之函数机制使用示例介绍第 1 步:数据树第 2 步:接口创造钉子计算可视化移除钉子第 3 步:函数示例 1:函数的迭代和执行示例 2:Cylinder 函数驱动程序 介绍 让我们通过一个简单的...
  • 关键类: TopExp_Explorer: 用来遍历线段集获取每一条线段 BRep_Tool : 用来做类型转换,将Edge转成Cure TopExp_Explorer Ex(m_DemoPathLine, TopAbs_EDGE); m_vecPathPoint.clear();... TopoDS_Edge ...
  • OCCT测试电源全过程.doc
  •  在OCCT中,圆锥面的创建如下: Geom_ConicalSurface::Geom_ConicalSurface ( const Ax3& A3 , const Standard_Real Ang, const Standard_Real R) :radius(R), semiAngle (Ang) { if (R || Abs(Ang) () ||...
  • OCCT v5.3.0 Beta5.zip

    2019-07-14 17:14:01
    A5下载站向大家推荐一款专业的电源测试软件——OCCT。软件主要用来检查系统电源稳定性以及在满负荷下CPU和主板芯片的温度,以测试电脑是否能够超频,并以曲线图的方式输出,可以很直观的了解被测电源的大概品质。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 445
精华内容 178
关键字:

occt