SolidWorks二次开发:用.NET API实现参数化建模与装配体联动

简介:本资源是一套基于SolidWorks 2000–2003时代VC6开发环境的二次开发实践项目,面向机械设计自动化初学者与CAD软件集成开发者,聚焦参数化建模这一核心工程需求。项目通过COM接口调用SolidWorks API,实现零件尺寸驱动、特征自动生成与界面交互式建模,涵盖向导对话框(Dialog*.cpp/h)、属性页(Prop*.cpp/h)、注册脚本(.rgs)、类型库(.tlb/.idl)及调试支持文件(*.pdb/.sbr/.bsc),完整呈现了典型的ATL/COM插件开发流程。压缩包共95个文件,含13个C++源码、16个头文件、9个符号表与浏览文件、6个类型库头文件,以及DLL、LIB、RES等编译产物,总大小4.33MB,结构清晰,便于逆向学习与模块复用。已有623人学习下载,适合希望掌握传统SolidWorks插件开发范式、理解参数化建模底层实现逻辑的工程师与高年级本科生。

1. SolidWorks二次开发:不是写插件,而是把设计逻辑“焊”进建模流程里

你有没有遇到过这种场景:客户改了三次尺寸,你手动改了三次模型,每次重建特征树都像在拆雷——改一个孔,关联的阵列、镜像、工程图标注全乱套;或者批量出十几种规格的法兰盘,每换一版就得重复点开草图、改尺寸、更新特征、导出STEP,中间错一步,整套BOM就对不上。这不是效率问题,是建模逻辑和业务逻辑彻底脱钩。SolidWorks二次开发干的不是“做个按钮点一下”,而是用C#或VB.NET把参数定义、约束关系、特征生成规则直接嵌进SolidWorks内核的执行链路里。它让模型从“静态几何体”变成“可编程对象”:改一个变量,整个装配体自动重算干涉、更新材料清单、同步刷新渲染视图。适合谁?不是给零基础新手练手的玩具,而是给有3年以上SolidWorks实操经验、常被重复建模卡住脖子的机械结构工程师、非标设备设计组长、以及需要把设计规范固化成工具的PLM实施人员。它不替代建模能力,但能让你的设计能力乘以十倍。


2. 为什么选.NET API而不是宏录制:从“录屏回放”到“逻辑编译”的本质跨越

2.1 宏录制的幻觉:三分钟能录完,三天后不敢动

SolidWorks自带的宏录制功能,表面看是“点哪录哪”,生成VBA代码。但实际项目中,它很快暴露致命缺陷。比如你录制一个拉伸切除操作,宏会记录下当时草图的精确坐标(如Point2 = (0.123456, 0.789012)),而真实设计中草图原点可能随参考面变动,下次运行时坐标偏移0.001mm,特征就创建失败。更糟的是,宏无法处理条件分支——“如果板厚≤5mm,用沉头螺钉;否则用六角螺栓”,这种业务规则宏根本不会生成判断语句,只会硬编码最后一次点击的螺钉类型。某导师带过的模拟项目X中,团队曾用宏批量生成机架立柱,结果因客户临时增加“顶部加装吊耳”需求,所有宏脚本全部失效,返工耗时比重写API还长。这不是工具不行,是定位错了:宏是操作录像,API才是建模逻辑的编程接口。

2.2 .NET API的核心价值:对象化建模与事件驱动

SolidWorks .NET API(通过SldWorks、ModelDoc2、Feature等类)把建模过程抽象为可操控的对象。关键不在“能做什么”,而在“怎么组织逻辑”。例如创建一个参数化轴承座:

// 获取当前活动文档 ModelDoc2 model = (ModelDoc2)swApp.ActiveDoc; // 创建新零件 model = (ModelDoc2)swApp.NewDocument("C:\\Program Files\\SOLIDWORKS Corp\\SOLIDWORKS\\lang\\chinese-simplified\\Part.prtdot", (int)swDocumentTypes_e.swDocPART, 0, 0); // 定义参数(这才是核心!) double outerDiameter = 120.0; double innerDiameter = 60.0; double thickness = 25.0; // 调用API创建基准面(不是硬编码坐标,而是引用现有面+偏移) RefPlane refPlane = model.CreateReferencePlane(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0); // 创建草图并添加几何关系(注意:用AddToDB避免图形闪烁) SketchManager sketchMgr = model.SketchManager; sketchMgr.CreateCircle(0, 0, 0, outerDiameter/2); sketchMgr.CreateCircle(0, 0, 0, innerDiameter/2); // 添加同心约束(这才是设计意图!) model.Extension.SelectByID2("Arc1@Sketch1", "SKETCHSEGMENT", 0, 0, 0, true, 0, null, 0); model.Extension.SelectByID2("Arc2@Sketch1", "SKETCHSEGMENT", 0, 0, 0, true, 0, null, 0); model.FeatureManager.CreateFeature(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); // 拉伸

这段代码的价值不在语法,而在于:

  • outerDiameter等变量可来自Excel配置表、数据库查询或UI输入框;
  • CreateReferencePlane不依赖绝对坐标,而是基于现有几何体的拓扑关系;
  • SelectByID2配合CreateFeature实现特征的程序化生成,而非坐标硬编码;
  • 后续可轻松扩展:加入if (thickness > 20) { AddRib(...) }逻辑,这是宏永远做不到的。

提示:不要试图用宏生成代码再改成API——宏的坐标体系和API的对象体系完全不兼容。正确路径是:先用宏理解操作步骤,再查API Help文档(swModel.Extension.CreateCircle2vsswModel.SketchManager.CreateCircle),用对象思维重写。


3. 参数化建模落地四步法:从Excel表格到可交互装配体

3.1 第一步:定义参数表结构(比写代码更重要)

参数化建模失败,80%源于参数设计混乱。我们不用“所有尺寸都做成变量”的暴力方案,而是按设计意图分层。某跨平台系统中,法兰盘参数表采用三级结构:

参数层级示例字段数据类型来源说明是否可编辑
基础参数法兰外径、螺栓孔中心圆直径、厚度double客户技术协议强制项✅
派生参数螺栓孔数量、单个螺栓孔直径、倒角尺寸int / double由基础参数计算得出(如:孔数=ROUND(π×中心圆直径/80,0))❌(只读)
配置参数表面处理(镀锌/喷塑)、材质(Q235/304SS)、是否带定位销string业务选型,影响BOM和工艺卡✅

关键点:派生参数必须用公式计算,禁止人工填写。这保证了“改一个基础参数,所有关联项自动更新”。我们在ParameterManager类中封装计算逻辑:

public class FlangeParameters { public double OuterDiameter { get; set; } public double BoltCircleDiameter { get; set; } public double Thickness { get; set; } // 派生属性:自动计算,不可set public int BoltHoleCount => (int)Math.Round(Math.PI * BoltCircleDiameter / 80.0, 0); public double BoltHoleDiameter => Thickness > 20 ? 12.0 : 8.0; public double ChamferSize => OuterDiameter > 100 ? 2.0 : 1.5; }

3.2 第二步:建立参数与模型特征的双向绑定

很多教程只讲“往模型里写参数”,却忽略“从模型读参数”。真正的参数化必须双向:用户改Excel,模型更新;用户在SolidWorks里拖动尺寸,Excel同步刷新。我们用CustomPropertyManager实现:

// 写入参数(更新模型) CustomPropertyManager cpm = model.Extension.CustomPropertyManager[""]; cpm.Add3("OUTER_DIAMETER", (int)swCustomInfoType_e.swCustomInfoDouble, outerDiameter.ToString(), (int)swCustomInfoSaveOpt_e.swCustomInfoSaveInExternalFile); // 读取参数(同步到UI) string valueStr; bool resolved; cpm.Get4("OUTER_DIAMETER", out valueStr, out resolved); double currentDiameter = double.Parse(valueStr);

注意:swCustomInfoSaveInExternalFile选项至关重要。它让参数存储在外部文件(如config.xml),而非模型内部。这样即使模型损坏,参数配置仍可恢复;多人协作时,只需共享配置文件,无需传整个SLDPRT。

3.3 第三步:用FeatureManager控制特征生成顺序

参数化不是堆砌特征,而是构建特征依赖链。比如轴承座必须先有基准面,再画草图,再拉伸,最后打孔。API中用IFeature对象管理:

// 创建基准面(作为后续所有特征的父参照) Feature basePlane = model.FeatureManager.CreateReferencePlane( (int)swRefPlaneConstraint_e.swRefPlaneConstraint_Distance, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); // 创建拉伸特征,显式指定父特征 Feature extrude = model.FeatureManager.FeatureExtrusion3( true, false, false, 0, 0, thickness, thickness, false, false, false, false, 0, 0, 0, 0, 0, 0, false, false, false, false, false, false); // 创建孔特征,指定其草图依附于拉伸面 SketchManager sketchMgr = model.SketchManager; sketchMgr.CreateCircle(0, 0, 0, 5.0); Feature hole = model.FeatureManager.FeatureCut3( true, false, false, 0, 0, 10.0, 10.0, false, false, false, false, 0, 0, 0, 0, 0, 0, false, false, false, false, false, false);

关键技巧:用Feature.GetParents()和Feature.GetChildren()遍历特征树,确保删除旧特征时,其子特征(如孔)自动被移除,避免残留“幽灵特征”。

3.4 第四步:装配体级参数联动(突破单零件限制)

参数化不能止步于零件。某图像处理Demo中,需根据相机传感器尺寸自动调整镜头筒长度和光圈位置。我们用AssemblyDoc接口实现跨零件驱动:

AssemblyDoc asm = (AssemblyDoc)model; // 遍历所有零部件 object[] components = asm.GetComponents(false); foreach (Component2 comp in components) { ModelDoc2 compModel = comp.GetModelDoc2(); if (compModel != null && compModel.GetType() == (int)swDocumentTypes_e.swDocPART) { // 修改子零件的自定义属性 CustomPropertyManager subCpm = compModel.Extension.CustomPropertyManager[""]; subCpm.Set("SENSOR_WIDTH", sensorWidth.ToString()); // 强制子零件重建 compModel.EditRebuild3(); } } // 最后重建整个装配体 asm.ResolveAllLightWeightComponents(); asm.EditRebuild3();

这实现了“改一个总控参数,整套光学系统自动适配”,比手动编辑每个零件快10倍以上。


4. 避坑:那些让调试时间翻倍的“玄学”错误与血泪解法

4.1 现象:swApp.ActiveDoc返回null,但SolidWorks明明开着

原因:.NET程序未正确获取SolidWorks主进程句柄。常见于多实例环境(如同时打开多个SolidWorks窗口)或UAC权限隔离。API Help明确要求:必须用GetActiveObject而非new SldWorks()创建实例。

解决:

// ❌ 错误:创建新实例,与当前界面无关 SldWorks swApp = new SldWorks(); // ✅ 正确:绑定到已运行的SolidWorks try { swApp = (SldWorks)Marshal.GetActiveObject("SldWorks.Application"); } catch (COMException ex) { MessageBox.Show("请先启动SolidWorks!"); return; }

4.2 现象:特征创建成功,但模型树里看不到,或显示为“悬空”

原因:未激活草图或未退出草图编辑状态。API中SketchManager.CreateCircle等方法必须在草图激活状态下执行,且创建后需调用SketchManager.EndSketch()。

解决:

// 激活草图 model.Extension.SelectByID2("Sketch1", "SKETCH", 0, 0, 0, false, 0, null, 0); model.SketchManager.ActiveSketch = model.GetSketches()[0]; // 绘制完成后必须结束草图 model.SketchManager.EndSketch(); // 关键!否则特征不生效 // 或更稳妥:用BeginEdit/EndEdit model.EditSketch(); // ... 绘制操作 model.EditRebuild3(); // 替代EndSketch,更可靠

4.3 现象:修改参数后模型不更新,或更新后尺寸错乱

原因:参数值未触发模型重建。SolidWorks的参数变更需显式调用IModelDoc2::EditRebuild3(),且必须在参数写入后立即执行。若中间插入了UI刷新、日志打印等操作,重建可能被延迟。

解决:

// 批量修改参数时,先关闭重建,最后统一触发 model.Extension.SetUserPreferenceToggle((int)swUserPreferenceToggle_e.swExtDisableRebuildOnValueChange, 1); // 修改所有参数... cpm.Set("OUTER_DIAMETER", newDiameter.ToString()); cpm.Set("THICKNESS", newThickness.ToString()); // 一次性重建 model.Extension.SetUserPreferenceToggle((int)swUserPreferenceToggle_e.swExtDisableRebuildOnValueChange, 0); model.EditRebuild3(); // 必须在此处调用

4.4 现象:插件安装后SolidWorks崩溃,事件日志报“AccessViolationException”

原因:COM对象未正确释放。.NET垃圾回收器不管理COM引用,SldWorks、ModelDoc2等对象使用后必须显式调用Marshal.ReleaseComObject(),否则内存泄漏导致崩溃。

解决:

// 使用using模式不适用COM对象!必须手动释放 try { SldWorks swApp = (SldWorks)Marshal.GetActiveObject("SldWorks.Application"); ModelDoc2 model = swApp.ActiveDoc; // ... 执行操作 } finally { // 严格按创建逆序释放 if (model != null) Marshal.ReleaseComObject(model); if (swApp != null) Marshal.ReleaseComObject(swApp); GC.Collect(); // 强制GC GC.WaitForPendingFinalizers(); }

注意:释放顺序必须与创建顺序相反,且每个COM对象只能Release一次。建议封装ComObjectWrapper<T>类,用IDisposable模式管理。


5. 进阶技巧:用配置表驱动多版本模型生成与BOM自动校验

5.1 Excel配置表作为“设计合同”的技术实现

参数化建模的终极目标,是让Excel配置表成为设计交付物本身。我们不再提供SLDPRT文件,而是交付一个.xlsx和一个.dll插件。客户只需修改Excel中的基础参数,双击运行插件,即可生成全套模型。配置表结构如下(含公式列):

序号零件号名称外径(mm)厚度(mm)螺栓孔数螺栓孔径(mm)材质表面处理公式验证
1FLG-001标准法兰12025=ROUND(PI()*100/80,0)=IF(C2>20,12,8)Q235镀锌=IF(AND(D2>0,E2>0), "✓", "参数错误")
2FLG-002加厚法兰15035=ROUND(PI()*120/80,0)=IF(C2>20,12,8)304SS喷塑=IF(AND(D2>0,E2>0), "✓", "参数错误")

插件读取时,跳过公式列,只取值列(Range.Value2),并校验“公式验证”列是否为"✓"。任何一项不通过,弹窗提示具体行号和错误原因,杜绝“参数填错但模型生成成功”的灾难。

5.2 BOM自动校验:用API反向验证设计合规性

生成模型后,必须校验BOM是否符合工艺规范。例如:某非标设备要求“所有紧固件必须为8.8级及以上”。我们用API遍历所有螺栓特征:

public bool ValidateBomCompliance(ModelDoc2 model) { var bomErrors = new List<string>(); // 获取所有螺栓特征(通过特征名称匹配) object[] features = model.FeatureManager.GetFeatures(true); foreach (Feature feat in features) { if (feat.Name.Contains("Bolt") || feat.Name.Contains("螺栓")) { // 读取螺栓自定义属性 CustomPropertyManager cpm = feat.GetModelDoc2().Extension.CustomPropertyManager[""]; string grade = cpm.Get("GRADE"); if (!string.IsNullOrEmpty(grade) && (grade.StartsWith("4.6") || grade.StartsWith("4.8"))) { bomErrors.Add($"螺栓{feat.Name}等级{grade}低于8.8级要求"); } } } if (bomErrors.Count > 0) { MessageBox.Show("BOM校验失败:\n" + string.Join("\n", bomErrors)); return false; } return true; }

此功能在生成模型后自动触发,不合格则阻止STEP导出,把问题拦截在设计阶段。

5.3 版本管理:用Git管理配置表,而非模型文件

模型文件(SLDPRT)是二进制,Git无法diff。但Excel配置表是文本(.xlsx解压后为XML),可完美纳入Git。我们在项目根目录建/config/文件夹,存放flange_config.xlsx。每次设计变更,只提交Excel的diff:

# 查看参数变更 git diff HEAD~1 config/flange_config.xlsx # 输出类似: # -<c r="C2" t="n"><v>25</v></c> # 厚度从25改为30 # +<c r="C2" t="n"><v>30</v></c>

这实现了设计变更的可追溯、可回滚、可审计。某公司实施后,设计变更评审时间从平均2小时缩短至15分钟——因为所有人直接看到“哪一行参数变了、为什么变”。

从那以后我每次交付参数化项目,都强制走一遍“Excel配置表→API生成→BOM校验→Git提交”闭环。不是为了炫技,而是让设计意图真正落地为可执行、可验证、可传承的数字资产。希望帮到你。

本文还有配套的精品资源,点击获取

相关新闻

ObjectARX中文字符集配置:zh-chs语言包安装与避坑指南

ObjectARX中文字符集配置:zh-chs语言包安装与避坑指南

简介&#xff1a;针对AutoCAD 2010二次开发中ObjectARX向导工具条图标在VS2008下无法显示的问题&#xff0c;这份zh-chs中文语言包提供了轻量而直接的修复方案。它面向需要在Visual Studio 2008中正常使用ObjectARX向导模板的开发者&#xff0c;无论是初次搭建开发环境&#xf…

2026/10/21 6:22:33 阅读更多 →
litellm统一多模型调用:从碎片化适配到统一网关的工程实践

litellm统一多模型调用:从碎片化适配到统一网关的工程实践

1. 从一个真实困境说起&#xff1a;多模型调用的碎片化之痛如果你正在做AI应用开发&#xff0c;大概率遇到过这样的场景&#xff1a;项目初期用某家的大模型API跑通了原型&#xff0c;效果不错&#xff0c;上线后想加一个备用模型做降级容错&#xff0c;结果发现两家的接口参数…

2026/10/21 6:21:33 阅读更多 →
用Python视觉技术实现原图字体的自动匹配与重构

用Python视觉技术实现原图字体的自动匹配与重构

做设计的朋友应该都遇到过这种尴尬&#xff1a;拿到一张参考图&#xff0c;版式、配色、构图都能抄个八九不离十&#xff0c;唯独上面的文字&#xff0c;怎么看怎么别扭。手动找字体吧&#xff0c;十几万字体库翻到眼花&#xff1b;用某些在线识别工具&#xff0c;出来的结果要…

2026/10/21 6:21:33 阅读更多 →

最新新闻

《数字设计-原理与实践》PDF实操指南:从可运行Verilog到FPGA时序约束落地

《数字设计-原理与实践》PDF实操指南:从可运行Verilog到FPGA时序约束落地

简介&#xff1a;《数字设计-原理与实践》是一本面向计算机科学与电子工程专业初学者及入门工程师的经典教材&#xff0c;系统讲授数字电路设计的核心原理与工程实践方法。资源为单文件PDF格式&#xff0c;共1个4.52MB高清电子书&#xff0c;内容覆盖组合逻辑、时序逻辑、有限状…

2026/10/21 7:10:51 阅读更多 →
litellm:统一OpenAI接口,轻松调用多模型服务

litellm:统一OpenAI接口,轻松调用多模型服务

1. 从一个“模型调用地狱”说起&#xff1a;litellm 到底解决了什么问题做过大模型应用开发的人&#xff0c;大概率都经历过这样一个阶段&#xff1a;项目最开始只接了一家模型服务商的接口&#xff0c;代码写得干干净净&#xff0c;一个client.chat.completions.create()走天下…

2026/10/21 7:10:51 阅读更多 →
HTTP协议详解:图解请求响应模型与Python代码实践

HTTP协议详解:图解请求响应模型与Python代码实践

HTTP协议&#xff0c;这个几乎每天都在打交道的东西&#xff0c;真正能把“请求-响应”这条链路讲清楚的内容其实不多。标题里提到“图解”和“代码解析”&#xff0c;正好戳中很多人的痛点&#xff1a;看了一堆概念&#xff0c;打开浏览器按 F12 却不知道每个字段在干什么&…

2026/10/21 7:10:51 阅读更多 →
局域网文件传输工具Davor:从设备发现到WebSocket传输的完整实践

局域网文件传输工具Davor:从设备发现到WebSocket传输的完整实践

“Davor”这名字&#xff0c;说来挺随意。我有个朋友&#xff0c;做嵌入式出身&#xff0c;帮我调过几次网络问题&#xff0c;每次都是远程开着终端敲几行命令就完事&#xff0c;省了我大把折腾时间。有次喝酒我说&#xff0c;以后我做个小工具就起你名字。后来真做出来了&…

2026/10/21 7:10:51 阅读更多 →
风电箱变智能监测系统:从传感器选型到部署实践

风电箱变智能监测系统:从传感器选型到部署实践

风电场里最容易被忽视却又最要命的设备&#xff0c;往往就是箱变。机组发了多少电、能不能稳定送出去&#xff0c;全看这台密封铁柜子的脸色。我在现场见过太多次这样的场景&#xff1a;运维人员打着手电&#xff0c;凌晨三点爬上箱变底座&#xff0c;耳朵贴着柜体听内部有没有…

2026/10/21 7:10:51 阅读更多 →
华为云Hadoop伪分布式安装实战指南

华为云Hadoop伪分布式安装实战指南

1. 项目概述&#xff1a;为什么从伪分布式开始学Hadoop&#xff0c;而不是直接上集群&#xff1f;“华为云hadoop伪分布式安装学习笔记&#xff08;一&#xff09;”这个标题里藏着一个非常务实的起点——它没写“高可用集群部署”&#xff0c;也没提“PB级数据处理实战”&…

2026/10/21 7:09:51 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事&#xff1a;AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里&#xff0c;按宣传口径&#xff0c;本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”&#xff0c;而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起&#xff1a;用户到底在追求什么“封号重开”这四个字&#xff0c;放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流&#xff0c;背后是大量的时间和精力成本。正常情况下&#xff0c;没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”&#xff0c;而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时&#xff0c;就意识到&#xff1a;单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/21 4:27:17 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/20 9:50:45 阅读更多 →