3D打印转机械设计必看:如何用Python脚本批量处理3MF到STP转换(附OCC库避坑指南)

3MF 转换为 STP:迪威模型网在线转换全流程与进阶指南 本文解析3MF与STP格式的核心差异,详细介绍通过迪威模型网在线将3MF转换为STP的五步操作流程,并提供FreeCAD、MeshLab等本地化转换方案及Python自动化脚本解决技巧。3MF作为3D打印全信息载体,包含颜色纹理等丰富数据;STP则是工业级通用交换格式,专注于几何精度。文章针对专业技术人员和在校学生,从文件预处理到转换验证,系统讲解格式转换方法,并探讨不同应用场景下的解决方案,帮助用户高效实现3D打印模型与工业制造流程的无缝对接。 阅读详情

从3D打印到精密制造:用Python脚本打通3MF到STEP的自动化桥梁

如果你是从3D打印领域转向机械设计的技术人员,一定经历过这样的困境:精心设计的3D打印模型,在需要导入SolidWorks、CATIA或NX进行工程分析时,却因为格式壁垒而寸步难行。3MF文件里那些漂亮的颜色纹理、预设的打印参数,在CAD工程师眼中可能只是一堆“无法编辑的网格”。这种跨领域的格式转换,远不止是点击一个“另存为”那么简单——它涉及到几何精度的保持、拓扑结构的重建,以及不同工业标准之间的微妙兼容性问题。

市面上确实有不少在线转换工具,比如迪威模型网这类平台,它们提供了便捷的点击式操作。但对于需要处理成百上千个模型、或者对转换后的STEP文件有严格合规性要求(例如必须符合AP214协议以确保在特定PLM系统中正常流转)的项目来说,手动操作不仅效率低下,更难以保证批次间的一致性。此时,一条自动化、可定制、且能深入控制转换内核的路径就显得至关重要。这正是Python结合开源几何内核(如OCC/OCCT)所能提供的强大能力。

本文将带你深入这条技术路径的腹地。我们不会停留在简单的API调用上,而是会拆解从3MF网格数据到B-Rep边界表示法的转换原理,剖析OCC库在生成STEP文件时的内部机制,并提供一套可直接用于生产环境的、具备错误处理和日志记录的Python脚本模板。更重要的是,我们会重点探讨那个在在线转换中常被隐藏,却对后续协作影响巨大的选择:AP214与AP203协议。理解它,是避免你的模型在客户端的CAD软件中“面目全非”的关键。

1. 理解转换的本质:从网格到边界表示

在编写任何一行代码之前,我们必须厘清3MF和STEP(STP)这两种格式在底层数据表达上的根本差异。这决定了转换过程不是简单的封装变换,而是一次深刻的“数据翻译”。

3MF本质上是一个网格(Mesh)模型的容器。它存储的是由无数三角形(或四边形)面片构成的表面,这些面片通过共享的顶点连接起来,形成一个封闭的壳。3MF的先进性在于它用XML结构打包了这些网格数据以及颜色、材料、打印设置等丰富的元数据。然而,对于CAD系统而言,三角形网格是一种“近似”表示,它缺乏精确的数学定义。

STEP (STP) 则基于边界表示(B-Rep)。一个B-Rep模型由面(Face)、边(Edge)和顶点(Vertex)的拓扑关系,以及定义这些几何元素的精确数学曲面(如NURBS曲面)和曲线(如B样条曲线)构成。这种表示方式精确描述了模型的几何形状,是进行工程分析、尺寸标注和数控编程的基础。

因此,将3MF转为STEP,核心任务是将三角网格重建为精确的B-Rep模型。这个过程称为“反向工程”或“网格重构”,它包含两个关键步骤:

  1. 网格修复与预处理:原始的3MF网格可能存在破洞、非流形边、自相交或噪声。这些缺陷会直接导致后续曲面重构失败。
  2. 曲面拟合与拓扑重建:算法需要识别网格中属于同一张光滑曲面的区域,并用一张NURBS曲面去拟合它;同时,恢复面、边、顶点之间的正确连接关系。

注意:没有任何算法能100%完美地将任意网格转换为B-Rep。对于有机形状或极度复杂的网格,转换结果可能出现曲面瑕疵或细节丢失。自动化脚本的价值在于标准化这个过程,并通过参数调整在效率与精度间取得平衡。

2. 构建你的Python转换工坊:环境与核心库

抛弃那些封装过度的“一键转换”库,我们选择Open CASCADE Technology (OCC/OCCT) 作为几何内核。它是一个开源的、工业级的CAD/CAE/CAM开发平台,SolidWorks、FreeCAD等软件都直接或间接使用其技术。通过PythonOCC(pythonocc-core)这个绑定库,我们可以在Python中直接调用其强大的几何处理能力。

首先,搭建一个稳定的工作环境。我强烈建议使用Conda来管理依赖,以避免复杂的原生库编译问题。

# 创建并激活一个专门的虚拟环境
conda create -n occ-converter python=3.9
conda activate occ-converter

# 安装pythonocc-core。使用conda-forge频道是最简单的方式。
conda install -c conda-forge pythonocc-core=7.7.0

# 安装用于处理3MF文件(本质是ZIP+XML)的辅助库
pip install py3mf numpy

接下来,我们来认识一下这个项目中最核心的几个OCC模块:

  • OCC.Core.BRepMesh / OCC.Core.BRepBuilderAPI:用于网格相关的操作和B-Rep模型的构建。
  • OCC.Core.STEPControl:控制STEP文件的写入和读取,这是我们输出的关键。
  • OCC.Core.IFSelect:包含文件读写状态的定义(如IFSelect_RetDone)。
  • OCC.Core.Interface:用于设置全局参数,例如至关重要的STEP协议版本。

一个常见的“坑”是OCC库的导入和内存管理。OCC对象通常不直接由Python的垃圾回收器管理,不当操作可能导致内存泄漏或程序崩溃。在编写脚本时,对于复杂的操作,建议将其封装在函数中,并明确对象的生命周期。

3. 脚本实战:从3MF解析到STEP生成的完整流程

下面是一个增强版的、可直接运行的Python脚本框架。它包含了错误处理、日志记录和可配置的转换参数。

#!/usr/bin/env python3
"""
3MF to STEP 批量转换脚本
支持AP214/AP203协议选择,包含基础网格修复和转换日志。
"""

import sys
import os
import zipfile
import xml.etree.ElementTree as ET
from pathlib import Path
import logging
import numpy as np
from typing import Optional, List

# OCC 核心导入
from OCC.Core.gp import gp_Pnt
from OCC.Core.BRepBuilderAPI import BRepBuilderAPI_MakePolygon, BRepBuilderAPI_MakeFace
from OCC.Core.TopoDS import TopoDS_Compound, TopoDS_Face
from OCC.Core.BRep import BRep_Builder
from OCC.Core.STEPControl import STEPControl_Writer, STEPControl_AsIs
from OCC.Core.IFSelect import IFSelect_RetDone
from OCC.Core.Interface import Interface_Static_SetCVal

# 配置日志
logging.basicConfig(level=logging.INFO,
                    format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

class Model3MF:
    """一个简化的3MF模型解析类,用于提取三角网格数据"""
    def __init__(self, filepath: Path):
        self.vertices = []  # 顶点列表 [ (x1,y1,z1), ... ]
        self.triangles = [] # 三角形索引列表 [ (v1,v2,v3), ... ]
        self._parse_3mf(filepath)

    def _parse_3mf(self, filepath: Path):
        """解析3MF文件(ZIP格式),寻找model.model文件并读取网格"""
        try:
            with zipfile.ZipFile(filepath, 'r') as z:
                # 3MF规范中,主模型通常在此路径
                model_data = z.read('3D/Models/model.model')
                root = ET.fromstring(model_data)
                # 命名空间处理
                ns = {'m': 'http://schemas.microsoft.com/3dmanufacturing/core/2015/02'}
                # 提取顶点
                vertices_elem = root.find('.//m:vertices', ns)
                for v in vertices_elem.findall('m:vertex', ns):
                    coords = v.get('position').split()
                    self.vertices.append(tuple(map(float, coords)))
                # 提取三角形
                triangles_elem = root.find('.//m:triangles', ns)
                for t in triangles_elem.findall('m:triangle', ns):
                    indices = [t.get(f'v{i}') for i in range(3)]
                    self.triangles.append(tuple(map(int, indices)))
                logger.info(f"成功解析模型: {filepath.name}, 顶点数: {len(self.vertices)}, 面片数: {len(self.triangles)}")
        except Exception as e:
            logger.error(f"解析3MF文件失败 {filepath}: {e}")
            raise

def mesh_to_brep_faces(model: Model3MF, tolerance: float = 1e-3) -> List[TopoDS_Face]:
    """
    将三角网格转换为一系列B-Rep面。
    这是一个简化示例。实际生产中,应对网格进行分片、平面检测和曲面拟合。
    此处为演示,将每个三角形直接转为平面面。
    """
    faces = []
    builder = BRep_Builder()
    for tri in model.triangles:
        # 获取三角形的三个顶点
        pts = [gp_Pnt(*model.vertices[vi]) for vi in tri]
        # 创建多边形线框
        polygon = BRepBuilderAPI_MakePolygon()
        for pt in pts:
            polygon.Add(pt)
        polygon.Close()
        wire = polygon.Wire()
        # 由线框创建平面面
        face_maker = BRepBuilderAPI_MakeFace(wire)
        if face_maker.IsDone():
            faces.append(face_maker.Face())
        else:
            logger.warning("无法从三角形创建面,可能退化或共线")
    return faces

def convert_3mf_to_step(input_3mf: Path, output_step: Path, step_schema: str = "AP214"):
    """
    执行单个3MF文件到STEP文件的转换。
    :param step_schema: 'AP214' 或 'AP203'
    """
    logger.info(f"开始转换: {input_3mf} -> {output_step} (协议: {step_schema})")

    # 1. 解析3MF
    try:
        model = Model3MF(input_3mf)
    except Exception as e:
        logger.error(f"输入文件解析中止")
        return False

    # 2. 网格转换为B-Rep面(简化处理)
    if len(model.triangles) > 100000:
        logger.warning("模型面片数巨大,转换可能耗时较长,且结果STEP文件可能不理想。")
    faces = mesh_to_brep_faces(model)
    if not faces:
        logger.error("未能生成任何有效的B-Rep面")
        return False

    # 3. 创建复合体(Compound)以容纳所有面
    compound_builder = BRep_Builder()
    compound = TopoDS_Compound()
    compound_builder.MakeCompound(compound)
    for face in faces:
        compound_builder.Add(compound, face)

    # 4. 配置并执行STEP写入
    # **关键步骤:设置STEP协议**
    Interface_Static_SetCVal("write.step.schema", step_schema)
    # 可设置其他参数,如单位
    Interface_Static_SetCVal("write.step.unit", "M") # 米

    step_writer = STEPControl_Writer()
    status = step_writer.Transfer(compound, STEPControl_AsIs)

    if status == IFSelect_RetDone:
        write_status = step_writer.Write(str(output_step))
        if write_status == IFSelect_RetDone:
            logger.info(f"转换成功: {output_step}")
            return True
        else:
            logger.error(f"文件写入失败")
    else:
        logger.error(f"模型转换到STEP数据结构失败")
    return False

def batch_convert(input_dir: Path, output_dir: Path, schema: str = "AP214", pattern: str = "*.3mf"):
    """批量转换目录下所有匹配模式的3MF文件"""
    output_dir.mkdir(parents=True, exist_ok=True)
    files = list(input_dir.glob(pattern))
    logger.info(f"找到 {len(files)} 个待转换文件")

    success_count = 0
    for f in files:
        output_file = output_dir / f"{f.stem}.stp"
        if convert_3mf_to_step(f, output_file, schema):
            success_count += 1
        else:
            logger.error(f"文件 {f.name} 转换失败,已跳过。")

    logger.info(f"批量转换完成。成功: {success_count}/{len(files)}")

if __name__ == "__main__":
    # 使用示例
    input_folder = Path("./input_models")
    output_folder = Path("./output_step")
    # 尝试使用AP214协议进行批量转换
    batch_convert(input_folder, output_folder, schema="AP214")

这个脚本提供了一个坚实的起点。Model3MF类负责解压并解析3MF文件中的网格数据。mesh_to_brep_faces函数展示了将三角形网格转换为OCC中B-Rep面的最基本逻辑。在实际应用中,你需要根据模型复杂度,在此处集成更高级的网格修复(如使用OCC.Core.ShapeFix)和曲面拟合算法。

4. 协议之选:AP214 vs AP203,决定你的模型能否被正确打开

这是整个转换过程中最具工程意义的一环,也是在很多在线转换工具中被默认隐藏的选项。Interface_Static_SetCVal("write.step.schema", "AP214")这一行代码的选择,直接影响下游CAD软件的兼容性。

让我们通过一个表格来清晰对比两者的区别:

特性维度STEP AP203STEP AP214
全称与焦点配置控制设计。专注于几何与拓扑数据交换。核心数据汽车设计。在AP203基础上,扩展了层、颜色、线型等显示属性。
数据内容基本形状、装配结构、产品标识信息。包含AP203所有内容,并增加了视觉表现(颜色、纹理)、公差、工艺信息等。
文件大小相对较小。通常更大,因为包含了更多元数据。
主要应用领域传统的机械设计、基础制造。汽车、航空航天等需要复杂外观和严格产品制造信息(PMI)的行业。
软件兼容性几乎100%兼容所有CAD系统(SolidWorks, CATIA V5, NX, Creo, Inventor等)。广泛兼容,但非绝对。较老的CAD版本或某些专注于纯几何的CAE软件可能无法识别其颜色层信息,但几何本身通常可读。
我们的选择建议安全首选。当你不确定下游用户使用什么软件,或只需交换几何模型时。功能首选。当你需要保留模型的不同部分(如装配体中的不同零件)的颜色区分信息,且确定下游软件支持时。

关键提示:即使你在转换时使用了AP214并指定了颜色,如果接收方用只支持AP203的软件打开,他们通常仍然能看到完整的几何模型,只是颜色信息会被忽略。因此,从数据保全的角度看,在不确定的情况下,AP214通常是更优的选择,因为它包含了超集信息。真正的风险点在于使用了一些软件特有的、超出AP214标准的扩展属性。

在OCC中设置协议非常简单,但必须在创建STEPControl_Writer实例之前进行设置,如上文脚本所示。你可以将这个参数设计为脚本的命令行参数,以便灵活切换。

# 示例:如何通过命令行参数选择协议
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--schema', choices=['AP203', 'AP214'], default='AP214', help='STEP输出协议')
args = parser.parse_args()
# 然后在convert函数中使用 args.schema

5. 超越基础:提升转换质量的实用策略

掌握了核心流程后,我们可以从以下几个方向优化转换结果,应对更复杂的实际场景。

5.1 集成专业网格处理库

对于质量较差的原始网格,OCC内置的ShapeFix工具可能不够用。可以考虑在转换前,使用像Open3D、PyMesh或Trimesh这样的专业网格处理库进行预处理:

import open3d as o3d
import trimesh

def preprocess_mesh_with_open3d(mesh_file):
    """使用Open3D进行网格修复和简化"""
    mesh = o3d.io.read_triangle_mesh(str(mesh_file))
    # 1. 修复非流形边和顶点
    mesh.remove_non_manifold_edges()
    mesh.remove_degenerate_triangles()
    # 2. 孔洞填充(可选,需谨慎)
    # mesh.fill_holes()
    # 3. 简化网格(如果面片数过多)
    if len(mesh.triangles) > 50000:
        mesh = mesh.simplify_quadric_decimation(target_number_of_triangles=50000)
    # 将处理后的网格保存为临时文件,供后续OCC读取
    temp_file = mesh_file.parent / f"temp_fixed_{mesh_file.name}"
    o3d.io.write_triangle_mesh(str(temp_file), mesh)
    return temp_file

5.2 处理装配体与多实体

一个3MF文件可能包含多个物体(即一个装配体)。我们的脚本需要能够识别并保留这种结构关系。在解析3MF时,需要处理<components>和<object>标签树,然后在OCC中创建对应的装配结构(使用TopoDS_Compound来组织多个TopoDS_Solid),并在写入STEP时保持这层结构,这样在CAD软件中打开时才会是多个独立的可操作零件。

5.3 性能优化与错误恢复

批量转换时,性能至关重要。可以考虑使用Python的concurrent.futures模块实现多进程转换,充分利用多核CPU。同时,必须为每个转换任务配备完善的try...except块,确保一个文件的失败不会导致整个批处理任务中止,所有错误都应被记录到日志文件中,便于事后排查。

从3D打印的网格世界,跨入基于精确数学表达的机械设计领域,自动化格式转换是连接两者的技术栈。通过Python和OCC库,你获得的不仅仅是一个转换工具,更是一个可以深度定制、适应复杂工作流、并能从根本上理解数据流转过程的解决方案。这套方法允许你根据具体的模型特点(是机械零件还是有机造型)和目标系统要求,精细调整转换的每一个环节。

3D打印到工业设计:如何用FreeCAD免费实现3MF转STP(详细步骤+对比在线工具) 本文详细介绍了如何利用开源软件FreeCAD,在本地免费实现3MF格式到工业标准STEP格式的高保真转换。通过解析格式差异、搭建环境、分步实战演示,提供了从导入、网格转换到导出的完整解决方案,并对比了在线转换工具的局限性,为3D打印模型进入精密制造流程提供了可靠路径。 阅读详情

相关推荐

3MF转STP格式转换避坑指南:迪威模型网实测与常见问题解决

本文深入解析3MF与STP格式的本质差异,揭示转换过程中模型破面、细节丢失等问题的根源。通过迪威模型网等在线转换工具的实际操作演示,提供从模型预处理、精度设置到转换后CAD软件修复的完整避坑指南,帮助工程师和设计师高效完成格式转换。

5b6n7m8的博客 249

python运行示例lib3mf.py找不到module:py_lib3mf的问题

此外,如果你是直接下载的github项目(生成文件夹名为lib3mf-master),那么你在SDK文件夹中打开的Examples中是缺失三个文件夹的,因此运行仍然会报错!示例.py文件位置:"...\lib3mf-master\SDK\Examples\Python\Lib3MF_Example.py"虽然下载库时名称是“py-lib3mf”,甚至项目作者在示例中引入的也是py-lib3mf,但其实这是不对的,我觉得这挺离谱的!将里面SDK文件夹中的三个文件夹复制粘贴到你之前的文件夹中,就可以运行了。

zixingcai的博客 579

3MF转STP格式转换的5个常见问题及解决方案(附迪威模型网实操)

本文深入解析了3MF转STP格式转换中常见的模型精度损失、文件体积庞大、转换失败、信息丢失及装配结构丢失五大问题,并提供从原理到实操的完整解决方案。通过理解两种格式的本质差异,并结合迪威模型网等在线转换工具或本地软件进行预处理与参数优化,可有效跨越设计与制造的数据鸿沟,确保转换后的模型满足下游工程应用需求。

lg888的博客 915

在SOLIDWORKS中如何打开一个stl/obj/off/ply/ply2,3mf,step等不同3d格式文件并进行更改?

如果别人要给你发一个3d格式的文件,要如何正确地打开一个不同3d格式的建模文件以及进行零件更改,是我们必须学习要和打好的基础。

alexzhu66的博客 3万+

3MF 转换为 STP 全攻略:迪威模型网在线转换实战

摘要:3MF与STP是三维设计与制造领域的两种重要文件格式,分别适用于3D打印和工业设计。本文介绍了通过迪威模型网在线将3MF转换为STP的详细步骤:访问网站、选择转换功能、上传文件、进行转换及下载结果。同时强调了转换前的模型检查、精度处理等注意事项,并提到FreeCAD等其他转换方式。该指南为专业技术人员和学生提供了高效完成格式转换的实用方法,促进3D模型在不同领域的应用流通。(149字)

技术说明博主 1816

3MF转STP格式转换保姆级教程:从迪威模型网到本地FreeCAD全流程解析

本文提供了一套完整的3MF转STP格式转换解决方案,涵盖从快速在线转换到本地精细修复的全流程。首先解析了3MF与STP两种格式的核心差异与应用场景,随后详细演示了如何利用迪威模型网等在线工具进行快速转换验证,并重点介绍了使用开源软件FreeCAD进行本地可控转换、几何修复及二次设计的专业方法,最后探讨了批量处理的脚本自动化方案,旨在帮助用户高效打通3D打印数据与工程制造流程。

weixin_29296241的博客 360

3d文件格式转换工具

1、Assimp Open Asset Import是一个库,用于将各种3d文件格式加载为共享的内存格式。它支持40多种用于导入的文件格式和越来越多的用于导出的文件格式选择,使用人数多。 支持导入的格式:3DS、3MF、DAE/Collada、DXF、FBX、GLTF、STP、STL、PLY 支持导出的格式:DAE (Collada)、STL、OBJ、PLY、JSON、STEP GitHub地址链接:https://github.com/assimp/assimp 2、Meshlab ...

Angel_fallen的博客 1万+

3MF 与 STL 格式转换全攻略

在 3D 打印和计算机图形设计领域,文件格式的转换至关重要。3MF 和 STL 作为两种常用格式,前者凭借丰富的表现力,后者依靠广泛的兼容性,在行业内占据着重要地位。本文将为你详细介绍 3MF 转换为 STL 的相关知识与实用方法。

技术说明博主 4870

【免费下载】 Blender3mfFormat 插件安装和配置指南

### 项目基础介绍 Blender3mfFormat 是一个 Blender 插件,用于导入和导出 3MF 文件。3MF(3D Manufacturing Format)是一种用于三角网格的文件格式,旨在作为 3D 打印应用程序的交换格式。该插件使得 Blender 能够更好地作为 CAD 软件用于增材制造。 ### 主要编程语言 该项目主要使用 Python 编程语言开发。 ## 2. 项...

gitblog_09361的博客 8882

FreeCAD: 将STL格式文件转换为step格式文件的记录

FreeCAD: 将STL格式文件转换为step格式文件的记录

qq_54900679的博客 1万+

STEP,STP,3DM,3DS,AMF,STL,3D模型在线文件查看 支持文件格式3dm, 3ds, 3mf, amf, bi..

在数字化浪潮中,3D 模型格式(如 step、stp、amf、3dm、3ds、3mf 等)的在线浏览需求,本质上是数字化协同、轻量化交互、全流程数据贯通的必然结果。这些格式覆盖了从设计、制造到建筑、运维的全产业链,其在线浏览需求与数字化转型的核心目标深度绑定。 在线浏览对数字化的价值:从 “数据流通” 到 “价值挖掘” 1. 降低数字化门槛:无需采购专业软件,中小企业和个人也能参与 3D 数据协作,推动数字化从 “头部企业” 向 “全行业” 普及。 2. 加速数据流转效率:设计方案、施工图纸、产品模型通过在线链接即时传递,减少 “文件传输 - 版本核对 - 格式转换” 的时间成本,提升数字化流程的周转率。 3. 支撑智能化决策:在线浏览结合云端分析(如测量模型尺寸、检测干涉碰撞),可将 3D 数据转化为决策依据,例如制造业通过在线模型分析零件装配合理性,建筑行业通过在线 BIM 模型优化材料用量。

10种最流行的3D模型文件格式及转换方法

3D 文件的基本功能是以计算机可以理解的格式(纯文本或二进制数据)存储有关 3D 模型的信息。具体来说,它们可以存储有关 3D 模型的四个关键功能的详细信息,但值得注意的是,你可能并不总是在所有项目中利用所有四个功能,而且并非所有文件格式都支持所有四个功能!3D 文件可以存储的四个关键特征包括模型的几何形状、模型的表面纹理、场景细节和模型的动画。在探讨这些功能及其使用方法之前,让我们快速回顾一下 3D 文件的类型。

新缸中之脑 3万+

STEP,STP,3DM,3DS,AMF,STL,3D模型在线文件查看 支持文件格式3dm, 3ds, 3mf, amf, bim, brep, dae, fbx, fcstd, gltf, ifc

在数字化浪潮中,3D 模型格式(如 step、stp、amf、3dm、3ds、3mf 等)的在线浏览需求,本质上是数字化协同、轻量化交互、全流程数据贯通的必然结果。这些格式覆盖了从设计、制造到建筑、运维的全产业链,其在线浏览需求与数字化转型的核心目标深度绑定。 在线浏览对数字化的价值:从 “数据流通” 到 “价值挖掘” 1. 降低数字化门槛:无需采购专业软件,中小企业和个人也能参与 3D 数据协作,推动数字化从 “头部企业” 向 “全行业” 普及。 2. 加速数据流转效率:设计方案、施工图纸、产品模型通过在线链接即时传递,减少 “文件传输 - 版本核对 - 格式转换” 的时间成本,提升数字化流程的周转率。 3. 支撑智能化决策:在线浏览结合云端分析(如测量模型尺寸、检测干涉碰撞),可将 3D 数据转化为决策依据,例如制造业通过在线模型分析零件装配合理性,建筑行业通过在线 BIM 模型优化材料用量。

3MF格式转换为STL格式

3D模型在线转换是一个可以进行3D模型在线处理工具,支持多种3D模型格式进行在线预览和互相转换。通过3D模型在线转换工具,可以轻松实现3MF格式和STL格式之间的转换。

2403_89598061的博客 4560

自偏置电流镜设计实例

自偏置电流镜设计实例 一、概述 ​ 众所周知,电流镜属于模拟电路设计中的一个基本模块,可为其他模块提供偏置电流,例如在放大器中提供偏置电流以形成尾电流源并确定直流偏置点。本文将会介绍一种自偏置的电流镜,从原理出发,并以0.18um的工艺进行设计和仿真。 二、原理 ​ 如图一所示的电路,也称之为Beta-multiply reference电路,其中M2的尺寸是M1的k倍。M3复制M4的电流,M2和M1的漏极电流相同,但是VGS并不相等。其中 VGS=2IμnCoxW/...

aonuanjiang的博客 1万+

LLC混合滞回控制 vs 电压模/电流模:UCC25640x仿真对比与选型指南

在开关电源设计中,LLC谐振变换器的环路补偿是核心难点。传统电压模控制(VMC)和电流模控制(CMC)在LLC拓扑上存在环路增益漂移、动态响应慢等局限。混合滞回控制通过滞回比较器直接调制开关频率,并融合输出电压与谐振腔电流信息,实现了自适应环路增益和快速瞬态响应。该技术显著提升轻载效率与动态性能,适用于高密度适配器、快充及车载充电机等场景。本文基于UCC25640x系列,通过仿真对比三种控制策略,为工程选型与调试提供实践参考。

weixin_33925615的博客 336

3D打印文件格式:STL、OBJ、AMF、3MF

原文地址:http://blog.sina.com.cn/s/blog_58ff53620102w0f4.html 很多人对3D打印的数据格式颇有微词,辛辛苦苦用三维软件设计好的作品,一转换成3D打印格式,基本就从白天鹅变成丑小鸭了,既没有颜色,数据也不完整,形状重叠表面破损那是常有的事儿。 为何大多数3D打印机只能识别STL或OBJ格式的文件呢?这件事情说来话长,就像为什

chenhuakang的博客 1万+

用python将dycom .dcm格式图像转换为nifti .nii

因为发现目前搜索到的多数中文教程并不能正确将FMRI图像正确转换,例如很多用simpleITk的seriesreader的,所以写了一下自己正确转换的方法。因为FMRI是一个4D数据,有时间轴,所以用seriesreader读写出来的图像把时间轴维度给降维了。当然你用SPM12工具的dycom import也是能正确转换的,但是我还是喜欢python这样的,代码直接简单。

qq_41103479的博客 3609
上一篇: 群晖NAS Redis安装避坑指南:套件版vs Docker版性能对比与选择建议
下一篇: 从科学计数法到二进制:图解Float类型精度丢失的全过程(以16777217为例)
pluto
博客等级 码龄25年 46粉丝 1562原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值