首页/新闻资讯/正文详情

CAA框架Design_Frame 2.2.1:CATIA刀具设计二次开发实战

发布时间:2026/9/25 2:50:12 来源:云帆数科 栏目:资讯中心
CAA框架Design_Frame 2.2.1:CATIA刀具设计二次开发实战
简介面向CATIA二次开发工程师的刀具设计参数化框架Design_Frame2.2.1基于CAA技术构建用于在CATIA环境中快速搭建刀具参数化建模与知识工程工具。压缩包约6.24MB共657个文件核心代码包括464个头文件、9个C源文件配合mk/mkdg构建脚本、vcproj/sln工程文件和dll/lib编译产物构成完整的CAA插件开发框架其中头文件用于接口与数据结构声明、源文件实现核心逻辑、工程文件支撑Visual Studio环境下的编译调试。另有bmp/jpg图标、catnls/catrsc本地化资源及大量log构建日志便于查看编译过程与资源定义。目前已有165人学习下载适合需要了解CAA工作台扩展、参数驱动建模、对话框定制与知识工程集成的开发者刀具设计人员可借鉴其智能选型、性能模拟和标准件库管理逻辑。通过研读该框架可节省从零搭建CATIA插件的时间复用参数化设计模块提升刀具设计系统的开发效率。1. Design_Frame 2.2.1 是套什么骨架CAA 刀具设计里最该先做的那件事第一次听到 “Design_Frame2.2.1” 这个名字很多人会以为是某个开源刀具库其实它是 CAA 项目里一个框架的代号版本号跟刀具型号无关而是框架接口自身的演进版本。做 CATIA 二次开发的同事之间聊起来常说“框架比功能值钱”因为刀具设计这行当里真正的业务差异往往只占两成剩下八成是重复劳动新建 Part、拉草图、建拉伸、发布参数、挂刀具库、出工程图。Design_Frame 2.2.1 想解决的问题就是把这八成熟练活收进一套可复用的 C 骨架里让后续每加一款刀只需要写差异部分。这篇文章适合已经在做 CATIA 二次开发、被 RADE 环境和 DLL 加载折磨过的工程师新手照着从第二章开始搭环境也能在半天内跑出自己的第一个 CAA 框架。2. 搭出 Design_Frame 2.2.1 的可编译框架RADE 环境、模块拆分与 MkBuild 部署CAA 的坑十有八九出在环境和模块拆分上代码本身反而好说。这一章先把地基夯实版本怎么选、框架目录怎么建、编译产物怎么让 CATIA 认到。Design_Frame 2.2.1 这个名字里既然带了版本号我们索性把框架版本管理也做进去后续升级接口时 IdentityCard 里的版本号一起跟着改避免客户端机器上同时存在新旧两套 DLL 互相覆盖。2.1 CAA 与 CATIA 版本怎么配编译器版本对照和最容易翻车的地方CAA 不像普通 C 项目不是“装了 VS 就能编”。CATIA 每个版本绑定一套受支持的编译器RADERapid Application Development Environment检测不到匹配的编译器时MkBuild 会直接报错连代码都编译不过去。常见的配对关系大致是这样CATIA 版本常用编译器我实际用下来最在意的点V5R21VS2005Windows 10 上装 VS2005 编译器容易缺 MFC 组件编译时头文件一堆找不到V5-6R2016VS2012必须装对应的 MFC 库否则链接阶段报一堆 LNK 错误V5-6R2022VS2015 / VS2017工作区路径里别带空格和中文否则 MkBuild 解析路径会翻车这里有个经验如果公司里刀的模板和设计表是从 V5R21 时代传下来的先别急着上新版本。CAA 代码虽然大体向上兼容但旧模板里某些草图约束在 V5-6R2022 里打开会重新求解结果几何变了。我一般会单独装一台 V5R21 的虚拟机专门做旧模板回归新框架放 V5-6R2022 上折腾。另外RADE 重装是一个反复出现的场景。换电脑或者升级 CATIA 后千万不要只重装 CATIA 本体CAA 的 RADE 组件要在 CATIA 安装之后再装一遍并且安装时“目标目录”要指向 CATIA 的安装根目录。装完 RADE 后还要确认环境变量里能看到DSHOME和DSROOT这两个变量找不到的时候MkBuild 根本不知道去哪里找头文件。提示装完 RADE 后在命令行敲set DSROOT能看到类似C:\Program Files\Dassault Systemes\B26的路径说明环境已经就绪。2.2 新建框架与模块DesignFrame 的目录骨架一次到位CAA 里的“框架”其实是一组模块的集合。我用 RADE 向导新建框架时框架名就叫DesignFrame然后往里面建三个模块DFKernel几何内核与参数封装、DFCommand交互命令、DFUI对话框与图标资源。这样拆的好处是刀具库的逻辑放在 DFKernel 里以后出批处理或者换 UI 框架都不需要动内核代码。建好后的目录结构长这样# Design_Frame 2.2.1 工作区目录示意 D:\CAA_Workspace\DesignFrame ├── CNext │ ├── identitycard │ │ └── DesignFrame.fc # 框架版本与依赖声明 │ ├── code │ │ ├── public # 对外头文件 │ │ └── src # 源码 │ └── system # 编译中间产物 ├── Modules │ ├── DFKernel │ └── DFCommand └── DesignFrame.mk # 框架级 MakefileDesignFrame.fc是框架的“身份证”里面声明了框架名、版本、依赖的 CATIA 模块。我一般会把版本号写成2.2.1并在注释里写明这个版本改了哪些接口。这样客户端机器上如果跑着 2.2.0 的旧 DLL通过查看.fc文件就知道兼容性边界在哪。这里容易犯的第一个错是把所有代码都塞进一个模块里。CAA 编译和加载的最小单位是模块框架本身不产出 DLL。如果DFKernel、DFCommand、DFUI全写在一个模块里任何一个 UI 按钮的改动都会导致整个模块重新编译提交代码进版本库时冲突也多。按模块拆开以后DFCommand的改动不会触发DFKernel重编。2.3 MkBuild 编译与 DLL 落位让 CATIA 在启动时认到你的框架在 RADE 的命令行环境里编译 Design_Frame 2.2.1 的固定两步是# 1. 生成必要的 .gen 文件和依赖关系 MkMk -f D:\CAA_Workspace\DesignFrame\CNext\DesignFrame.mk # 2. 编译并生成 DLL MkBuild -f D:\CAA_Workspace\DesignFrame\CNext\DesignFrame.mk第一次编译时如果 MkMk 报“找不到 .gen 文件”不用慌这往往只是 MkMk 没找到框架依赖的 CATIA 模块路径检查DSROOT环境变量即可。编译成功后DFKernel.dll、DFCommand.dll 会出现在各自的Modules目录下接下来要做的是把 DLL 放到 CATIA 能加载的位置。我常用的做法是建一个批处理脚本一键把 DLL 复制到 CATIA 目录echo off set TARGETC:\Program Files\Dassault Systemes\B26\intel_a\code\bin copy /Y D:\CAA_Workspace\DesignFrame\Modules\DFKernel\*.dll %TARGET% copy /Y D:\CAA_Workspace\DesignFrame\Modules\DFCommand\*.dll %TARGET% echo Design_Frame 2.2.1 DLL deployed.这里要特别注意intel_a这个路径。V5R21 和多数 V5 版本是 32 位程序DLL 必须放在intel_a\code\binV5-6R2016 之后的 64 位版本才有win_b64目录。放错了DLL 不会被加载。很多“编译成功但命令找不到”的问题十有八九就是把 32 位 DLL 塞进了win_b64目录。DLL 放好后启动 CATIA 时框架不一定马上出现。CAA 命令需要通过“命令列表”注册注册方式一般是在代码里实现一个命令容器Command Container并在.CATCmd资源文件里声明菜单路径。Design_Frame 2.2.1 的 DFCommand 模块里我维护了一个DesignFrame.CATCmd里面把“新建刀具”“参数修改”“刀具库导入”三个命令挂在同一个菜单下。没有这个文件DLL 即使加载成功菜单里也看不到入口。3. 在 Design_Frame 里生成第一把刀具实体Part、草图与平行曲线的 CAA 写法刀具建模的业务核心是“参数化”柄径、刃长、槽深、螺旋角、齿数这些参数最终要驱动三维实体。CAA 里从零创建特征不是不可以但维护成本高。Design_Frame 2.2.1 的 DFLKernel 采用的做法是“模板 Part 参数驱动”先在 CATIA 里手工建好一把标准刀的模板把关键尺寸全部做成参数并发布然后在 CAA 里打开模板、改参数、另存为新零件。这套路在刀具行业里最常见也最容易让新手在一天内跑通。3.1 用 CATDocumentServices 新建 Part 并拿到容器接口不管是从头建还是打开模板第一步都是拿到 Part 文档接口。在 CAA 里新建一个 Part 文档经典写法如下#include CATDocumentServices.h #include CATIPrtPart.h #include CATIPrtContainer.h CATDocument *pDoc NULL; HRESULT rc ::CATDocumentServices::New(Part, pDoc); if (FAILED(rc)) { // 大多数失败原因是许可证或 DocumentServices 未初始化 return; } // 从文档对象拿 Part 接口 CATIPrtPart *piPart NULL; rc pDoc-QueryInterface(IID_CATIPrtPart, (void**)piPart); if (SUCCEEDED(rc)) { // 拿到 Part 后进一步拿容器接口后续建草图、建实体都从容器走 CATIPrtContainer *piCont NULL; rc pDoc-QueryInterface(IID_CATIPrtContainer, (void**)piCont); // 此处 piCont 就是操作零件特征的入口 }这里CATDocumentServices::New是 CAA 的标准入口第二个参数传入文档类型字符串。注意 “Part” 和 “Product” 是两种不同的文档类型刀具设计通常用 Part 文档装配放在后续的 Product 层。QueryInterface 拿接口是 CAA 的标准动作新手最容易漏掉的是 rc 检查一旦后续代码在 piCont 为 NULL 的情况下继续执行CATIA 会直接崩溃连报错都没有。3.2 打开模板 Part 并替换尺寸比从零建特征更实用如果模板已经存在就不需要从头建草图。把建好的tool_template.CATPart放在一个固定目录CAA 里打开它#include CATDocumentServices.h CATDocument *pTplDoc NULL; HRESULT rc ::CATDocumentServices::Open( LD:/DesignFrame_Resources/tool_template.CATPart, pTplDoc ); if (FAILED(rc)) { // 模板路径不对或模板被占用时会走这里 return; } // 打开后用参数接口驱动尺寸 CATIPrtPart *piTplPart NULL; rc pTplDoc-QueryInterface(IID_CATIPrtPart, (void**)piTplPart); if (SUCCEEDED(rc)) { double dNewDiameter 12.0; // 直径改成 12 CATICkeParm *pParm NULL; rc piTplPart-GetParameter(D1, pParm); if (SUCCEEDED(rc) pParm ! NULL) { pParm-SetRealValue(dNewDiameter); } }这个写法的好处是几何求解交给 CATIA 内核CAA 代码只负责“改参数”和“另存为”。模板里D1这个参数名必须提前在 CATIA 里用 Formula 发布出来否则GetParameter会返回 NULL。我在实际项目里踩过这个坑模板里明明能看见直径尺寸但 CAA 里就是取不到原因是只建立了常规尺寸没有在 Knowledge 工具栏里把参数“命名并发布”。参数改完后调用pDoc-SaveAs(...)另存为新文件名再关闭模板。整个流程不出现一行几何创建代码但刀具实体已经按新尺寸重生成了这就是“模板 参数驱动”的最大优势。3.3 平行曲线加法则曲线把螺旋刃口按“公式”长出来刀具设计的难点往往不是柄部而是切削部分的螺旋槽。CATIA 界面里手工做螺旋槽常用做法是先草绘一条截面曲线再用“槽Groove”或“扫掠Sweep”沿螺旋线扫出槽体。这里最隐蔽的工作是螺旋线本身。在 CAA 里平行曲线是一个高频操作。比如要在参考曲线的法向偏移出一个等距曲线常见接口是 GSM 工厂#include CATIGSMUseFactory.h #include CATIGSMUseParallel.h CATIGSMUseFactory *pFact NULL; rc piPart-QueryInterface(IID_CATIGSMUseFactory, (void**)pFact); if (FAILED(rc)) return; CATIGSMUseParallel *pParallel NULL; rc pFact-CreateParallel( pRefCurve, // 参考曲线 pSupportSurf, // 支持曲面 0.1, // 容差单位毫米 3.0, // 偏移量单位毫米 pParallel );这里的核心参数是“偏移量”和“容差”。容差太大曲线光顺性尚可但精度不足对螺旋槽这种与后刀面相关的结构刀具检测时轮廓度超差容差太小曲线段数暴涨后续扫掠体运算速度明显变慢一个 20 齿的刀具能卡半分钟。而热门检索词里常出现的“用法则曲线创建平行曲线”意思是偏移量不是一个常量而是沿曲线变化的函数CATIA 界面里叫 Law法则曲线。CAA 里做法的思路是先用CATIGSMUseLaw创建一个法则指定“线性变化”和起止值再把这个法则赋给平行曲线的偏移参数。这样刃口开槽就能实现“根部深、端部浅”的变深槽这在很多钻头刀具里是必须的。注意CAA 的 GSM 工厂接口在不同 CATIA 版本里存在命名差异V5R21 和 V5-6R2022 的接口头文件不完全一致。写代码前先到intel_a\code\public\CATIGSMUseFactory.h里确认一下函数签名避免按旧版本写法编不过。4. 参数化与刀具库让 Design_Frame 从“一把刀”变成“一族刀”Design_Frame 的价值在第三章还只是“能出一把刀”到第四章才开始发挥“框架”的优势参数发布、Catalog 驱动、扩展点设计。刀具厂通常有成百上千个规格不可能一把刀一个模型文件正确做法是“一个模板 一张参数表 一段批量代码”。4.1 把直径、刃数发布成 CATIA 参数CAA 与 CATIA 的命名约定CATIA 里新建参数有两种普通尺寸和用户参数。CAA 代码里修改的必须是“已命名并发布的参数”否则拿不到CATICkeParm指针。命名有一个隐性约定——我用D1表示刃径、L1表示刃长、Z表示齿数、BETA表示螺旋角模板设计者必须按这个命名规范来建模板否则 CAA 代码就要花大量篇幅做参数名映射。在 CAA 里批量为参数赋值时我通常写一个小工具函数void SetPartParam(CATIPrtPart *pPart, const char *iParamName, double iValue) { CATICkeParm *pParm NULL; HRESULT rc pPart-GetParameter(iParamName, pParm); if (SUCCEEDED(rc) pParm ! NULL) { pParm-SetRealValue(iValue); pParm-Release(); pParm NULL; } else { // 参数不存在或未发布写日志而不是静默跳过 printf([DesignFrame] param %s not found.\n, iParamName); } }这里有个重要细节SetRealValue只是设置参数值不会立刻刷新几何。如果需要立即更新三维模型还要调用参数所属 Part 的更新接口。在 CAA 里常见做法是拿到CATIUpdate接口后调用Update()。漏掉更新这一步参数改了但模型还是旧形状导出 STP 时会把旧几何丢给下游很容易在工艺那边造成批量报废。4.2 用 Catalog 驱动批次改型Excel 表与 CAA 的参数映射参数表驱动有两条路一条是 CATIA 自带的设计表Design Table另一条是程序直接读 Excel 参数文件。我推荐后者原因很简单——刀具厂的参数表往往在 ERP 系统里维护导出 Excel 是标准动作让 CAA 直接读 Excel 可以减少一层“导入 CATIA 表格”的手工步骤。CAA 里读 Excel 通常用 OLE 或者第三方库但为了不引入额外依赖我经常先把 Excel 转成 CSV再用标准 C 读。CSV 每一行对应一个规格# tool_specs.csv 示例 # 名称,D1,L1,Z,BETA HSS_D6_60,6,60,4,30 HSS_D8_70,8,70,4,30 HSS_D10_80,10,80,5,35CAA 批量处理时逐行读取后调用 4.1 的SetPartParam和Update再SaveAs到目标目录。这样一晚上能把几百个规格的刀具三维模型全部生成出来比人工在 CATIA 界面里逐个改参数另存为效率差出两个量级。但要注意模板的几何如果遇到参数组合超出约束范围CATIA 求解会失败第 14 行某把刀的螺旋角 45 度可能让扫掠自相交。所以批量代码里每处理完一行要检查文档状态失败时记录行号并继续不要中断整个批次。4.3 Design_Frame 的扩展点加新刀型时只动哪块代码Design_Frame 2.2.1 的扩展性体现在“新刀型”不改变现有模块边界。立铣刀、钻头、铰刀三种刀型模板不同驱动参数不同但“打开模板→改参→更新→另存”的骨架完全一致。所以我的做法是刀型模板文件参数集需要改动的模块立铣刀endmill.CATPartD1、L1、Z、BETA只加模板不改代码钻头drill.CATPartD1、L1、POINT_ANGLE只加模板不改代码铰刀reamer.CATPartD1、L1、Z、EDGE_LENGTH只加模板不改代码只要参数名在新模板里按约定发布DFKernel 里已有的“读 CSV → 设参 → 更新 → 另存”链路完全不用动。这样第五个刀型上线时工作量从“改代码加测试”缩减到“找工艺要一份模板”。这也是 Design_Frame 2.2.1 价值最直观的体现框架的稳定性换来业务扩展的便宜。5. 踩坑与排查Design_Frame 运行时最容易翻车的几个环节写 CAA 的过程里代码编译不过的挫败感远小于运行时莫名其妙崩溃的无力感。CAA 的运行时错误常常是黑匣子没有堆栈、没有日志只能靠经验和排查流程一点点缩小范围。下面五条是我在 Design_Frame 项目里真实遇到过的坑每一条都按“现象→原因→解决”写清楚。5.1 DLL 编译成功但 CATIA 启动时没加载框架现象MkBuild 一切正常DLL 也复制到目录了但启动 CATIA 后菜单里找不到 Design_Frame 的命令也没有任何报错。原因最常见的是放错位置。V5R21 的 CATIA 是 32 位加载目录是intel_a\code\binV5-6R2016 的 64 位版本才用win_b64\code\bin。另一个原因是 DLL 依赖的其他模块没拷贝全DFCommand.dll 可能依赖 DFKernel.dll后者缺失时系统静默跳过加载。解决先用Dependency Walker查看 DLL 的依赖项确认 DFKernel.dll 也在同一个目录。再把 CATIA 以调试模式启动查看 stderr 里是否有 “Unable to load library” 之类的提示。最后确认环境变量DSROOT指向的版本与目标 CATIA 一致这个不一致最容易造成 DLL 加载后找不到接口实现。5.2 启动就报许可证服务器“没有”现象Design_Frame 加载后CATIA 弹出许可证错误提示 DS License Server 没有响应。原因CAA 开发的模块通常会依赖特定的许可证比如 Mechanical Design 或者 Knowledge Advisor。开发机上如果 DSLS 服务没启动或者本机 license 文件指向的服务器不通CATIA 启动到一半就会中止加载。解决Windows 服务管理器里找到DSLSDassault Systemes License Server服务确认状态是“已启动”。如果服务是启动的但仍然连不上检查端口DSLS 默认端口通常不是 2080需要在 CATIA 的许可证管理工具里重新指定。还有一种常见情况重装 CATIA 后 license 配置被清掉重新执行一次 license 配置向导即可。这条坑跟代码没有关系但排查顺序一定要放在代码之前否则白白浪费时间看自己的 C 代码。5.3 Windows 11 更新后 CATIA V5 打不开现象Windows 自动更新后CATIA V5-6R2018 双击启动图标没反应任务管理器里进程闪退。原因Windows 11 对旧版 CATIA 的兼容性并不好尤其是 DirectX 和硬件加速相关的底层库。很多老版本 CATIA 在设计时根本没考虑新系统的窗口合成机制。解决右键 CATIA 启动图标属性 → 兼容性 → 勾选“以 Windows 7 兼容模式运行”并且勾选“禁用全屏优化”。如果还不行把硬件加速拉低一档或者更新显卡驱动。这个问题的通用处理顺序是兼容模式 → 显卡驱动 → 重装 CAA 环境变量。注意重装系统前先备份C:\ProgramData\DassaultSystemes\...下的配置目录否则许可证和用户环境全部要重新配。5.4 MkBuild 报一堆头文件找不到现象换了新电脑后同一份 Design_Frame 源码MkBuild时报cannot open include file CATDataType.h之类的错误。原因CATIA 头文件位置没有进入编译环境的 INCLUDE 路径。RADE 的编译环境不是普通 cmd必须通过“CATIA CAA Command Prompt”启动这个终端里才会注入INCLUDE和LIB环境变量。直接在 Windows 的普通 cmd 里跑 MkBuild几乎必报头上文件错误。解决检查自己是否用的是 RADE 安装后生成的命令提示符快捷方式。如果没有这个快捷方式可以在 CATIA 安装目录下找到CNext\CNEXT.exe -env ...的启动脚本。另外新装 RADE 后第一次编译前先执行一次MkMk -n重新生成依赖文件旧机器的.gen文件带的是旧路径直接拷贝源码过来编译也会翻车。5.5 参数改了模型不更新导出 STP 还是旧形状现象CAA 调用SetRealValue后界面上参数树显示数值已变但三维模型还是原来的尺寸导出 STEP 文件也是旧的。原因没有触发几何更新。CATIA 的参数与几何之间不是实时联动属于“惰性更新”必须显式调用更新接口。解决修改参数后拿到文档对应的CATIUpdate接口调用Update()等待返回值成功后再做 SaveAs。代码顺序必须是“改参数→更新→另存”顺序反了等于白改。刀具这种参数关联较深的模型更新一次可能触发多次几何求解如果更新总失败检查模板里是否存在过约束。我在模板里遇到过“直径 D1 同时被草图约束和公式约束”的情况导致更新一直报错删掉其中一个约束才恢复正常。6. 进阶用法批量出图时用“日志 行号断点”定位是哪把刀翻车Design_Frame 2.2.1 跑批量出图时几百把刀连续处理最怕的事情是“跑到第 87 把时 CATIA 崩溃前面 86 把白干”。这个问题有成熟解法每处理一把刀之前先写一条日志日志里带规格名称和当前参数处理完一把再写一条成功记录。这样崩溃后打开日志能精确知道死在哪一行。我惯用的日志模板很简单2025-01-12 14:23:01 [INFO] start: HSS_D10_80 D110 L180 Z5 2025-01-12 14:23:07 [INFO] done : HSS_D10_80 saved as HSS_D10_80.CATPart如果日志停在start而没有done就是这把刀处理时崩溃。定位到具体规格后把 CSV 里这一行单独拉出来到 CATIA 界面里手工打开模板改参数大概率能复现问题。大多数情况是参数组合超出了模板的可解范围比如齿数 Z5 但模板的圆形阵列只做到 4 个实例或者螺旋角过大导致扫掠截面自相交。处理完崩溃问题后还有一个批量作业的好习惯每把刀的输出文件名里带上参数摘要。比如HSS_D10_80_Z5_BETA30.CATPart这样后面的人看到文件名就知道这把刀的关键参数不必每个文件都打开 CATIA 看属性。配合日志里的参数记录即使文件被误改名也能从日志恢复信息来源。另外批量代码里我会加一个“干跑dry run”模式先把 CSV 读一遍检查参数是否落在模板允许范围内超出范围的行直接跳过并记录原因不进入真正建模阶段。这个检查放在建模之前能避免 CATIA 在批量中途崩溃。干跑模式只读参数表、不创建文档成本极低但能把批量失败率从“偶尔崩一次”降到“基本不崩”。我在维护 Design_Frame 2.2.1 时最深的体会是CAA 项目里“能不能编译跑通”只算入门真正的工程能力在于出错之后能不能用日志、边界检查和版本管理把问题范围快速缩小到某一框架、某一模块、某一参数。希望你在这个框架上少走我当年走过的弯路。本文还有配套的精品资源点击获取

相关推荐

使用 PaddleSpeech 在 CSMSC 数据集上训练 HiFiGAN 神经声码器:从数据准备到端到端合成实战指南
使用 PaddleSpeech 在 CSMSC 数据集上训练 HiFiGAN 神经声码器:从数据准备到端到端合成实战指南

人工智能语音音频NLP媒体生成 【免费下载链接】PaddleSpeech Easy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification System, End-to-End Speech Translation … · 2026/9/25 2:50:00

Databasus 多语言 README 同步机制全解:assets/readme 目录结构与 Agent 工程规范
Databasus 多语言 README 同步机制全解:assets/readme 目录结构与 Agent 工程规范

数据库灾备 【免费下载链接】databasus PostgreSQL backup tool with Point-In-Time-Recovery and restore verification 项目地址: https://gitcode.com/gh_mirrors/po/databasus 点击查看 免费下载 Databasus 是开源的 PostgreSQL 备份工具(同时支持 … · 2026/9/25 2:50:00

赛玛科技口碑怎么样
赛玛科技口碑怎么样

佛山市东锐赛玛科技有限公司简称赛玛科技,是立足粤港澳大湾区的国际化食品智能包装设备品牌,专注智能包装设备的技术研发与生产制造,为食品深加工及多领域客户提供全品类智能包装设备与定制化解决方案。 核心实力拆解 技术研发实力赛玛科技的… · 2026/9/25 2:50:00

Ginkgo 表驱动 Specs 与动态生成 Specs 完整指南:DescribeTable、Entry 与树构建期的正确姿势
Ginkgo 表驱动 Specs 与动态生成 Specs 完整指南:DescribeTable、Entry 与树构建期的正确姿势

测试CLI 【免费下载链接】ginkgo A Modern Testing Framework for Go 项目地址: https://gitcode.com/gh_mirrors/gi/ginkgo 点击查看 免费下载 Ginkgo 提供了完整的表驱动测试 DSL(DescribeTable/Entry),以及通过循环和数据动态… · 2026/9/25 3:27:26

cudf 列重排 API 深度指南:libcudf 的 Partitioning 与 Stream Compaction 双核心
cudf 列重排 API 深度指南:libcudf 的 Partitioning 与 Stream Compaction 双核心

数据分析数据工程机器学习 【免费下载链接】cudf cuDF - GPU DataFrame Library 项目地址: https://gitcode.com/gh_mirrors/cu/cudf 点击查看 免费下载 本篇技术文章围绕 libcudf 文档体系中的 “Column Reorder”(列重排)API 分组展开&am… · 2026/9/25 3:27:26

内容生成受限声明
内容生成受限声明

抱歉,我无法生成与该项请求相关的内容。 · 2026/9/25 3:27:26

影视APP双端源码程序解析:从架构部署到播放器与鉴权实战
影视APP双端源码程序解析:从架构部署到播放器与鉴权实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 3:27:26

form generator 表单设计器接入 TaoToken:Element UI 代码生成器的 config.toml 配置骨架
form generator 表单设计器接入 TaoToken:Element UI 代码生成器的 config.toml 配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 3:27:26

ng-zorro-antd 头像响应式尺寸(Responsive Size)完全指南:断点体系、对象写法与底层实现
ng-zorro-antd 头像响应式尺寸(Responsive Size)完全指南:断点体系、对象写法与底层实现

UI组件前端 【免费下载链接】ng-zorro-antd Angular UI Component Library based on Ant Design 项目地址: https://gitcode.com/gh_mirrors/ng/ng-zorro-antd 点击查看 免费下载 本指南以 ng-zorro-antd 组件库中 Avatar(头像)的响应式尺寸… · 2026/9/25 3:27:20

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码