自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

极客BIM工作室

专注于BIM技术!

  • 博客(402)
  • 收藏
  • 关注

原创 OpenCasCad (OCCT):几何数据创建算法 Module ModelingAlgorithms

Module ModelingAlgorithms几何算法模块包含众多模块,目前最关心的是几何的创建。几何的创建算法。

2021-11-21 12:19:21 791

原创 Revit SDK 介绍:CompoundStructure 复合结构

前言本文介绍 Revit 复合结构,及 SDK 中的例子, CompoundStructure。内容概念说明复合结构墙、楼板、天花板和屋顶可以由平行的层构成。复合图元既可以由单一材质的连续图层构成(例如胶合板),也可以由多重图层组成(例如石膏板、龙骨、隔热层、气密层、砖和壁板)。 另外,构件内的每个层都有其特殊的用途。 例如,有些层用于结构支座,而另一些层则用于隔热。 Revit 会考虑每个图层的功能,并通过匹配功能优先顺序在相邻的复合结构中连接对应的图层。可以通过设置层的材质、厚度和功能来

2020-06-05 10:51:17 1349 2

原创 Dynamo For Revit 几何专题:概述

前言上周整理了一下 Revit API 的几何库接口,这里再整理一下 Dynamo For Revit 的几何库。和 Revit API 一样,Dynamo For Revit 提供了一套完整的几何库。既然是几何库,那就逃不过这些概念:点、线、面、体。那么,对于任意的几何库,实际上,你要关系的东西逃不过下面的表格,(点 / 线 / 面 / 体)与(点 / 线 / 面 / 体)之间的关系。比...

2020-03-29 10:32:30 1970

原创 Revit API 几何专题 1:几何类库概述 GeometryObject

几何类库Revit API 提供了一套完整的几何库。既然是几何库,那就逃不过这些概念:点、线、面、体。那么,对于任意的几何库,实际上,你要关系的东西逃不过下面的表格,(点 / 线 / 面 / 体)与(点 / 线 / 面 / 体)之间的关系。这些类的基类都是 GeometryObject。对应的点、线、面、体:点: Point线: Curve、 Edge、PolyLine、Profil...

2020-03-21 09:35:29 2724

原创 Dynamo For Revit: Category、Element、Element Type、Family、Family Symbol、Family Instance

前言通过使用 Dynamo For Revit 的节点,介绍一下 Revit 中 Category、Element、Element Type、Family、Family Symbol、Family Instance 这些概念的相关与差异。概念简介

2020-02-22 17:15:53 4013

原创 C++ 运算符重载:避免隐式类型转换的艺术

通过运算符重载避免隐式类型转换,本质是用明确的函数签名替代编译器的自动推导,既优化了性能,又增强了代码的可读性和可控性。记住:C++赋予我们灵活的工具,但合理使用才是关键。下次遇到自定义类型与内置类型的交互时,不妨试试这种“重载思维”吧!

2025-08-07 00:00:00 62

原创 C++返回值优化(RVO):高效返回对象的艺术

返回值优化(RVO)是C++编译器的“隐藏福利”,让“按值返回对象”的性能担忧成为历史。开发者只需专注语义正确性(如必须返回新对象时大胆返回),并通过直接返回构造表达式等写法协助编译器优化。语义清晰是基础,编译器会帮你处理性能细节。通过理解RVO,你不仅能写出更高效的代码,还能避免指针/引用的陷阱——这才是C++工程能力的体现。

2025-08-06 00:00:00 877

原创 C++临时对象:来源与性能优化之道

要减少临时对象的开销,首先需要识别它们的诞生场景看到const T&参数:警惕调用时是否发生了隐式类型转换(如char*转string看到函数返回对象:思考是否可通过RVO或接口设计(如operator+=)优化。临时对象的存在是编译器为了类型兼容或语法正确的“妥协”,但通过合理的代码设计,我们可以主动消除这些不必要的开销,让程序更高效。

2025-08-05 00:00:00 501

原创 超急评估:用提前计算分摊性能成本

超急评估通过“提前付出成本”Lazy适合“结果不常需要”的场景,避免无用功;Over-Eager适合“结果常需要”的场景,通过缓存、预取摊还成本。在实际开发中,需结合使用频率、资源开销,借助Profiler分析,灵活运用三者,实现性能与资源的最优平衡。

2025-08-04 20:45:00 522

原创 深入理解C++中的Lazy Evaluation:延迟计算的艺术

Lazy Evaluation的本质是**“延迟决策,直到必须”**:通过规避不必要的工作,最大化程序效率。它不仅适用于C++,也被APL、函数式语言(如Haskell)广泛采用。在C++中,我们可以借助。

2025-08-03 00:00:00 1367

原创 软件性能优化:善用80-20法则,精准突破瓶颈

找到关键的20%,集中突破。测量:用合适的Profiler,搭配真实、代表性数据,定位资源消耗核心区段;定位:区分“直觉判断”和“实际瓶颈”,聚焦真正影响全局的20%代码;优化:针对瓶颈设计方案(如算法、IO、内存调优),避免无关优化;验证:再次用Profiler验证效果,确保投入产出比最大化。记住:与其做“到处救火的消防员”,不如先当“精准定位的侦探”——80-20法则的价值,就在于帮我们把精力花在刀刃上。(本文结合“条款16:谨记80-20法则”核心思想,围绕实践场景整理。

2025-08-02 00:00:00 1182

原创 C++异常处理的成本:理解与优化

异常处理的成本客观存在,但无需过度恐慌——C++设计中,异常本就是为“低频率、高影响”的场景而生。关键是理解这些成本的来源当异常能提升代码可读性和健壮性时,合理的开销是可接受的;当性能敏感时,通过优化策略(如关闭异常、精简try块)最小化影响。技术决策的核心是权衡,而非非黑即白的选择。了解异常的成本,才能让它成为你的助力,而非负担。

2025-08-01 00:00:00 899

原创 明智运用C++异常规范(Exception Specifications)

优点:文档化清晰,辅助编译器检测局部异常行为。缺点:编译器检查不彻底,模板和回调场景易踩坑,违反后默认行为(程序终止)过于暴力。在实践中,需结合场景权衡:若能严格控制调用链(如封闭的模块),异常规范可提升代码严谨性;若涉及复杂依赖(如模板、第三方回调),则需谨慎使用,甚至放弃,避免“意外终止”的风险。总之,异常规范的价值在于明确契约,但实现契约的代价需要提前评估。只有充分理解其陷阱与应对方法,才能真正“明智运用”。

2025-07-31 00:00:00 941

原创 C++异常捕获:为何推荐按引用(by reference)捕获?

✅ 避免指针的生命周期陷阱和内存管理困境;✅ 解决值捕获的对象切割和重复复制问题;✅ 完美支持多态,兼容标准异常体系。简言之,按引用捕获异常是C++异常处理的“最优解”,兼顾正确性、性能和代码简洁性。在实际开发中,应始终优先选择的形式!(本文内容参考《Effective C++》条款13,深入分析异常捕获的设计考量。

2025-07-30 00:00:00 910

原创 C++ 构造函数中阻止资源泄漏的实践探索

优先使用智能指针:如unique_ptrshared_ptr,它们能自动管理资源,构造函数异常时,已构造的智能指针对象析构会释放资源,简化代码且减少泄漏风险。构造函数内合理使用 try-catch:若需在构造函数处理异常(如记录日志、清理部分资源),用try-catch捕获并清理,再重新抛出异常让上层处理。避免复杂资源初始化耦合:将资源初始化逻辑拆分,降低不同资源初始化的依赖,一个资源初始化失败,不影响其他已成功初始化资源的清理。

2025-07-28 00:00:00 1341

原创 利用RAII与析构函数避免C++资源泄漏

对于非指针资源(如系统窗口句柄。

2025-07-27 00:00:00 320

原创 C++中new和delete的多重面孔:operator new、new operator与placement new解析

本文深入解析C++中new和delete的多层含义,重点区分了new operator(分配内存+构造对象)、operator new(仅内存分配)和placement new(指定地址构造)三种概念。同时介绍了对应的delete操作,并强调数组处理时new[]/delete[]的配对使用。文章通过示例代码展示了不同场景下的正确用法,最后总结各概念的特性与定制方法,为复杂内存管理(如内存池、对象池)提供了实践指导。理解这些底层机制有助于开发者更精准地控制对象生命周期和内存分配。

2025-07-26 00:00:00 733

原创 C++中千万不要重载&&,||和,操作符

More Effective C++:35个改善编程与设计的有效方法》读书笔记:千万不要重载&&,||和,操作在C++编程中,操作符重载是一项强大的特性,它允许我们为用户定制类型定义操作符的行为。然而,并非所有操作符都适合重载,其中&&、||和,操作符就是需要特别注意的,不建议进行重载。

2025-07-25 00:00:00 338

原创 C++中递增/递减操作符的前置与后置:你真的懂吗?

语法区分:前置式无参数,后置式有一个int参数(编译器传0,仅用于区分)。返回类型:前置返回引用(UPInt&),后置返回const对象(实现逻辑:前置是"increment and fetch",后置是"fetch and increment";后置应复用前置的逻辑(避免重复)。效率:前置式无临时对象,效率更高,优先使用。设计原则:让自定义类型的行为尽量贴近原生类型(如禁止i++++掌握了这些,你就真正理解了C++中递增/递减操作符的设计精髓。看似简单的++和--

2025-07-24 00:00:00 769

原创 警惕C++中的自定义类型转换函数:别让隐式转换悄悄坑了你

隐式类型转换操作符和单自变量构造函数。C++的隐式类型转换在基础类型中或许方便,但自定义类型的转换函数(隐式转换操作符、单自变量构造函数)却可能成为“隐形炸弹”——它们会在非预期场景被调用,导致逻辑混乱且难以调试。用显式函数(如asDouble())替代隐式类型转换操作符;对单自变量构造函数用explicit修饰,或在老编译器中用Proxy Class隔离。除非你能100%确定转换的必要性,否则请谨慎使用自定义类型转换函数——毕竟,清晰的代码比“聪明”的隐式转换更重要。

2025-07-23 00:00:00 907

原创 C++ 中的默认构造函数:非必要,不提供

默认构造函数的核心价值是“在无外部信息时确保对象可合理初始化”。对于需要外部信息才能完成初始化的类(如依赖 ID 的设备、必须包含内容的通信簿),强行添加默认构造函数只会带来复杂性、低效率和不可靠性。虽然缺乏默认构造函数会带来数组初始化、模板兼容等限制,但这些限制可以通过更严谨的代码(如指针数组、placement new)解决,且本质上是“确保对象正确初始化”的合理代价。能通过默认构造函数完成合理初始化的类,才提供它;否则,坚决不提供。这是保证代码健壮性和效率的重要原则。

2025-07-22 00:00:00 962

原创 C++ 中 Pointers 与 References 的选择指南:你真的用对了吗?

当你确定变量必须指向某个对象,且永远不会改变指向时,用引用;当你需要实现特定操作符(如operator[]),且语法要求无法用指针满足时,用引用;其他情况(比如可能不指向任何对象,或需要动态改变指向),用指针。理解二者的差异,不仅能让代码更健壮,还能体现你对 C++ 底层逻辑的深刻把握。下次写代码时,不妨先问问自己:这个场景,到底该用指针还是引用?

2025-07-21 00:00:00 428

原创 读书笔记:最好使用C++转型操作符

意图更精确,易被人类和工具识别;编译器可诊断旧式转型无法检测的错误;语法虽冗长,但“丑陋”反而减少滥用,促使谨慎使用转型。综上,C++新式转型操作符在精确性、可辨识性和安全性上优于C旧式转型,应优先使用。

2025-07-20 00:00:00 387

原创 读书笔记:绝对不要以多态(polymorphically)方式处理数组

多态依赖虚表动态绑定,而数组依赖固定偏移量访问。混用两者会导致内存越界、资源泄漏或程序崩溃。永远使用容器替代数组存储多态对象。《More Effective C++:35个改善编程与设计的有效方法》读书笔记:绝对不要以多态(polymorphically)方式处理数组。遵循“具体类不继承自具体类”原则,减少多态数组误用风险。,因为编译器假设数组元素大小为基类大小(如。)偏移量计算错误,最终访问非法内存地址。通过基类指针或引用操作派生类数组会导致。),这会使指针算术运算(如。),而派生类通常更大(如。

2025-07-19 00:00:00 241

原创 CAD 约束求解:核心技术原理、流程及主流框架快速解析

在CAD软件中,约束求解(Geometric Constraint Solving, GCS)是一种通过数学方法处理几何元素间约束关系的核心技术,旨在确保设计的准确性和参数化驱动能力。其核心思想是将几何约束(如距离、角度、平行、相切等)转化为代数方程组,通过数值迭代或符号计算求解变量,从而动态调整模型结构。例如,当用户在草图中绘制两条线段并标注“平行”约束时,求解器会自动计算并保持这一关系,即使后续修改其他参数,平行性仍被维持。

2025-07-18 21:30:00 974

原创 OCCT基础类库介绍:Modeling Algorithm - Features

This library contained in BRepFeat package is necessary for creation and manipulation of form and mechanical features that go beyond the classical boundary representation of shapes. In that sense, BRepFeat is an extension of BRepBuilderAPI package.包含在 BRe

2025-06-22 00:00:00 791

原创 OCCT基础类库介绍:Modeling Algorithm - Sewing

缝合可从一组独立的拓扑元素(面和边)创建连通的拓扑结构(壳和线框)。例如,缝合可用于从独立面的组合中创建壳。具有部分共享边的形状区分缝合与其他修改几何形状的过程(如填充孔洞或间隙、粘合、弯曲曲线和曲面等)非常重要。缝合不会改变形状的几何表示。缝合适用于未连通但因几何重合而可以连通的拓扑元素(面、边):它添加拓扑连通性信息。在流形缝合的情况下,已连通的元素保持不变。浮动边:不属于任何面;自由边界:仅属于一个面;共享边:属于多个面(如流形拓扑中的两个面)。Sewn faces缝合面。

2025-06-21 00:00:00 588

原创 OCCT基础类库介绍:Modeling Algorithm - Offsets, Drafts, Pipes and Evolved shapes

需要注意的是,实际公差增长取决于偏移距离和输入面之间的连接质量。无论如何,良好的输入壳(相邻面之间的平滑连接)将产生良好的结果。类允许通过引导线(Spine,线框 Wire)和轮廓(Profile,形状 Shape)创建管道。演化实体通过在脊柱上扫掠轮廓的参考轴创建。轴的原点移动到脊柱,X 轴与局部切线重合,Z 轴垂直于面。此方法通过直接在原始壳与其偏移版本之间创建实体来简化流程,无需指定要移除的面。第二种算法基于以下事实:单个面的无延续偏移计算始终可以构建。方法以实体、要移除的面列表和偏移值作为输入。

2025-06-20 00:00:00 1027

原创 OCCT基础类库介绍:Modeling Algorithm - Topological Tools

输入的边可以不共享,但输出的线框将共享重合的顶点和边。不过,如果输入的边已经共享,可以通过向方法传递相应标志来跳过相交阶段。因此,如果输入的边不是平面的,输出的线框也将是非平面的。一般来说,输出的线框是非流形的,可能包含自由顶点以及多连通顶点。一般来说,输入的线框是非流形的,可能未闭合,但应共享重合部分。可以从随机位于3D空间中的任意平面边集创建平面面。要从边创建面,首先需要从给定的边创建平面线框,然后从每个线框创建平面面。从一个边获取面上的参数曲线,并将其附加到与第一条边重合的另一条边上。

2025-06-19 00:00:00 973

原创 OCCT基础类库介绍:Modeling Algorithm - The Topology API

如果结果形状包含形状的分割部分而不是形状本身,则该形状在操作期间被视为已修改。结果形状中包含的形状分割部分是从该形状修改而来的。已修改形状由输入形状的子形状创建,并且通常重复其几何结构。历史记录基于操作结果填充。如果操作结果为空形状,则所有输入形状将被视为已删除,且没有已修改和已生成的形状。如果结果形状中包含的形状是在操作期间生成的,并且与创建它们的形状具有不同的维度,则这些形状被视为从输入形状生成的。例如,在两个相交实体的切割(CUT)操作中,完全位于工具实体内部的所有顶点/边/面将在操作期间被删除。

2025-06-19 00:00:00 778

原创 OCCT基础类库介绍:Modeling Algorithm - Primitives

其中面指覆盖旋转曲面的面。BRepPrimAPI_MakeWedge 类可用于构建楔体,即倾斜的长方体(带角度的长方体)。楔体的构造方式与长方体非常相似:通过三个维度 dx、dy、dz 加上参数,或通过坐标系、三个维度和参数来构造。旋转图元通过绕轴旋转曲线创建,包括圆柱、圆锥、球体、圆环以及可处理任意曲线的旋转体。圆柱体可以在默认坐标系中创建,也可以在给定的坐标系 gp_Ax2 中创建。以下代码构建了图中的圆柱面,它是一个沿 Y 轴方向的四分之一圆柱体,原点位于 X,Y,Z,长度为 DY,半径为 R。

2025-06-18 00:00:00 897

原创 OCCT基础类库介绍:Modeling Algorithm - Boolean Operations

由于大多数工业零件由多个简单元素组成,例如齿轮、臂架、孔、肋板、管道和管件,通常可以先分别创建这些元素,然后通过布尔运算将它们组合成完整的最终零件。BRepAlgoAPI_Section 用于执行截面操作,结果为由 TopoDS_Edge 组成的 TopoDS_Compound。从拓扑学角度来看,这些是拓扑操作后紧接着进行的混合处理(即在拓扑操作后生成的边上添加圆角)。BRepAlgoAPI_Common 用于执行交集操作。BRepAlgoAPI_Fuse 用于执行融合操作。

2025-06-18 00:00:00 844

原创 OCCT基础类库介绍:Modeling Algorithm - Standard Topological Objects

若无共享顶点,算法会搜索边与线框中位置相同的顶点(使用顶点容差测试)。若找到此类顶点对,边会被复制并使用线框顶点替换原始顶点,边的所有顶点都可与线框顶点交换。当添加的点/顶点与前一个位置相同时,不会添加到当前线框,且最近创建的边变为Null。BRepBuilderAPI_MakeWire类可返回添加到线框的最后一条边(Edge方法),若边被复制,则可能与原始边不同。若要添加多个线框,可使用面和第一个线框创建BRepBuilderAPI_MakeFace实例,然后使用Add方法插入新线框。

2025-06-17 00:30:00 983

原创 OCCT基础类库介绍:Modeling Algorithm - Geometric Tools

圆的内外侧圆的内外侧定义并不复杂。如以下示意图所示,外侧由副法线方向指示,即沿圆的遍历方向的右侧,左侧则为内侧(或"实体侧")。直线和曲线的内外侧BuildPlateSurface 类允许创建框架,以根据曲线和点约束以及容差设置构建曲面。结果通过 Surface 函数返回。请注意,构造时无需指定初始曲面,可后续添加;若未加载初始曲面,将自动计算曲面。CurveConstraint 类允许将曲线定义为待构建曲面的约束。PointConstraint 类允许将点定义为待构建曲面的约束。

2025-06-16 23:00:00 254

原创 OCCT基础类库介绍:Bounding boxes

其最常见的用途是作为过滤器,避免对形状对之间的多余干涉进行检查(边界框之间的干涉检查比形状之间的检查简单得多,若边界框不干涉,则无需再检查对应形状之间的干涉)。图中的AABB发生了干涉,因此许多OCCT算法会花费大量时间检查形状之间的干涉。然而,若检查OBB(其未发生干涉),则无需再搜索形状之间的干涉。:根据需要扩展边界框,以包含作为参数传入的对象(点、形状等);本节后文将表面积最小的边界框称为“最优边界框”。包含从形状创建边界框(AABB和OBB)的方法。:检查参数是否在当前边界框内部/外部。

2025-06-15 03:00:00 925

原创 OCCT基础类库介绍:Properties of Shapes

计算局部属性的点由曲线上的 u 参数值和曲面上的 (u,v) 参数值定义。被分析的边和面被描述为 BRepAdaptor 曲线和曲面,它们为形状提供了描述其几何支撑的接口。局部属性的基点由曲线上的 u 参数值或曲面上的 (u, v) 参数值定义。“曲线和曲面的局部属性” 组件提供计算 Geom 曲线(二维或三维空间)或曲面上各种局部属性的算法。对于单个曲面,两个曲面的连接(见上图)仅在每个交点处定义其连续性。BRepLProp 包提供形状局部属性组件,包含计算 BRep 模型中边和面的各种局部属性的算法。

2025-06-15 01:30:00 697

原创 OCCT基础类库介绍:Modeling Data - Classes inheriting TopoDS_Shape

派生TopoDS中没有的其他类是无意义的,所有对拓扑数据结构的引用都使用TopoDS中定义的Shape类及其继承类。TopoDS_Shape仅仅是增强了方向和局部坐标的引用,共享TopoDS_Shapes没有意义,重要的是共享底层的TopoDS_TShapes。以下类继承Shape:TopoDS_Vertex、TopoDS_Edge、TopoDS_Wire、TopoDS_Face、TopoDS_Shell、TopoDS_Solid、TopoDS_CompSolid和TopoDS_Compound。

2025-06-15 01:00:00 1048

原创 OCCT基础类库介绍:Modeling Data - 2D Geometry & 3D Geometry & Topology

如果需要对象实例集而非单个实例,可使用 TColGeom2d 包,该包为 Geom2d 包中的曲线提供一维数组和序列的标准常用实例化。Geom 包定义三维空间中的几何对象,包含所有基本几何变换(如恒等、旋转、平移、镜像、缩放变换、变换组合等),以及取决于几何对象参考定义的特殊函数(如 B 样条曲线上添加控制点、曲线修改等)。例如,考虑三个基本坐标:R1、R2、R3,复合坐标为:C1 = R1 * R2,C2 = R2 * R3,C3 = C1 * R3,C4 = R1 * C2。N 阶导向量的函数。

2025-06-15 00:00:00 927

原创 OCCT基础类库介绍:Modeling Data -Change of coordinates

继承 TopoDS_TShape 的类可在必要时携带几何域的描述(例如,与 TVertex 关联的几何点)。形状模型是可共享的数据结构,因为它可被其他形状使用(边可被实体的多个面使用)。注意,此数据结构不含任何反向引用,所有引用从更复杂的底层形状指向较简单的形状。按从顶点到组合实体的复杂度顺序列出形状,可得出数据结构的概念,即如何将形状分解为一组更简单形状的知识。TopoDS_Shape 类描述对形状的引用,包含对底层抽象形状的引用、方向和局部引用坐标。数据结构中局部坐标的使用允许共享重复子结构的描述。

2025-06-15 00:00:00 1028

原创 OCCT基础类库介绍:Modeling Data - Geometry Utilities

Geometry Utilities provide the following services:几何实用工具提供以下服务:In modeling, it is often required to approximate or interpolate points into curves and surfaces. In interpolation, the process is complete when the curve or surface passes through all the point

2025-06-14 00:00:00 1170

使用OpenGL + QT 实现管线求交地操作

这份代码实现了一个基于 OpenGL 和 Qt 的三维可视化程序,用于渲染一个彩色的立方体,并支持用户通过鼠标操作来发射射线以及旋转视角。用户可以通过鼠标左键点击窗口发射射线,射线会从相机位置出发,指向点击位置在三维空间中的对应点;同时,用户按住鼠标右键拖动可以旋转视角,从而改变观察立方体的角度。

2025-03-21

Open CASCADE Technology 7.6.0用于3D建模瓶子实例教程

内容概要:本文详细介绍了利用 Open CASCADE Technology(OCCT)7.6.0 开发环境进行三维几何建模的应用实践。具体而言,通过构建瓶身模型为实例讲解如何使用 OCCT 中的基本组件完成从简单图形到复杂组合实体的各项步骤。首先定义几何形状与参数,随后创建截面并沿轴线拉伸生成实体,在此基础上进一步修饰边角添加瓶颈、螺纹特征以及内部掏空处理等一系列工艺流程都被逐步剖析。 适用人群:有经验的C++程序员或工程师,对几何建模有兴趣的技术人员。 使用场景及目标:①了解OCCT基本类及其用法;②熟悉运用C++接口操作点线面;③掌握实体变换及布尔运算;④提升解决实际工程项目问题的能力。 其他说明:提供了一种系统性的学习方法论来帮助初学者上手OCCT平台上的产品开发流程,并指出了更多深入探索的方向如咨询和支持服务网站链接。

2025-03-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除