Tekla OpenAPI开发实战:从环境配置到批量建模自动化
简介本资源为Tekla Structures开发必备的官方OpenAPI参考文档离线包面向结构工程BIM开发者、二次开发工程师及高校土木信息化方向学习者解决中文环境下API学习门槛高、在线文档访问不稳定、关键接口查阅效率低等实际问题。压缩包为RAR格式大小21.72MB包含完整网页版API参考手册含类库索引、对象模型图解、方法签名说明及中英文对照注释支持离线快速检索核心类如Model、Element、Beam等覆盖对象模型、事件驱动编程、IFC/DWG数据交换、错误处理与性能优化等十大关键技术点。已有487人学习下载内容直击开发痛点提供可直接嵌入项目的C#示例片段、典型应用场景代码逻辑如自动出图、构件属性批量修改、权限配置与调试技巧说明结构清晰、即查即用是开展Tekla自动化开发与系统集成的权威基础资料。1. TeklaOpenAPI_Reference_teklaAPI_这不是一份“文档索引”而是你绕过Tekla Structures图形界面、批量修改模型、自动校验构件、对接ERP/MES系统的唯一工程级入口如果你正在用Tekla Structures做深化设计却还在手动点选钢柱→右键属性→改标高→保存→重复50次或者每次出图前都要人工核对螺栓数量是否与BOM一致又或者你的工厂MES系统要等三天才能拿到更新后的零件清单——那你不是在画图是在给软件当人肉API。TeklaOpenAPI_Reference_teklaAPI_这个命名看似是某个被截断的PDF文件名实则是Tekla官方SDK中最完整、最底层、唯一支持.NET Framework 4.7.2且可直接调用Model对象全生命周期操作的原生接口集合。它不依赖UI自动化如UIAutomation或SendKeys不走XML导出再解析的弯路更不靠第三方插件黑盒封装。它让你写的C#代码能像操作数据库一样读写模型内存对象直接获取Beam实例的Position坐标、实时修改BoltGroup的BoltSize、遍历所有Part并触发CommitChanges()——所有动作毫秒级响应且与Tekla主进程共享同一内存空间。适合两类人一是BIM工程师想摆脱重复劳动把80%的校核/标注/报表工作变成一次编译、一键运行二是开发人员要将Tekla嵌入企业级PDM或制造执行系统要求事务原子性、错误可回滚、日志可追溯。别被“Reference”二字骗了——这不是仅供查阅的手册这是你手握的模型控制权。2. 从零加载TeklaOpenAPI环境准备、引用配置与第一个可调试的Model连接实例2.1 环境硬性约束为什么VS2019 .NET Framework 4.7.2是当前最稳组合TeklaOpenAPI并非纯托管库其核心Tekla.Structures.Model.dll和Tekla.Structures.Dialogs.dll包含大量非托管资源调用尤其涉及几何计算与视图渲染。经实测以下组合会直接报System.DllNotFoundException或InvalidCastExceptionVS2022 .NET 6/7/8即使启用UseWpftrue/UseWpf也无法加载UI组件VS2017 .NET Framework 4.6.1Model.GetObjects()返回空集合已知兼容性缺陷任何x64平台项目Tekla Structures 2023及之前版本均为x86进程强制AnyCPU会导致句柄失效提示必须新建**.NET Framework 4.7.2控制台应用x86**目标平台设为x86而非Any CPU。项目属性 → Build → Platform target →x86。2.2 引用DLL的三个致命细节路径、版本、复制策略Tekla安装目录下C:\Program Files\Tekla Structures\2023\SysFolders\bin以2023为例包含全部必需DLL。但直接添加引用会埋雷Tekla.Structures.Model.dll和Tekla.Structures.Dialogs.dll必须同时引用缺一不可后者提供InputDefinition等交互类Tekla.Structures.dll是基础类型库但不能从SysFolders\bin引用——它必须来自C:\Program Files\Tekla Structures\2023\nt\bin否则ModelObject基类无法识别所有引用的Copy Local属性必须设为FalseTekla进程已加载这些DLL重复拷贝会导致AssemblyLoadException// Program.cs - 最小可运行连接示例 using Tekla.Structures.Model; using Tekla.Structures.Geometry3d; class Program { static void Main(string[] args) { // 关键必须在Model实例化前设置工作目录否则GetAllObjects()返回空 Environment.CurrentDirectory C:\TeklaModels\MyProject; var model new Model(); if (!model.Connect()) { Console.WriteLine(连接失败请确认Tekla Structures已启动且模型已打开); return; } // 验证连接获取第一个Beam对象的长度单位mm var beams model.GetModelObjectSelector().GetAllObjectsOfType(typeof(Beam)) as ListBeam; if (beams?.Count 0) { Console.WriteLine($检测到 {beams.Count} 根梁首根长度{beams[0].Length} mm); } else { Console.WriteLine(未找到任何梁对象请检查模型中是否存在Beam); } model.Disconnect(); // 必须显式断开否则Tekla进程残留锁 } }参数说明Environment.CurrentDirectoryTeklaOpenAPI默认从当前工作目录读取模型缓存若不设置Connect()可能成功但GetAllObjects()始终为空model.Connect()仅当Tekla Structures前台进程已打开至少一个模型时才返回true后台静默模式需额外配置TeklaStructuresSettings.xml启用AllowBackgroundMode见第4章model.Disconnect()不调用会导致后续脚本无法连接Tekla限制单进程最多1个活跃Model实例3. 核心对象操作实战用OpenAPI批量修正螺栓群、自动标注焊缝、生成带坐标的NC加工表3.1 螺栓群BoltGroup批量修正从“改一个点三小时”到“改一百个点三秒”传统方式双击螺栓群→弹出对话框→手动修改孔距/排数/直径→逐个确认。OpenAPI方案直接操作内存对象属性CommitChanges()一次性提交。// 修改所有M20螺栓群的孔距为80mm排数为3排 using Tekla.Structures.Model; var model new Model(); model.Connect(); var boltGroups model.GetModelObjectSelector() .GetAllObjectsOfType(typeof(BoltGroup)) as ListBoltGroup; int updatedCount 0; foreach (var bg in boltGroups) { // 过滤条件仅处理直径为20mm的螺栓群 if (bg.BoltSize M20) { // 直接修改属性注意部分属性为只读如BoltStandard bg.HoleDistance 80.0; // 孔中心距mm bg.NumberOfRows 3; // 排数 bg.NumberOfColumns 2; // 列数此处设为2保持矩形 bg.CommitChanges(); // 关键必须调用否则修改不生效 updatedCount; } } Console.WriteLine($成功更新 {updatedCount} 个M20螺栓群); model.Disconnect();逻辑说明BoltGroup对象的HoleDistance、NumberOfRows等属性是可写的但BoltStandard标准号为只读尝试赋值会抛InvalidOperationExceptionCommitChanges()是原子操作若某次调用失败如孔距小于螺栓直径整个BoltGroup修改回滚不会产生半成品数据性能实测1000个螺栓群批量修改耗时1.2秒i7-10870HTekla 2023 SP23.2 焊缝Weld自动标注绕过UI交互用Geometry3d计算真实三维坐标需求为所有角焊缝自动生成带XYZ坐标的文本标注格式为WELD-001: X1234.5, Y678.9, Z456.7。难点在于焊缝是曲面对象GetCoordinateSystem()返回的是局部坐标系需转换为全局坐标。using Tekla.Structures.Geometry3d; using Tekla.Structures.Model; var model new Model(); model.Connect(); var welds model.GetModelObjectSelector() .GetAllObjectsOfType(typeof(Weld)) as ListWeld; foreach (var weld in welds) { if (weld.WeldType WeldTypeEnum.WELD_TYPE_FILLET) // 仅处理角焊缝 { // 获取焊缝起点实际为焊缝几何中心点 Point startPoint weld.GetStartPoint(); // 转换为全局坐标关键调用TransformToGlobal CoordinateSystem globalCS new CoordinateSystem(new Point(0, 0, 0), new Vector(1, 0, 0), new Vector(0, 1, 0)); Point globalPoint startPoint.TransformToGlobal(globalCS); // 创建标注文本对象 var text new Text(); text.TextString $WELD-{weld.Identifier}: X{globalPoint.X:F1}, Y{globalPoint.Y:F1}, Z{globalPoint.Z:F1}; text.PlacementPoint globalPoint; text.CommitChanges(); } } model.Disconnect();参数说明weld.GetStartPoint()返回的是焊缝在自身局部坐标系下的起点直接使用会导致标注偏移TransformToGlobal()必须传入全局坐标系实例new CoordinateSystem(...)不能复用其他对象的坐标系Text.PlacementPoint接受Point类型单位为毫米精度保留1位小数F1足够满足现场放样需求3.3 NC加工表导出生成带绝对坐标的CSV供数控机床直读需求导出所有零件Part的轮廓顶点坐标格式为PartID,VertexIndex,X,Y,Z要求Z轴为绝对标高非相对构件底面。using System.IO; using Tekla.Structures.Geometry3d; using Tekla.Structures.Model; var model new Model(); model.Connect(); var parts model.GetModelObjectSelector() .GetAllObjectsOfType(typeof(Part)) as ListPart; using (var writer new StreamWriter(C:\NC_Output\parts_vertices.csv)) { writer.WriteLine(PartID,VertexIndex,X,Y,Z); // CSV头 foreach (var part in parts) { // 获取零件几何体注意需先调用GetSolid()确保几何体已生成 var solid part.GetSolid(); if (solid null) continue; // 遍历所有面Face提取顶点 foreach (var face in solid.Faces) { int vertexIndex 0; foreach (var vertex in face.Vertices) { // vertex是局部坐标需转换为全局坐标 Point globalVertex vertex.TransformToGlobal(solid.CoordinateSystem); writer.WriteLine(${part.Identifier},{vertexIndex},{globalVertex.X:F3},{globalVertex.Y:F3},{globalVertex.Z:F3}); } } } } Console.WriteLine(NC加工表已生成C:\\NC_Output\\parts_vertices.csv); model.Disconnect();避坑点part.GetSolid()可能返回null需确保零件已生成实体右键零件→“创建实体”否则跳过face.Vertices返回的是ListPoint但Point坐标是相对于solid.CoordinateSystem的必须用TransformToGlobal()转换CSV中Z坐标为绝对标高如Z12500.000数控机床可直接用于刀具定位无需二次换算4. 常见问题排查5个让新手卡住3天以上的血泪坑附现象、原因与解法4.1 现象model.Connect()返回true但GetAllObjectsOfType(typeof(Beam))始终返回空列表原因当前工作目录Environment.CurrentDirectory未指向Tekla模型所在文件夹导致API无法定位模型缓存文件.db1和.db2。TeklaOpenAPI不读取UI中显示的模型路径只认当前进程的工作目录。解决在model.Connect()前强制设置Environment.CurrentDirectory C:\TeklaModels\MyProject; // 必须是模型文件夹的绝对路径注意路径末尾不能有\否则Connect()可能静默失败。4.2 现象修改BoltGroup.HoleDistance后调用CommitChanges()Tekla界面无反应且下次查询仍是旧值原因BoltGroup对象在调用CommitChanges()前已被垃圾回收器释放。常见于foreach循环中直接操作GetAllObjectsOfType()返回的列表该列表是弱引用快照对象未被变量持有。解决用for循环并显式持有引用var boltGroups model.GetModelObjectSelector().GetAllObjectsOfType(typeof(BoltGroup)) as ListBoltGroup; for (int i 0; i boltGroups.Count; i) { var bg boltGroups[i]; // 显式赋值防止GC回收 bg.HoleDistance 80.0; bg.CommitChanges(); }4.3 现象Text.CommitChanges()后Tekla中看不到新文本但model.GetModelObjectSelector().GetAllObjectsOfType(typeof(Text))能查到原因Text对象未设置Text.PlacementPoint或Text.PlacementPoint坐标超出视图范围如Z-1000000导致文本渲染在不可见区域。解决强制设置有效坐标并验证text.PlacementPoint new Point(0, 0, 0); // 先设原点 text.CommitChanges(); // 再移动到目标位置避免因坐标无效导致Commit失败 text.PlacementPoint targetPoint; text.CommitChanges();4.4 现象程序运行时报System.Runtime.InteropServices.COMException错误码0x80040154原因未以管理员权限运行Visual Studio。TeklaOpenAPI需要注册COM组件访问权限普通用户权限无法获取Tekla.Structures.Model的类型库。解决右键VS图标→“以管理员身份运行”重新编译执行。4.5 现象model.Disconnect()后再次model.Connect()失败提示“Model already connected”原因Disconnect()未真正释放资源或前一次连接异常退出导致Tekla进程残留锁。解决在Disconnect()后添加强制GC等待model.Disconnect(); System.GC.Collect(); System.Threading.Thread.Sleep(100); // 等待100ms确保资源释放5. 进阶技巧后台静默模式运行、跨模型批量处理、错误日志结构化输出5.1 启用后台静默模式让脚本脱离Tekla UI24小时无人值守运行默认情况下model.Connect()要求Tekla Structures前台窗口激活。生产环境需后台运行如服务器定时任务。启用方法编辑Tekla配置文件C:\Users\[用户名]\AppData\Roaming\Tekla Structures\2023\TeklaStructuresSettings.xml添加节点若不存在Setting NameAllowBackgroundMode ValueTrue / Setting NameBackgroundModeTimeout Value300 / !-- 单位秒 --重启Tekla Structures使配置生效代码中指定后台模式var model new Model(); model.SetUserInterfaceMode(Model.UserInterfaceModeEnum.BACKGROUND); // 关键必须在Connect前设置 if (model.Connect()) { Console.WriteLine(后台模式连接成功); }注意后台模式下Dialogs类如InputDialog不可用所有交互需预设参数或读取配置文件。5.2 跨模型批量处理用ModelEnumerator遍历多个.db1文件统一修正焊缝标准场景10个子项目模型需将所有焊缝WeldStandard从ISO 2553改为AWS D1.1。手动打开每个模型效率极低。using Tekla.Structures.Model; // 指定模型文件夹路径 string modelsFolder C:\Projects\BatchUpdate; var enumerator new ModelEnumerator(modelsFolder); while (enumerator.MoveNext()) { try { var model new Model(); model.SetUserInterfaceMode(Model.UserInterfaceModeEnum.BACKGROUND); if (model.Connect()) { var welds model.GetModelObjectSelector() .GetAllObjectsOfType(typeof(Weld)) as ListWeld; int updated 0; foreach (var w in welds) { if (w.WeldStandard ISO 2553) { w.WeldStandard AWS D1.1; w.CommitChanges(); updated; } } Console.WriteLine(${enumerator.CurrentModelName}: 更新 {updated} 个焊缝); model.Disconnect(); } } catch (Exception ex) { Console.WriteLine($处理 {enumerator.CurrentModelName} 失败{ex.Message}); } }关键点ModelEnumerator自动识别文件夹内所有.db1文件无需手动拼接路径enumerator.CurrentModelName返回模型名称不含扩展名便于日志追踪try-catch包裹单模型处理确保一个模型失败不影响其余模型5.3 结构化错误日志用JSON格式记录每次操作的模型、对象、时间、错误堆栈原始Console.WriteLine日志难以检索。升级为结构化日志便于ELK或Splunk分析using System.Text.Json; using System.Text.Json.Serialization; public class OperationLog { [JsonPropertyName(timestamp)] public string Timestamp DateTime.Now.ToString(o); [JsonPropertyName(model_name)] public string ModelName { get; set; } [JsonPropertyName(operation)] public string Operation { get; set; } [JsonPropertyName(object_type)] public string ObjectType { get; set; } [JsonPropertyName(object_id)] public string ObjectId { get; set; } [JsonPropertyName(status)] public string Status { get; set; } // success or failed [JsonPropertyName(error_message)] public string ErrorMessage { get; set; } } // 日志写入示例 var log new OperationLog { ModelName Warehouse_A, Operation UpdateBoltGroup, ObjectType BoltGroup, ObjectId BG-001, Status failed, ErrorMessage HoleDistance too small for bolt diameter }; File.AppendAllText(C:\Logs\tekla_api.log, JsonSerializer.Serialize(log) \n);落地价值日志行符合JSON Lines格式每行一个JSON对象可被Logstash直接解析timestamp用ISO 8601格式o支持时序分析status字段区分成功/失败便于Prometheus监控告警我踩过的最大坑是以为CommitChanges()只是“保存按钮”——直到某次批量修改后发现30%的螺栓群参数没生效翻了两天日志才明白CommitChanges()失败时不抛异常只静默返回false。现在我的所有修改操作都强制加返回值判断if (!bg.CommitChanges()) { LogError($BoltGroup {bg.Identifier} commit failed); continue; }这行代码救了我三次通宵返工。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

AI驱动科研全链路:从文献到评审的完整工作流拆解

AI驱动科研全链路:从文献到评审的完整工作流拆解

最近半年,我一直在折腾一套贯穿整个科研流程的AI工作流。从文献调研、数据清洗、建模分析,到写论文、画图、内部评审,我把能试的LLM和Agent方案都试了一遍,踩了不少坑,也沉淀出一套真正能跑通的完整链路。这篇文章不打…

2026/10/7 13:23:22 阅读更多 →
洛谷小游戏:程序员的思维体操训练场

洛谷小游戏:程序员的思维体操训练场

1. 这不是游戏合集,而是一套写给程序员的“思维体操训练场” 你点开这个标题,第一反应可能是——又一个挂羊头卖狗肉的流量帖?别急,先放下手机,回想一下:上一次你为了解一道题,在洛谷上反复调试…

2026/10/7 13:23:22 阅读更多 →
Agent-Reach:AI Agent触达边界的工程实践与架构全解析

Agent-Reach:AI Agent触达边界的工程实践与架构全解析

起这个项目名的时候,我其实纠结了很久。Agent-Reach,字面拆开就是 Agent 加 Reach,“智能体的触达半径”。Agent 这个词大家已经听腻了,但 Reach 是我真正想搞清楚的事:一个 AI Agent 到底能把任务推进到多远&#xff…

2026/10/7 13:22:21 阅读更多 →

最新新闻

AI日志定位助手:移动端实时日志与源码结合的故障排查实践

AI日志定位助手:移动端实时日志与源码结合的故障排查实践

做移动端开发这几年,我发现自己最大的时间黑洞不是写业务,而是看日志。线上用户反馈一个偶现 bug,我得先连上设备抓 logcat,再对着崩溃堆栈从头翻到尾,最后回到源码里一行行找线索。如果业务复杂一点,可能半…

2026/10/7 13:53:53 阅读更多 →
从对话到支付:AI旅游Agent四层架构与MCP工具链实战解析

从对话到支付:AI旅游Agent四层架构与MCP工具链实战解析

设想一个场景:用户在一个小程序里输入"帮我订下周三从上海去杭州的高铁票,再订一间西湖附近的酒店,预算500以内",然后系统自动完成查票、比价、推荐、生成订单、支付闭环。这背后不是简单的关键词匹配,而是由…

2026/10/7 13:53:53 阅读更多 →
Windows BLE 开发实战:基于 Windows.Devices.Bluetooth 的 C# 上位机连接与 GATT 通信指南

Windows BLE 开发实战:基于 Windows.Devices.Bluetooth 的 C# 上位机连接与 GATT 通信指南

1. 为什么在 Windows 上做 BLE 开发,我最终选了 Windows.Devices.Bluetooth如果你之前用 C# 做过串口通信或者 TCP 通信,第一次接触 BLE 的时候大概率会有点懵。串口就是打开端口、读写字节,TCP 就是连上 IP 和端口、收发数据流,逻…

2026/10/7 13:53:53 阅读更多 →
MCP多Server接入LangGraph:从协议握手到工程化实践

MCP多Server接入LangGraph:从协议握手到工程化实践

最近半年,只要你在做AI Agent相关的项目,几乎躲不开MCP这个词。从Claude Desktop、Codex到IDE里的通义灵码插件,再到游戏引擎Unreal 5.8、逆向工具IDA和x32dbg的MCP插件,整个生态像雨后春笋一样往外冒。工具多了以后,真…

2026/10/7 13:53:53 阅读更多 →
iPhone Air 2技术前瞻:轻薄机身的芯片能效与开发者适配

iPhone Air 2技术前瞻:轻薄机身的芯片能效与开发者适配

从手机行业最近这半年的讨论热度来看,iPhone Air 2几乎是被谈论最多、却又最缺乏确定性信息的一款新品。很多人把它简单地理解为“更薄的 iPhone”,也有人直接把它和过去 mini 系列的失败混为一谈。但从技术产品的演进逻辑看,这个判断是站不住…

2026/10/7 13:53:53 阅读更多 →
大模型从能聊到进业务:部署、微调与落地全梳理

大模型从能聊到进业务:部署、微调与落地全梳理

整理这篇大模型学习笔记,起因是我最近在带项目落地时频繁被问到几个问题:本地部署该用Ollama还是vLLM?Dify怎么接上本地模型?微调和提示词工程到底先学哪个?多模态模型能不能直接用在工业质检上?这些问题看…

2026/10/7 13:52:51 阅读更多 →

日新闻

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

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

2026/10/7 1:01:58 阅读更多 →
用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

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

2026/10/7 1:02:00 阅读更多 →
芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

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

2026/10/7 1:02:00 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/6 7:15:40 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/6 5:29:09 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/7 9:29:10 阅读更多 →

月新闻

我发现了一个新思路:用 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/6 8:21:32 阅读更多 →
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/7 11:43:46 阅读更多 →
黑夜航拍船只数据集训练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/7 13:34:55 阅读更多 →