- 博客(1640)
- 问答 (1)
- 收藏
- 关注

原创 挑战数学文明的基石:进位才是压制人类发展的“二象金箔”
但我们是否想过,每一次“进位”,在看似拓展了数字表示范围的同时,也带来了一次认知上的复杂化和维度的损失?下一次,当你看到计算机屏幕上的代码,或是演算纸上的一串数字时,不妨这样思考:我们所运用的,究竟是宇宙的终极真理,还是仅仅是“进位文明”这个伟大囚笼中,一套自洽而完美的生存法则?“进位”这张“二象金箔”,在赋予我们强大计算能力的同时,也可能将我们的思维模式固化在了“层级”和“序列”的维度上。它是一把精巧的钥匙,打开了现代科学的大门,但或许,它同时也是一把坚固的锁,锁住了通往另一种未知文明范式的门。
2025-06-19 14:19:39
539
27

原创 对边界表示法的核心理解: 拓扑对象赋予了几何对象边界和范围
包前缀全称角色与职责类比示例gp_几何图元:最基础的数学元素,用于计算和定义。砖块、水泥、坐标尺gp_Pnt(点),gp_Vec(向量),gp_Dir(方向),gp_Trsf(变换)Geom_Geometry纯粹几何:定义理想化的、无限的几何形状(曲线、曲面)的数学方程。设计蓝图Geom_LineGeom_PlaneTopoDS_拓扑结构:描述几何体各部分如何连接,并赋予其边界。具体的建筑部件(顶点),(边),(面),(实体)BRep_边界表示工具:提供访问和查询TopoDS_对象及其关联。
2025-06-17 10:20:04
1789
22

原创 没有绝对完美的架构:架构因迭代而涅槃
一个在当前看来近乎完美的架构,随着时间的推移,外部技术的演进(新的语言、框架、中间件的出现)、业务需求的变更(市场扩张、用户行为变化)、以及系统内部复杂度的自然累积(代码的熵增),都可能使其逐渐变得臃肿、低效,甚至成为发展的桎梏。市场的反馈、运维的数据、开发团队的体验,都成为驱动架构演进的“选择压力”,促使其向更优的方向“突变”和“选择”。“涅槃”一词,本意指超越生死轮回的境界,在软件架构的语境下,它隐喻着架构通过不断的自我扬弃和重构,从旧的束缚中解脱,达到一种更高层次的适应性和生命力。
2025-05-08 19:30:41
364
9

原创 Qt故事会: 初识惊叹跨平台魔力 , 深入惨遭跨平台挑战
这就像是给了你一套能在各种道路上行驶的汽车零件(Qt),但如果组装汽车的人(原始开发者)按照越野车的标准加了很多只适用于崎岖山路的特殊装备(Windows 特有代码),那么当你想把这辆车开到平坦的公路上(移植到 Linux)时,就需要拆掉或改造那些特殊装备,这当然会很费劲。Qt 框架本身尽力提供了跨平台的基础,但如果最初的开发者没有严格遵守跨平台编码规范,大量使用了平台绑定的特性,那么后续的移植工作自然会非常痛苦,远非简单的“重新编译”就能解决。Qt 确实是一个强大的跨平台框架,它极大地简化了多平台开发。
2025-05-05 17:24:00
537
15

原创 QML对象更新机制与缓存问题的讨论
QML 很适合“首屏直观开发”,但一旦进入“动态组件管理阶段”,你必须自己设计组件的生命周期与状态控制机制,否则缓存机制会让你掉进“状态不同步”的坑里。用缓存要有意识;给组件设计 reset;不信赖生命周期钩子;优先重置,不轻言销毁;靠测试发现复用问题。
2025-05-01 20:42:52
953
11

原创 Qt界面流畅性的系统讨论: 多维度渲染性能优化
实际开发中应结合性能分析工具精准定位瓶颈,优先解决影响最大的问题(如算法复杂度从 O(n²) 优化到 O(n)),再逐步实施其他优化策略。四个维度提供系统化解决方案,涵盖从代码优化到硬件加速的完整技术链。,导致界面无法及时刷新(通常需保持 60 FPS)。合并多个绘制调用为单个调用(减少OpenGL状态切换)。强制固定刷新频率(如30 FPS)。仅保留最新数据,避免内存无限增长。降低数据密度,减少传输和计算量。合并高频刷新请求,避免冗余渲染。仅重绘界面中发生变化的区域。使用GPU硬件加速图形绘制。
2025-02-20 09:27:43
1332
37

原创 山外青山楼外楼 : 详解 Qt信号与槽的100种用法 (眼界篇)
在 Qt 信号与槽的应用中,基于其核心机制和可扩展性,理论上有无限种组合和变种。具体来说,常见的信号与槽用法和场景应用大约可以总结出以下 100 多种主要方式,分为几个大类:在自定义类中定义信号和槽,可以让你的类具备灵活的通信能力。2. Lambda 表达式作为槽在现代 C++(C++11及以上)中,可以使用 Lambda 表达式代替传统槽函数。这对于一次性处理或简化代码非常有用。3. 函数指针的使用Qt 5 引入了基于函数指针的信号与槽连接方式,比字符串形式更加安全和高效。4. 信号与槽的
2024-11-30 19:47:31
1699
38

原创 基于epoll ET模式 的 非阻塞IO服务器模型
你的这段代码整体设计非常扎实,目标明确——使用 `epoll` 的 **边缘触发 (ET) 模式** 实现一个高并发 TCP 服务器,模拟**接收小缓冲区**和**大数据压力**下的传输情景,细节处理得也比较完善,尤其是在非阻塞 I/O、缓冲处理和连接管理上都非常到位。即使你设了 `recv_buf[1]`,也可以把 `recv()` 调整为尽可能多地接收数据,比如设为 `recv_buf[512]`,然后 `memcpy` 进去,这样你仍然保有模拟小缓冲区的结构,但性能好很多。
2024-04-03 21:07:53
1047
17
原创 OCCT TopTools_Array1OfListOfShape 详解
它在需要对拓扑形状进行分组、归类或建立索引映射关系的场景下非常高效和实用。假设你正在分析一个复杂的三维模型,你想找出模型中所有的。,并将每个面上的所有**边(Edge)**进行归类。,比如说有 10 个抽屉,编号从 1 到 10。这个数据结构为什么存在?它在三维建模中有什么用?这种“数组的列表”结构在需要对一组对象进行。是一个为了方便开发者而预定义的。,这个文件柜有固定数量的。则用来存储属于该分类的。
2025-08-09 17:17:51
755
17
原创 OCCT `TopTools` 类自身的方法分析
为了方便开发者,TopTools预定义了大量基于 OCCT 自身容器库的模板实例化,专门用于存储。这避免了开发者在自己的代码中反复编写冗长的模板定义。: 形状的哈希集合(Set)。: 形状的动态数组(类似: 形状的双向链表。: 以形状为键(Key)、整数为值(Value)的哈希映射(Map)。等等… 列表非常长,覆盖了各种常用的数据结构组合。TopTools类是一个面向 Open CASCADE 开发者的核心辅助工具集。它不是用来创建几何的,而是用来管理和探查已有的几何拓扑。
2025-08-09 17:13:48
791
原创 详解 OCCT GeomAPI_IntCS Class
public :宏为该类提供内存分配的功能。类是 OCCT 中用于计算曲线和曲面交点的类,它提供了一些方法来执行交点计算,并返回计算结果(交点和交线段)。这个类特别适用于需要精确计算和分析曲线与曲面交集的几何建模应用,通常用于 CAD 或 CAE 软件中。
2025-08-08 09:21:59
295
2
原创 OCCT尖点采样算法: 如何赋予 完美的“尖点” 一个半径
从数学上讲,一个(或者说曲率是无穷大,半径为0)。我们的算法之所以能算出一个值,并不是因为它“算出”了那个尖点的半径,而是因为它非常聪明地执行了一个**“B计划”**。
2025-08-07 17:03:19
930
21
原创 详解 BRepPrimAPI_MakeCone
/ 继承自 BRepPrimAPI_MakeOneAxispublic:// ... 四个重载的构造函数 ...// ... 成员方法 ...protected:private:// 核心!API类包含了一个算法类的实例关键点解读继承是一个为所有“单轴对称”图元(如圆柱、圆锥、圆环)设计的基类。这个基类提供了这些图元共有的能力,其中最重要的是构建(Build)和类型转换的功能。正是因为这个继承,对象才能被隐式地转换为,使得这样的代码能够成立。它还提供了。
2025-08-06 19:38:40
784
1
原创 详解 OCCT BRepPrimAPI 函数族
将这些基本体的创建功能集中到高度封装与易用性 (High-level Encapsulation & Ease of Use)目标:让开发者摆脱繁琐的底层细节,专注于更高层次的业务逻辑。体现:提供“一键式”创建标准几何体的能力,是典型的“高内聚、低耦合”设计思想。它是OCCT提供给开发者的一个“快捷方式”层。作为复杂建模的基础 (Foundation for Complex Modeling)目标:提供构建复杂模型的可靠起点。几乎所有复杂的零件都是从这些基本形状通过组合、切削、变形等操作得来的。
2025-08-06 19:29:52
581
1
原创 详解 OpenGl_AspectsProgram 类
这种设计非常适合 3D 图形渲染引擎的需求,既保证了性能(避免不必要的 GPU 状态切换),又提供了灵活的资源管理机制。
2025-08-05 20:32:49
313
4
原创 详解 OCCT OpenGl_Aspects 类
类是 Open CASCADE Technology (OCCT) 中一个精心设计的OpenGL渲染管线组件,体现了多个层面的设计智慧。
2025-08-05 20:30:27
409
原创 OCCT BinMFunction_GraphNodeDriver 类设计思想与C++语法详解
每个驱动程序是一个"命令",执行特定的序列化操作可以动态注册和调用不同的驱动程序。
2025-08-04 20:00:27
904
1
原创 OCCT BinMFunction_FunctionDriver 类设计思想详解
职责单一:每个驱动程序只负责一种属性类型的序列化接口统一:所有驱动程序遵循相同的基类接口易于扩展:添加新属性类型只需实现新的驱动程序错误处理:提供完整的错误检查和状态返回机制类型安全:通过强类型系统确保操作的正确性这种设计使得 OCCT 的序列化框架具有良好的模块化可维护性和可扩展性,是企业级 CAD 软件架构设计的典型范例。
2025-08-04 19:54:55
607
原创 OCCT BinMDocStd 核心模块
BinMDocStd是 OpenCASCADE (OCCT) 中用于的函数族,主要负责文档数据的二进制序列化和反序列化操作。
2025-08-03 21:20:58
487
4
原创 OCCT问题根源:对圆柱体创建方式的误解
但是的行为是:从轴心开始,向轴方向延伸height的距离。所以如果轴心在中间,圆柱体会从中间开始向上延伸,导致下半部分没有被包围。这样圆柱体从最低点开始向上延伸,正好覆盖整个范围。
2025-08-03 20:50:40
409
1
原创 BinMDF:OCCT 二进制持久化的通用引擎与框架
BinMDF是 OCCT 二进制持久化机制的中央神经系统。它本身不处理任何具体的业务数据,而是提供了一套强大且可扩展的抽象规则和管理工具。正是有了BinMDF这个坚实的基础,像(标准属性)、(几何属性)、BinXCAF(装配和颜色属性) 等众多模块才能以统一、解耦的方式插入到持久化流程中,共同完成复杂的 OCAF 文档的存取任务。
2025-08-02 19:43:06
926
2
原创 深入解析 OCCT 持久化核心:BinMDataStd 驱动族
是 OCCT 持久化框架的基石之一。它通过一个属性类型对应一个驱动程序的清晰模式,实现了对 OCAF 标准数据的高效、可靠的二进制序列化和反序列化,是任何需要保存和加载 OCAF 文档的 OCCT 应用程序都离不开的功能族。
2025-08-02 19:37:21
741
27
原创 OCCT 传统限制 vs ZLayer解决方案
✅绕过Context限制- 不需要为每个View创建单独的Context✅保持架构简洁- 一个Viewer + 一个Context + 多个View✅独立显示控制- 每个View可以独立决定显示什么✅性能优势- 避免对象重复创建和内存开销ZLayer机制巧妙地在View层面提供了独立的可见性控制,成功绕过了Context级别的全局显示状态限制!
2025-08-01 14:23:16
296
1
原创 OCCT **V3d_Viewer** 管理多个 **V3d_View**
每个View都是完全独立的显示窗口,可以有不同的视角、缩放、显示模式、背景、光照、渲染设置、投影模式和剪切平面。这种灵活性使得可以在同一个应用中创建多种不同的视图效果,比如CAD软件中常见的四视图布局。
2025-08-01 14:00:49
258
原创 Qt setAttribute(Qt::WA_DeleteOnClose) 标志在dialog上的作用
关于Qt框架中的这个标志在dialog上的作用。是Qt中的一个widget属性(widget attribute),当设置这个属性后,意味着当窗口关闭时,Qt会自动删除这个widget对象。让我用中文详细解释一下。
2025-08-01 11:11:25
276
22
原创 BinLDrivers 模块:OCAF 文档二进制存储与检索的核心框架
它不关心每个箱子里面具体是什么,但它严格定义了箱子(数据块)如何摆放、如何记录位置,以及如何验证仓库的完整性。在写入文件时会创建一个这个类型的对象来收集所有数据块的信息,然后将整个列表序列化到文件中。这个类(通常只是一个头文件)定义了一系列常量,这些常量是二进制文件格式中的“标记”。这是一个包类,提供静态函数来将本模块的功能集成到 OCCT 的主持久化系统中。想象一下你要将内存中一个复杂的项目(OCAF 文档)打包成一个二进制文件。这样的模块是负责如何打包“具体物品”(如命名属性)的专家,那么。
2025-07-31 20:49:44
1152
2
原创 BinMNaming 模块:OCAF 拓扑命名的二进制持久化驱动
启动与注册: 应用程序启动时,调用,将注册到 OCAF 的二进制驱动表中。保存操作: 用户请求保存 OCAF 文档。遍历与查找: OCAF 持久化框架遍历文档中的所有。当遇到一个属性时,它发现该属性继承自。分发: 它在驱动表中查找到已注册的来处理。具体处理被调用,它检查发现这个属性的具体类型是,于是将任务转交给专门的。序列化执行其Write方法,将形状和命名信息序列化为二进制数据写入文件。加载操作: 当重新打开文件时,以上过程逆向执行,Read方法被依次调用,最终在内存中恢复完整的命名信息。
2025-07-31 20:45:12
621
原创 模块概述:BinMDataXtd
是BinaryModelingDataXtended的缩写。如果说BinDrivers是负责整个文档存取的“总承包商”,那么模块提供的就是一群“专业技术工人”(如电工、水管工、木工)。核心职责:为一系列特定的 OCAF属性(Attribute)提供二进制的读取(Retrieval)和写入(Storage)功能。属性(Attribute):在 OCAF 中,数据不是随意存放的,而是被封装在各种“属性”对象里,并附加到文档树的“标签(Label)”上。例如,一个几何约束被封装在。
2025-07-30 19:52:13
1277
25
原创 模块概述:BinDrivers
BinDrivers模块的核心功能是提供二进制持久化(Binary Persistence)的解决方案。持久化 (Persistence):是指将内存中的对象(比如一个完整的三维模型、装配体或应用数据)保存到永久性存储介质(如硬盘文件)中,并在需要时能从文件中恢复这些对象的过程。这通常被称为序列化(Serialization)和反序列化(Deserialization)。二进制 (Binary):表示数据以二进制格式进行存储。
2025-07-30 19:49:23
803
原创 剖析Open CASCADE (OCCT) 的基石:Standard模块核心组件详解
这些文件确保了OCCT在不同操作系统和编译器上拥有一致的数据类型。: 定义(通常是32位整型)。: 定义(通常是double,64位浮点数)。: 定义(通常是float,32位浮点数)。: 定义truefalse: 定义(通常是char: 定义(宽字符,用于Unicode)。: 定义(字节类型)。: 定义(即),是C风格的字符串。(e.g.,): 定义指向相应基础类型的指针 (: 通常是包含上述类型定义的汇总文件。您列出的这些文件共同构成了OCCT的 Standard模块。
2025-07-29 19:48:43
923
1
原创 OCCT核心基础:TCollection字符串系统详解 (AsciiString, ExtendedString及其句柄)
类名类型字符集主要用途值类型ASCII高效处理纯ASCII文本,如内部标识符。值类型处理国际化文本,如用户界面显示的内容。句柄 (智能指针)ASCII高效共享、自动管理内存的ASCII字符串。句柄 (智能指针)高效共享、自动管理内存的Unicode字符串。总而言之,这些文件构成了 Open CASCADE Technology 中字符串处理的基础设施,通过区分ASCII/Unicode和值/句柄,为开发者提供了在不同场景下(性能、内存管理、国际化)选择最合适工具的灵活性。
2025-07-29 19:43:20
588
原创 OCCT 中 标准异常类 Standard_OutOfMemory
类继承自,用于表示程序在执行过程中内存分配失败的异常情况。这个类的实现有其特殊性,主要是为了在真正的内存不足环境下,避免因为异常本身的创建或处理而再次触发内存分配失败,从而导致更严重的程序崩溃。这是一个OCCT特有的宏,用于定义智能指针和相关的引用计数机制。这是一个条件抛出异常的宏。如果在编译时定义了或,则该宏会展开为空,即不抛出异常。否则,当CONDITION为真时,它会。这在调试或特定环境下禁用异常时非常有用。
2025-07-28 14:54:34
733
3
原创 OCCT 大饼芝麻算法: 揭露曲面比较本质
想象用一把尺子,从基准面上的每个芝麻,垂直测量到另一张薄饼的距离。就像找出:“最近的地方差了0.1mm,最远的地方差了5.2mm”想象你有两张薄饼(两个曲面),你想知道它们之间的差别有多大。就是成功测量的比例,比如"95%的点都成功测量了距离"(有些芝麻可能投影失败,比如掉到薄饼外面了)就是把所有距离加起来除以点数,得到平均差距。这就是整个算法的计算逻辑!= 成功测量到距离的芝麻数量。
2025-07-28 11:38:03
856
23
原创 OCCT Handle 学习导论
(类似于boost::intrusive_ptr),引用计数器直接嵌入在被管理的对象中(Standard_Transient基类),而不是单独分配内存存储计数器。这个设计巧妙地平衡了性能、安全性和易用性,是现代C++智能指针的优秀实现。
2025-07-27 15:09:25
229
2
原创 BOPAlgo_CellsBuilder 类分析
BOPAlgo_CellsBuilder 是基于通用融合算法(GFA)的类,用于处理布尔运算后的分割部分,允许用户自定义结果内容和内部边界。
2025-07-26 20:52:50
429
VScode间接性黑屏?
2021-02-27
TA创建的收藏夹 TA关注的收藏夹
TA关注的人