Abaqus脚本批量生成任意半径球体并装配到指定位置的方法
简介这套Abaqus脚本压缩包面向需要频繁进行球体建模与装配的科研人员、工程师及高校学生解决批量创建不同半径球体并精确控制装配位置的重复操作问题。脚本调用Abaqus的Python建模接口使用者仅需修改少量参数即可生成任意半径的球体并可按指定位置完成多球体装配支持批量操作能一次性产出多个模型有效提升复杂结构力学分析和多球体装配模拟的前处理效率。压缩包共1个文件为单个py脚本大小仅1KB轻量易用适合下载后直接放到工作目录中调用或二次开发扩展。目前已有307人学习下载。借助脚本读者可获得一套简洁的参数化建模思路免去手动逐个建模与装配的繁琐流程同时可作为Abaqus脚本化建模的入门范例帮助理解Python与Abaqus交互建模的基本方法。1. 把「任意半径球体 任意位置装配」写成 Abaqus 脚本一次省一下午的思路做细观模型或者颗粒类前处理时经常要在 Abaqus 里生成几十个半径大小不一的球体再按精确坐标摆到指定位置。如果靠 GUI 一个个创建 Part、切到 Assembly 再平移半小时起步坐标稍多一点还容易点错行。用 Abaqus 脚本建模球体生成、半径赋值、装配坐标全变成数据跑一遍脚本几秒钟收工参数留在代码里随时可改。这个标题说的就是这件小事把球体建模和装配从「手工操作」变成「参数驱动的脚本」适合做骨料模型、滚珠简化、颗粒增强模拟或者批量球体前处理的工程师——哪怕你只写过几行 Python照着把半径列表和坐标列表替换掉就能用。2. 生成任意半径球体的最小脚本从一步能跑通到真正参数化2.1 一个能直接运行的球体建模骨架Abaqus 的 Python 脚本入口是mdb这个模型数据库对象。做球体建模时常规流程是先建一个模型Model再在模型里建 PartPart 用BaseSolidSphere特征直接生成实心球体。下面是去掉装配逻辑后的最简版本直接在 CAE 的 File → Run Script 里跑就能在模型树里看到球体 Part。# -*- coding: utf-8 -*- from abaqus import * from abaqusConstants import * # 模型名统一管理方便后面删除旧模型重跑 model_name SphereDemo if model_name in mdb.models.keys(): del mdb.models[model_name] model mdb.Model(namemodel_name) # 创建 Part三维、可变形实体 part_name Ball_5 part model.Part(namepart_name, dimensionalityTHREE_D, typeDEFORMABLE_BODY) # 关键就这一行生成半径 5.0 的实心球体 part.BaseSolidSphere(radius5.0)这段代码里有三个点值得说明。del mdb.models[model_name]是为了让脚本可以反复运行而不报「模型已存在」错误实际项目中脚本经常要调参数跑几十遍没有这行会翻车。dimensionalityTHREE_D表示创建三维部件typeDEFORMABLE_BODY表示变形体这是球体最常用的类型。BaseSolidSphere(radius5.0)对应 GUI 里 Create Part 对话框的 Sphere 选项它生成的球体基准点默认在球心这一点后面装配时非常关键。这个脚本跑完后Abaqus 会创建一个名为Ball_5的可变形实体 Part几何上就是一个完整球。如果只想验证建模到这里就已经完成了标题里的前半件事。2.2 半径参数化把写死的 5.0 变成半径列表「任意半径」不是让你每次改代码里的数字而是把半径放到一个列表里用循环批量生成。例如需要半径 5、8、3、10 四个球常见做法是维护一个半径列表循环建 Part 并打印结果。# 半径列表想生成多少种半径就加多少行 radii [5.0, 8.0, 3.0, 10.0] for r in radii: part_name Sphere_r%g % r # 同一个模型里 Part 名不能重复 if part_name in model.parts.keys(): del model.parts[part_name] part model.Part(namepart_name, dimensionalityTHREE_D, typeDEFORMABLE_BODY) part.BaseSolidSphere(radiusr) pdb model.parts[part_name] print(Part %s 创建完成半径 %.3f % (part_name, r))Sphere_r%g是一个字符串模板%g会把浮点数转成不带多余零的字符串比如 5.0 转成 5。这样每个半径对应一个独立 Part名字一眼能看出大小。这里有个选择如果多个球半径完全相同可以只建一个 Part装配时创建多个 Instance 指向同一个 Part模型文件更小如果每个球半径都不同就每个半径建一个 Part。标题强调「任意半径」所以上面代码按每个半径一个 Part 处理简单直接。这里要注意 Python 字符串格式化在 Abaqus 老版本基于 Python 2和新版本基于 Python 3里都兼容%操作符两边都支持。不要把print(...)写成print ...这种 Python 2 老语法新版会直接语法报错。2.3 脚本的三种执行方式GUI 运行、后台运行与批处理写好的脚本怎么跑直接影响使用习惯。日常调试推荐打开 CAE用 File → Run Script 选择脚本文件这样能立刻在视口里看到生成的 Part出错时错误信息也完整。参数稳定后要批量跑用命令行后台执行更省事abaqus cae noGUImake_spheres.py。这种模式下 Abaqus 不弹界面跑完直接退出适合晚上挂机批量生成模型。第三种是配合abaqus cae scriptmake_spheres.py的方式它会启动 CAE 但自动执行脚本执行完不关闭界面适合需要接着手工检查的场景。我一般按需切换调试用 Run Script正式生成用 noGUI要检查装配位置就用 script 模式。无论哪种方式脚本里print的内容都会输出到 Abaqus 的消息窗口或命令行终端这就是后面排查问题的主要依据。还有一点脚本里不要依赖 GUI 才有的对象。比如caeModules模块里的某些交互对象在 noGUI 模式不可用。纯建模装配的脚本from abaqus import *和from abaqusConstants import *就够用了不要多引入界面相关模块否则换执行方式就报错。3. 把球体放到任意位置装配坐标的三种写法和批量装配脚本3.1 装配坐标系与球心基准位置语义比想象中重要球体 Part 生成后它的局部坐标系原点就在球心。装配到 Assembly 时Abaqus 会把 Part 的局部坐标系对齐到装配的全局坐标系。也就是说如果不做任何移动球心就在全局坐标原点。要放到任意位置本质就是把 Part 的基准点球心移动到目标坐标。这里有一个最常见的认知偏差有人以为 Part 的基准点在球体底部于是目标坐标写的是球体底部位置结果球体有一半埋进接触面。用脚本装配前先记牢一句话球体 Part 的基准点就是球心平移向量就是球心的目标坐标。如果你希望球体底面落在某个平面球心坐标要往上抬一个半径值。Abaqus 里 Instance 的坐标位置有三种指定方式。第一种是创建 Instance 时直接传position参数第二种是创建后调用translate平移第三种是配合rotate调整姿态。球体是各向同性的几何体旋转对最终模型没有影响所以「任意位置」只需关心平移这让装配代码比一般机械装配简单不少。3.2 创建 Instance 并用 translate 移动到目标坐标最常见的装配写法是先创建 Instance再调translate移动。注意translate的vector是增量位移不是绝对坐标。因为球体基准在球心且初始在原点第一次平移的增量就等于目标坐标。# 延续上一节的 model 对象创建装配实例 asm model.rootAssembly if not asm.datums: asm.DatumCsysByDefault(CARTESIAN) # 用已有的球体 Part 创建 Instance inst_name Ball_5_Inst asm.Instance(nameinst_name, partmodel.parts[Sphere_r5], dependentON) # 把球心移动到 (10.0, 20.0, 15.0) asm.translate(instanceList(inst_name, ), vector(10.0, 20.0, 15.0))model.rootAssembly是模型的根装配所有部件都要挂到它下面。DatumCsysByDefault(CARTESIAN)是建立一个默认笛卡尔坐标系没有它大多数情况下也能创建 Instance但显式建立更稳妥。dependentON表示 Instance 依赖 Part 的几何不复制一份几何数据节省内存后续如果对 Part 重新划分网格Instance 会跟着更新。translate的第三个参数是相对位移这个机制很关键。脚本里为了不出错我通常让每个 Instance 只创建一次、只移动一次移动的目标值就是最终坐标。不要在同一个 Instance 上反复调translate去「修正」位置——那是增量不是定位调第二次等于在上一次基础上叠加位移很容易跑偏。3.3 批量装配半径列表与坐标列表一一对应的完整脚本把第 2 章和第 3 章的内容合并就是一个完整可用的批量球体装配脚本。半径列表和坐标列表一一对应循环里建 Part、建 Instance、移动到目标坐标最后打印结果。# -*- coding: utf-8 -*- from abaqus import * from abaqusConstants import * # 用户只需要改这两个列表 radii [5.0, 8.0, 3.0, 10.0, 6.5] centers [ (0.0, 0.0, 5.0), (15.0, 0.0, 8.0), (-6.0, 9.0, 3.0), (0.0, -12.0, 10.0), (3.0, 4.0, 6.5), ] # model_name SphereModel if model_name in mdb.models.keys(): del mdb.models[model_name] model mdb.Model(namemodel_name) asm model.rootAssembly if not asm.datums: asm.DatumCsysByDefault(CARTESIAN) # 必须保证半径数量和坐标数量一致 if len(radii) ! len(centers): raise ValueError(radii 与 centers 长度不一致) for i, (r, (x, y, z)) in enumerate(zip(radii, centers)): # 每个半径建一个 Part名字带半径便于识别 part_name Sphere_r%g % r if part_name not in model.parts.keys(): part model.Part(namepart_name, dimensionalityTHREE_D, typeDEFORMABLE_BODY) part.BaseSolidSphere(radiusr) # 创建 Instance 并移动到目标球心坐标 inst_name Ball_%02d % i asm.Instance(nameinst_name, partmodel.parts[part_name], dependentON) asm.translate(instanceList(inst_name, ), vector(x, y, z)) print(%s: r%.3f 球心(%.3f, %.3f, %.3f) % ( inst_name, r, x, y, z))这段代码的逻辑先检查半径列表和坐标列表长度是否一致不一致直接抛异常避免最后坐标错位。循环里相同半径的 Part 只创建一次后面同半径的球复用同一个 Part既能多个球共享几何又不至于每个球都重复建 Part。zip(radii, centers)把两个列表按位置配对第 i 个球对应第 i 组坐标。这里有一个实用细节如果某个半径在后续模型里会成为单独的部件并单独划分网格那就该为它建独立 Part如果只是当作几何体放进装配不做精细网格复用 Part 完全没问题。实际项目中我一般先想清楚这些球后续要不要独立设置网格属性再决定复用策略。3.4 「球心坐标」与「落座坐标」不同场景下的坐标换算第 3.1 节留了一个尾巴实际建模时你手里的坐标未必是球心坐标。常见有两种来源一种是从 CAD 或表格里拿到的球心位置直接填入centers即可另一种是要求球体「落座」在某个平面上比如底面放在 z0 的平台上此时你手上的是接触点坐标换算公式是球心坐标 接触点坐标 径向偏移。具体来说球体底面要落在 z0 平面球心 z 值等于半径值。上面的示例里半径 5 的球坐标 (0,0,5) 就是底面落座在 z0 的写法如果直接用 (0,0,0)球就会有一半埋在平面下方。如果是球体侧面贴合 y0 平面球心 y 坐标等于半径其他方向同理。我建议在建列表之前先写一行注释标明坐标语义比如# centers 全部为球心坐标或者# centers 全部为球体最低点坐标代码里自动加半径。这个习惯能少踩很多坑尤其是坐标一旦上百个人很难逐个心算。4. Abaqus 脚本球体装配的关键参数设置半径、坐标、单位与浮点精度4.1 半径和坐标的输入方式脚本内列表、命令行参数、外部文件参数从哪进来决定了脚本的通用性。最简单的是脚本内的常量列表打开脚本改数字就行适合参数不频繁变的场景。参数要频繁试算时从外部文件读入更舒服既不碰脚本又能用 Excel 编辑。脚本内定义参数我一般放在文件顶部用分隔线标注「用户只需要改这里」。这样做的好处是后续维护的人不用在几百行代码里找参数。外部文件读入的常见做法是读 CSV每行一个球的半径和坐标脚本循环读取import csv params [] with open(spheres.csv, r) as f: reader csv.reader(f) for row in reader: if not row or row[0].startswith(#): continue r, x, y, z [float(v) for v in row[:4]] params.append((r, x, y, z))关于命令行传参Abaqus 的cae noGUIscript.py模式不同版本对sys.argv的透传行为不完全一致我不建议把关键参数压在命令行上。真要传可以走环境变量或临时文件但都不如 CSV 直观。实际做项目时我的习惯是「脚本只做执行数据全在外部文件」脚本里不出现任何硬编码的半径或坐标值这样更换数据集不用动代码。4.2 单位制的坑要从源头堵住全模型必须统一长度单位Abaqus 本身是无单位制的你写 5.0它不关心是 5 毫米、5 厘米还是 5 米全模型数值一致即可。问题在于球体半径来自设计图纸装配坐标来自另一份表格两份数据用了不同单位装配出来就是一场灾难。最常见的是毫米和米的混用半径按毫米写坐标按米写或者反过来球体会小到看不见或者大到盖住整个模型。解决思路是在脚本开头定义一个单位注释统一写明这套模型采用的长度单位并确保半径列表与坐标列表来自同一单位体系。我通常会加一行# 单位制mm / N / t / s / MPa对应的导出应力单位是 MPa质量单位是吨。如果你习惯用 kg那就是 mm / N / kg / s / kPa这个换算表容易记错稳妥做法是在脚本里固定写LENGTH_UNIT mm写入日志。4.3 浮点精度与装配容差容易被忽略的两个细节浮点精度在球体装配脚本里翻车概率不高但一旦翻车很难查。常见问题有两个坐标用整数运算导致的小数截断以及用判断浮点数是否相等。前者出现在坐标由计算得出而非手动输入的场景比如循环里x i * 0.1累积多次后可能变成 0.30000000000000004后者出现在检查球体是否重叠时用比较两个坐标永远不相等判断失效。处理方式很直接坐标计算统一用浮点数不要在中间环节强转 int重叠判断不要比相等比距离小于半径和。还有一点装配完成后如果要检查球体是否贴合某个平面不要依赖坐标完全相等用差值绝对值小于一个很小的容差值判断比如abs(z - target_z) 1e-6。这个容差大小取决于模型尺寸微米级模型用 1e-9 都不嫌小米级模型 1e-4 也正常。第 4 章讲的这些参数设置本质上都是在减少「脚本能跑但结果不对」的概率。脚本能跑只是第一步跑出来的模型对不对更多取决于数据层面的一致性和精度控制。5. 脚本建模球体装配避坑指南我踩过的 5 个坑与排查套路5.1 球体消失或大到盖住全模型半径单位与直径/半径混用现象脚本跑完视口里要么找不到球要么球体巨大整个模型只看到一个球的局部。原因一般是单位混用或半径/直径语义混用。有人从图纸上拿到的是直径 50直接当半径写进BaseSolidSphere(radius50)球的实际尺寸比预期大一倍或者半径按毫米设计装配坐标却用了米球在视口里缩成像素点。解决第一步确认图纸给的是半径还是直径BaseSolidSphere(radius...)参数只认半径。第二步统一单位把脚本顶部单位注释当成硬规范半径列表和坐标列表来自同一单位体系。排查时最快的方法是打印球心坐标和半径用肉眼算一下球体边缘范围看是否落在装配区域内部。5.2 球心坐标明明对球却埋进接触面一半现象球体位置看起来只差一点点球的下半部分陷入边界平面上半部分露在外面。原因这就是第 3.4 节说的坐标语义问题。你提供的坐标实际是球体接触点的位置但脚本把它当球心用了。球体 Part 基准在球心translate移动的是球心不是底部或任意指定点。解决先确认每个坐标的语义。如果手头数据是接触点坐标在代码里统一加上半径偏移比如球体底面落在 z0 平面则z_center z_contact r。不要试图在个别球的坐标上手动改数值一定在循环里统一处理否则改错一个很难发现。5.3 translate 第二次没反应增量位移与固定约束的机制现象第一个球移动正常想在同一 Instance 上再移动一次脚本没报错但球体纹丝不动或位置完全和自己想的不一样。原因translate的向量是增量位移不是绝对坐标。第二次调translate(..., vector(10, 20, 30))是在当前位置上再叠加这个向量而不是移动到 (10,20,30)。如果心里把它当绝对定位结果就是位置偏到不知哪里。解决一个 Instance 只创建一次、只移动一次目标值就是最终坐标。需要改变位置时删除旧 Instance 重建而不是重复移动。另外如果 Instance 在装配里被加了固定约束translate可能直接失效这种情况也建议重建而不是尝试解除约束后移动。5.4 脚本第二次运行报「模型已存在」或「Part 名重复」现象第一次运行正常第二次运行报 KeyError提示某个模型或 Part 已经存在。原因Abaqus 的mdb对象在进程内是持久的同一个 CAE 会话里重复跑脚本上次创建的模型和 Part 还在模型数据库里名字冲突。解决脚本开头统一清理旧模型。核心三行代码先判断模型名是否存在存在就删除再新建模型。Part 的清理可以依赖模型删除自动完成不用逐个处理。只要每次跑脚本都从同一个模型名重建就不会累积残留对象。5.5 坐标写对了球却互相穿插缺一个距离检查现象多个球装配后部分球体重叠穿插网格生成时报几何干涉或者后续接触仿真初始就穿透。原因坐标列表本身没做干涉校验。球心间距小于两球半径之和时两个球必然穿透。如果这些球最终要参与接触分析或布尔运算干涉是致命的如果只是做简单的体积可视化可能不明显。解决在批量装配脚本里增加距离检查逻辑每放入一个球前和已放球逐个计算球心距小于半径和就报警。placed [] for i, (r, (x, y, z)) in enumerate(zip(radii, centers)): for (px, py, pz, pr) in placed: d ((x-px)**2 (y-py)**2 (z-pz)**2) ** 0.5 if d r pr: print(警告: %s 与已有球重叠, 间距%.3f % (i, d)) placed.append((r, x, y, z))这段检查代码本身不复杂复杂的是阈值怎么定。如果后续要做网格划分建议判断条件从d r pr改成d r pr gap提前预留间隙这个gap根据网格最小尺寸来定。否则即使不重叠两球贴得太近也会影响网格质量。6. 进阶玩法把球体装配脚本变成参数化投放工具的 3 个技巧6.1 用 CSV 管理参数脚本只做执行不再写死数据上一章提到的 CSV 输入实际项目里我一般还会加一层CSV 文件名通过脚本最上面的一个变量指定方便切换数据集。列格式固定为radius,x,y,z第一行可以是注释行以#开头。这样每个工况一套 CSV脚本完全不用改。几十个球的工况用 Excel 维护坐标列表比在脚本里改数组直观得多。6.2 随机不重叠投放给「任意位置」加一个约束条件有的需求不是给定坐标而是给定一个区域自动生成一组互不重叠的球。核心逻辑是随机生成候选球心和半径检查与已有球不重叠才接受。import random random.seed(42) def no_overlap(x, y, z, r, placed): for (px, py, pz, pr) in placed: if ((x-px)**2 (y-py)**2 (z-pz)**2) ** 0.5 r pr: return False return True placed [] while len(placed) 30: r random.uniform(2.0, 6.0) x random.uniform(0.0, 50.0) y random.uniform(0.0, 50.0) z random.uniform(r, 20.0) if no_overlap(x, y, z, r, placed): placed.append((r, x, y, z))注意random.seed(42)让随机序列可复现同一个种子永远生成同一批位置这在需要对比不同网格方案时非常重要。z random.uniform(r, 20.0)保证了球体底面不会穿透 z0 平面这是落座语义的应用。6.3 跑完先打印位置日志再提交网格和计算装配脚本跑完我习惯把每个球的半径、球心坐标、编号打印成一份完整日志并同步写一份 txt 文件存档。这样提交计算前可以快速核对确认坐标和需求一致。其实我吃过一次亏某天加班赶一个颗粒模型坐标列表少了一行最后一个球复用了上一个坐标两个球叠在一起接触计算跑了三天结果完全不对。从那以后我每次跑完脚本都会先看打印日志确认球数、坐标数、半径数三者对得上再往下一步走。这也是为什么示例代码里每创建完一个球就打一行 print看着啰嗦但关键时刻能救命。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

iPad电子点餐软件安装包部署全指南:从安装到首单的完整链路

iPad电子点餐软件安装包部署全指南:从安装到首单的完整链路

简介:这份资源是面向餐饮行业从业者与iOS开发学习者的iPad电子点餐软件安装包,专为iOS系统设备打造,可用于餐厅自助点餐场景的搭建与体验。软件集成了库存管理、订单处理、数据分析等后台功能,前端界面美观直观,支持快…

2026/10/16 14:34:41 阅读更多 →
ThinkPHP6插件包开发指南:Composer接入与服务提供者实战

ThinkPHP6插件包开发指南:Composer接入与服务提供者实战

简介:think-addons 是为 ThinkPHP6 打造的插件程序包,面向需要在项目中灵活加载与管理扩展模块的 PHP 开发者,核心解决模块解耦、钩子配置和插件动态加载等问题。包内共 15 个文件,以 11 个 PHP 脚本为主干:Addons.php…

2026/10/16 14:34:41 阅读更多 →
纵向加密认证装置调试资源包V1.5实战全流程指南

纵向加密认证装置调试资源包V1.5实战全流程指南

简介:科东纵向加密客户端V1.5是面向电力系统关键基础设施的纵向加密通信组件,适配科东PSTunnel2000加密装置,防止不同层级网络节点间的数据被窃取、篡改或越权访问。该版本聚焦加密算法、双向身份验证、完整性校验、SSL/TLS安全隧道、动态密钥…

2026/10/16 14:34:41 阅读更多 →

最新新闻

UIPageViewController 深度解析:页面状态机与滑动导航原理

UIPageViewController 深度解析:页面状态机与滑动导航原理

1. 项目概述:为什么一个“左右滑动”功能值得单独深挖? 在 iOS 开发中,“左右滑动切换页面”这个交互,看起来简单得像呼吸一样自然——用户手指一划,界面就翻页,再一划,又翻一页。但如果你真动手…

2026/10/16 15:15:34 阅读更多 →
UIPageViewController 深度实践:构建稳定高效的左右滑动页面导航

UIPageViewController 深度实践:构建稳定高效的左右滑动页面导航

1. 项目概述:为什么一个“左右滑动”功能值得单独深挖?UIPageViewController 是 iOS 原生框架中专为“页面式导航”设计的控制器,但它绝不是个简单的“翻页器”。很多人第一次用它时,以为只是把几个 UIViewController 塞进去&…

2026/10/16 15:15:34 阅读更多 →
从55秒到1秒:MES Agent性能优化实战与Trace驱动排查方法

从55秒到1秒:MES Agent性能优化实战与Trace驱动排查方法

1. 从 55 秒到 1 秒:这个优化到底动了谁的蛋糕先说结论:一个原本跑一次要 55 秒的 MES Agent 任务,最后压到了 1 秒出头。这不是靠换机器、加内存、堆并发这种“大力出奇迹”的路子,而是靠一次完整的 Trace 驱动排查,把…

2026/10/16 15:15:34 阅读更多 →
SpringBoot 集成 Activiti 7 实战:工作流引擎落地审批全流程

SpringBoot 集成 Activiti 7 实战:工作流引擎落地审批全流程

团队里新来的同事看我在跑一个审批流程,问了一句:“这不就是请假状态机吗?加一摞 if else 不也能做?”我笑了笑,说实话很久以前我也这么想。可当你碰到的业务从“提交-审批”变成五级审批、会签、驳回、加签、流程版本…

2026/10/16 15:15:34 阅读更多 →
单链表底层原理与工程实践:从内存布局到LRU缓存

单链表底层原理与工程实践:从内存布局到LRU缓存

1. 为什么单链表是程序员绕不开的第一道“硬坎” 刚接触数据结构时,我见过太多人把单链表当成“老古董”——不就是几个指针连来连去?背个插入删除口诀,应付完考试就扔进回收站。直到某次在某公司做性能优化项目,一个本该毫秒级响…

2026/10/16 15:15:34 阅读更多 →
算法笔试经典题:为什么全相等的最优解是中位数?

算法笔试经典题:为什么全相等的最优解是中位数?

先交代一下背景:2026年春招笔试里,算法岗这套卷子的第一题叫“全相等”,题目本身不难,但它出现在卷首,承担的任务很特殊——把心态稳住、把基础盘接住。我陪人复盘时发现,不少同学在五分钟内能写出能过的代…

2026/10/16 15:14:33 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

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

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →