如何通过FreeCAD Python脚本实现工程设计全流程自动化:从痛点到解决方案
在现代工程设计流程中,工程师和设计师常常面临着重复劳动、人为错误和效率低下等问题。你是否曾经因为需要手动调整数十个零件的尺寸而感到沮丧?是否因为重复创建相似的工程图而浪费宝贵的设计时间?FreeCAD作为一款开源的3D参数化建模软件,其强大的Python API为解决这些问题提供了可能性。本文将带你探索如何利用FreeCAD Python脚本实现设计流程的自动化,从而提高工作效率、减少错误并释放创造力。
发现设计流程中的自动化机会
识别重复性设计任务
在传统的CAD设计工作中,许多任务具有高度的重复性。以机械零件设计为例,标准件如螺栓、螺母、轴承等的建模过程基本相同,只是尺寸参数有所变化。同样,在建筑设计中,窗户、门等组件的放置和参数设置也存在大量重复操作。这些重复性任务不仅消耗时间,还容易因人为操作而产生错误。
实践价值:通过识别这些重复性任务,我们可以确定自动化的优先级,从而最大化自动化带来的效益。
分析设计流程瓶颈
每个设计团队都有其独特的工作流程,但通常会存在一些共同的瓶颈。例如,在产品设计流程中,从概念设计到详细设计再到工程图生成的转换过程往往需要大量的手动操作;在设计变更时,相关零件和装配体的更新也可能成为瓶颈。通过分析这些瓶颈,我们可以找到最适合自动化的环节。
实践价值:针对瓶颈环节实施自动化,可以显著提升整个设计流程的效率,缩短产品开发周期。
评估自动化可行性
并非所有设计任务都适合自动化。在决定自动化某个任务之前,需要评估其可行性。考虑因素包括:任务的标准化程度、参数化可能性、复杂度以及自动化后的维护成本等。对于高度定制化、每次都需要全新设计的任务,自动化可能不是最佳选择;而对于具有明确规则和参数的任务,自动化则能带来显著收益。
实践价值:合理评估自动化可行性,可以避免在不适合自动化的任务上浪费时间和资源,确保自动化投资能够获得最大回报。
构建FreeCAD自动化解决方案
搭建Python脚本开发环境
要开始FreeCAD自动化脚本开发,首先需要搭建合适的开发环境。FreeCAD内置了Python解释器,你可以直接在FreeCAD的Python控制台中编写和运行脚本。此外,你也可以使用外部Python IDE,如Visual Studio Code,通过安装FreeCAD的Python模块来进行开发。
以下是一个简单的环境测试脚本,用于验证你的FreeCAD Python环境是否配置正确:
import FreeCAD as App
import Part
# 创建一个新文档
doc = App.newDocument("AutomationTest")
# 创建一个简单的立方体
box = Part.makeBox(10, 10, 10)
Part.show(box)
# 保存文档
doc.saveAs("test_automation.FCStd")
App.Console.PrintMessage("自动化环境测试成功!\n")
实践价值:正确配置的开发环境是进行高效脚本开发的基础,能够提高开发效率并减少调试时间。
掌握核心API模块应用
FreeCAD提供了丰富的Python API模块,涵盖了从基础几何创建到复杂装配的各个方面。了解这些模块的功能和使用方法是实现自动化的关键。
主要核心模块包括:
- App模块:提供文档管理、对象创建等基础功能,是FreeCAD的核心模块。
- Part模块:用于创建和操作基础几何形状,如点、线、面、体等。
- PartDesign模块:提供参数化特征建模功能,如拉伸、旋转、倒角等。PartDesign模块源码
- Draft模块:用于2D绘图和基本几何操作,支持批量创建和修改。
- TechDraw模块:用于创建工程图和技术文档。
以下代码示例展示了如何使用Part和PartDesign模块创建一个简单的参数化零件:
import FreeCAD as App
import PartDesign
from FreeCAD import Vector
# 初始化文档
doc = App.newDocument("ParametricPart")
body = doc.addObject('PartDesign::Body', 'Body')
# 创建草图
sketch = body.newObject('Sketcher::SketchObject', 'Sketch')
sketch.Support = (doc.getObject('XY_Plane'), [''])
sketch.MapMode = 'FlatFace'
sketch.addGeometry(Part.Circle(Vector(0, 0, 0), Vector(0, 0, 1), 10))
sketch.addConstraint(Sketcher.Constraint('Radius', 0, 10))
# 创建拉伸特征
pad = body.newObject('PartDesign::Pad', 'Pad')
pad.Profile = sketch
pad.Length = 20
pad.Reversed = False
# 刷新视图
doc.recompute()
实践价值:掌握核心API模块的使用,能够让你灵活应对各种自动化需求,为构建复杂的自动化解决方案奠定基础。
设计参数化建模框架
参数化建模是FreeCAD自动化的核心思想。通过建立参数与模型特征之间的关联,可以实现模型的快速更新和系列化设计。设计一个灵活的参数化建模框架需要考虑以下几个方面:
- 参数定义:明确模型的关键参数,如尺寸、材料、公差等。
- 参数关系:建立参数之间的数学关系,如比例关系、约束条件等。
- 特征创建:根据参数自动创建和修改模型特征。
- 模型更新:实现参数变化时模型的自动更新。
以下是一个简单的参数化建模框架示例:
class ParametricModel:
def __init__(self, doc):
self.doc = doc
self.parameters = {
'length': 100,
'width': 50,
'height': 30,
'hole_diameter': 10,
'hole_position': [25, 25]
}
self.body = None
def set_parameters(self, **kwargs):
for key, value in kwargs.items():
if key in self.parameters:
self.parameters[key] = value
else:
App.Console.PrintWarning(f"未知参数: {key}\n")
def build_model(self):
# 创建主体
self.body = self.doc.addObject('PartDesign::Body', 'ParametricBody')
# 创建基础草图
base_sketch = self.body.newObject('Sketcher::SketchObject', 'BaseSketch')
base_sketch.Support = (self.doc.getObject('XY_Plane'), [''])
base_sketch.MapMode = 'FlatFace'
# 绘制矩形
base_sketch.addGeometry(Part.Rectangle(0, 0, self.parameters['length'], self.parameters['width']))
base_sketch.addConstraint(Sketcher.Constraint('Coincident', 0, 1, -1, 1))
base_sketch.addConstraint(Sketcher.Constraint('Horizontal', 0))
base_sketch.addConstraint(Sketcher.Constraint('Vertical', 1))
# 创建拉伸
pad = self.body.newObject('PartDesign::Pad', 'BasePad')
pad.Profile = base_sketch
pad.Length = self.parameters['height']
# 创建孔
hole_sketch = self.body.newObject('Sketcher::SketchObject', 'HoleSketch')
hole_sketch.Support = (pad, ['Face6'])
hole_sketch.MapMode = 'FlatFace'
hole_sketch.addGeometry(Part.Circle(
Vector(self.parameters['hole_position'][0], self.parameters['hole_position'][1], 0),
Vector(0, 0, 1),
self.parameters['hole_diameter'] / 2
))
hole_sketch.addConstraint(Sketcher.Constraint('Radius', 0, self.parameters['hole_diameter'] / 2))
pocket = self.body.newObject('PartDesign::Pocket', 'Hole')
pocket.Profile = hole_sketch
pocket.Type = 'ThroughAll'
self.doc.recompute()
# 使用示例
doc = App.newDocument("ParametricFrameworkExample")
model = ParametricModel(doc)
model.set_parameters(length=120, width=60, height=35)
model.build_model()
实践价值:一个良好的参数化建模框架能够显著提高设计效率,实现模型的快速迭代和系列化设计,特别适用于标准件库开发和产品系列设计。
实践验证自动化解决方案
实现智能参数化建模系统
智能参数化建模系统是FreeCAD自动化的核心应用之一。通过将设计规则和参数关系编码到脚本中,可以实现模型的自动生成和更新。以下是一个智能参数化齿轮建模的示例:
import FreeCAD as App
import Part
import math
def create_gear(doc, module=2, teeth=20, pressure_angle=20, width=10):
"""
创建参数化齿轮
参数:
doc: FreeCAD文档对象
module: 模数
teeth: 齿数
pressure_angle: 压力角(度)
width: 齿轮宽度
返回:
齿轮对象
"""
# 计算齿轮基本参数
pitch_diameter = module * teeth
addendum = module
dedendum = 1.25 * module
root_diameter = pitch_diameter - 2 * dedendum
outer_diameter = pitch_diameter + 2 * addendum
# 创建齿轮轮廓草图
sketch = doc.addObject('Sketcher::SketchObject', 'GearProfile')
sketch.Support = (doc.getObject('XY_Plane'), [''])
sketch.MapMode = 'FlatFace'
# 齿轮齿形计算 (简化版)
pressure_angle_rad = math.radians(pressure_angle)
base_diameter = pitch_diameter * math.cos(pressure_angle_rad)
tooth_thickness = math.pi * module / 2
# 绘制一个齿的轮廓 (简化)
# 实际应用中需要更复杂的齿形计算
points = []
angle_step = 2 * math.pi / teeth / 2
# 齿顶圆上的点
x1 = outer_diameter / 2 * math.cos(angle_step)
y1 = outer_diameter / 2 * math.sin(angle_step)
# 齿根圆上的点
x2 = root_diameter / 2 * math.cos(angle_step)
y2 = root_diameter / 2 * math.sin(angle_step)
points.append(Vector(x1, y1, 0))
points.append(Vector(x2, y2, 0))
points.append(Vector(x2, -y2, 0))
points.append(Vector(x1, -y1, 0))
points.append(Vector(x1, y1, 0)) # 闭合轮廓
# 添加几何形状
for i in range(len(points)-1):
sketch.addGeometry(Part.LineSegment(points[i], points[i+1]))
# 创建旋转特征
revolve = doc.addObject('PartDesign::Revolution', 'Gear')
revolve.Profile = sketch
revolve.Axis = (doc.getObject('X_Axis'), [''])
revolve.Angle = 360.0
# 创建拉伸特征以获得齿轮宽度
if width > 0:
gear_body = doc.addObject('PartDesign::Body', 'GearBody')
gear_body.addObject(revolve)
pad = gear_body.newObject('PartDesign::Pad', 'GearWidth')
pad.Profile = revolve
pad.Length = width
doc.recompute()
return revolve
# 使用示例
doc = App.newDocument("ParametricGearExample")
gear = create_gear(doc, module=2.5, teeth=24, width=15)
App.Console.PrintMessage(f"已创建齿轮: 模数{2.5}, 齿数{24}, 宽度{15}\n")
实践价值:智能参数化建模系统能够显著减少重复劳动,实现系列化产品的快速设计和修改,特别适用于标准件库开发和产品系列化设计。
开发批量工程图生成工具
工程图生成是产品设计流程中的重要环节,也是一个高度重复的过程。通过自动化脚本,可以实现工程图的批量生成、标注和格式标准化。以下是一个批量工程图生成工具的示例:
import FreeCAD as App
import TechDraw
from TechDraw import TechDrawGui
def create_engineering_drawing(doc, part_object, output_file):
"""
为零件创建标准化工程图
参数:
doc: FreeCAD文档对象
part_object: 要创建工程图的零件对象
output_file: 输出文件路径
"""
# 创建工程图页面
page = doc.addObject('TechDraw::DrawPage', 'Page')
template = doc.addObject('TechDraw::DrawSVGTemplate', 'Template')
template.Template = App.getResourceDir() + 'Mod/TechDraw/Templates/A4_Landscape.svg'
page.Template = template
# 创建三视图
views = []
# 主视图
view_front = doc.addObject('TechDraw::DrawViewPart', 'FrontView')
view_front.Source = part_object
view_front.Direction = (0, 0, 1)
page.addView(view_front)
views.append(view_front)
# 俯视图
view_top = doc.addObject('TechDraw::DrawViewPart', 'TopView')
view_top.Source = part_object
view_top.Direction = (0, 1, 0)
view_top.X = view_front.X
view_top.Y = view_front.Y + 150
page.addView(view_top)
views.append(view_top)
# 侧视图
view_side = doc.addObject('TechDraw::DrawViewPart', 'SideView')
view_side.Source = part_object
view_side.Direction = (1, 0, 0)
view_side.X = view_front.X + 150
view_side.Y = view_front.Y
page.addView(view_side)
views.append(view_side)
# 添加尺寸标注
for view in views:
# 自动标注主要尺寸 (简化版)
# 实际应用中需要更智能的尺寸识别和标注逻辑
TechDrawGui.makeDimension(view, 'HORIZONTAL', App.Vector(0, 0, 0), App.Vector(100, 0, 0))
TechDrawGui.makeDimension(view, 'VERTICAL', App.Vector(0, 0, 0), App.Vector(0, 50, 0))
# 保存工程图
doc.recompute()
App.setActiveDocument(doc.Name)
App.ActiveDocument.ActiveView.saveImage(output_file, 1024, 768, 'White')
App.Console.PrintMessage(f"工程图已保存至: {output_file}\n")
# 使用示例
doc = App.ActiveDocument
if not doc:
doc = App.newDocument("EngineeringDrawingExample")
# 创建一个简单零件
box = doc.addObject('Part::Box', 'ExamplePart')
box.Length = 100
box.Width = 50
box.Height = 30
doc.recompute()
# 创建工程图
create_engineering_drawing(doc, box, "example_drawing.png")
实践价值:批量工程图生成工具能够显著减少工程图制作时间,确保文档格式的一致性,降低人为错误,特别适用于需要生成大量工程图的产品设计项目。
构建自动化装配系统
装配是复杂产品设计中的关键环节,涉及多个零件的定位、约束和干涉检查。通过自动化脚本,可以实现装配体的自动构建、约束添加和干涉检查。以下是一个自动化装配系统的示例:
import FreeCAD as App
import Part
import Assembly
def create_assembly(doc, parts):
"""
创建自动化装配
参数:
doc: FreeCAD文档对象
parts: 零件列表,每个零件是一个包含'object'和'placement'的字典
返回:
装配对象
"""
# 创建装配对象
assembly = doc.addObject('Assembly::Assembly', 'Assembly')
# 添加零件到装配
for part in parts:
# 创建零件的引用
part_ref = assembly.addObject(part['object'])
# 设置零件位置
part_ref.Placement = part['placement']
# 添加约束 (简化版)
# 实际应用中需要根据零件特征添加适当的约束
if 'constraints' in part:
for constraint in part['constraints']:
# 创建约束对象
constraint_obj = doc.addObject('Assembly::Constraint', f"Constraint_{len(assembly.Constraints)}")
constraint_obj.Type = constraint['type']
constraint_obj.Object1 = constraint['object1']
constraint_obj.SubElement1 = constraint['subelement1']
constraint_obj.Object2 = constraint['object2']
constraint_obj.SubElement2 = constraint['subelement2']
# 添加约束到装配
assembly.addConstraint(constraint_obj)
# 运行装配求解
assembly.solve()
doc.recompute()
return assembly
# 使用示例
doc = App.newDocument("AutomatedAssemblyExample")
# 创建几个简单零件
part1 = doc.addObject('Part::Box', 'Part1')
part1.Length = 100
part1.Width = 50
part1.Height = 10
part2 = doc.addObject('Part::Box', 'Part2')
part2.Length = 80
part2.Width = 40
part2.Height = 20
# 定义零件位置和约束
parts = [
{
'object': part1,
'placement': App.Placement(App.Vector(0, 0, 0), App.Rotation()),
},
{
'object': part2,
'placement': App.Placement(App.Vector(10, 5, 10), App.Rotation()),
'constraints': [
{
'type': 'Mate',
'object1': part1,
'subelement1': 'Face6',
'object2': part2,
'subelement2': 'Face1'
},
{
'type': 'Align',
'object1': part1,
'subelement1': 'Edge1',
'object2': part2,
'subelement2': 'Edge1'
}
]
}
]
# 创建装配
assembly = create_assembly(doc, parts)
App.Console.PrintMessage("装配完成!\n")
实践价值:自动化装配系统能够显著提高复杂产品的装配效率,减少装配错误,简化设计变更过程,特别适用于大型机械产品的设计和开发。
开发设计质量自动检查工具
设计质量检查是确保产品设计符合规范和要求的重要环节。通过自动化脚本,可以实现设计规则的自动检查和质量报告的生成。以下是一个设计质量自动检查工具的示例:
import FreeCAD as App
import Part
class DesignQualityChecker:
def __init__(self, doc):
self.doc = doc
self.issues = []
def check_geometry(self, part_object):
"""检查几何完整性"""
shape = part_object.Shape
# 检查是否为有效形状
if not shape.isValid():
self.issues.append(f"零件 {part_object.Name} 包含无效几何")
# 检查非流形边
non_manifold_edges = shape.checkNonManifoldEdges()
if non_manifold_edges:
self.issues.append(f"零件 {part_object.Name} 包含 {len(non_manifold_edges)} 个非流形边")
# 检查重复面
duplicate_faces = shape.checkDuplicateFaces()
if duplicate_faces:
self.issues.append(f"零件 {part_object.Name} 包含 {len(duplicate_faces)} 个重复面")
# 检查自交
if shape.hasSelfIntersections():
self.issues.append(f"零件 {part_object.Name} 存在自交几何")
def check_dimensions(self, part_object, min_size=0.1, max_size=1000):
"""检查尺寸是否在合理范围内"""
shape = part_object.Shape
bbox = shape.BoundBox
# 检查最小尺寸
if bbox.XLength < min_size or bbox.YLength < min_size or bbox.ZLength < min_size:
self.issues.append(f"零件 {part_object.Name} 尺寸过小: {bbox.XLength}x{bbox.YLength}x{bbox.ZLength}")
# 检查最大尺寸
if bbox.XLength > max_size or bbox.YLength > max_size or bbox.ZLength > max_size:
self.issues.append(f"零件 {part_object.Name} 尺寸过大: {bbox.XLength}x{bbox.YLength}x{bbox.ZLength}")
def check_material(self, part_object):
"""检查材料是否已指定"""
if not hasattr(part_object, 'Material') or not part_object.Material:
self.issues.append(f"零件 {part_object.Name} 未指定材料")
def run_full_check(self):
"""对文档中所有零件运行完整检查"""
self.issues = []
for obj in self.doc.Objects:
if hasattr(obj, 'Shape') and isinstance(obj.Shape, Part.Shape):
self.check_geometry(obj)
self.check_dimensions(obj)
self.check_material(obj)
return self.generate_report()
def generate_report(self):
"""生成检查报告"""
if not self.issues:
return "设计质量检查通过,未发现问题。"
report = "设计质量检查报告:\n"
report += "=" * 40 + "\n"
for i, issue in enumerate(self.issues, 1):
report += f"{i}. {issue}\n"
return report
# 使用示例
doc = App.ActiveDocument
if not doc:
doc = App.newDocument("DesignQualityCheckExample")
# 创建一个有潜在问题的零件
problem_part = doc.addObject('Part::Box', 'ProblemPart')
problem_part.Length = 0.05 # 尺寸过小
doc.recompute()
# 运行质量检查
checker = DesignQualityChecker(doc)
report = checker.run_full_check()
App.Console.PrintMessage(report)
实践价值:设计质量自动检查工具能够在设计过程早期发现潜在问题,减少后期修改成本,确保产品设计符合规范要求,提高产品质量。
实现外部数据集成方案
在实际工程设计中,设计参数和数据 often 来自外部系统,如Excel表格、数据库或PLM系统。通过自动化脚本,可以实现外部数据与FreeCAD模型的无缝集成。以下是一个从CSV文件导入参数并更新模型的示例:
import FreeCAD as App
import csv
from io import StringIO
def import_parameters_from_csv(csv_data):
"""从CSV数据导入参数"""
parameters = {}
reader = csv.DictReader(StringIO(csv_data))
for row in reader:
try:
# 假设CSV格式为: parameter_name,value,description
param_name = row['parameter_name']
param_value = float(row['value'])
parameters[param_name] = param_value
except (KeyError, ValueError) as e:
App.Console.PrintWarning(f"导入参数时出错: {e}\n")
return parameters
def update_model_from_parameters(model, parameters):
"""根据参数更新模型"""
for param_name, param_value in parameters.items():
if hasattr(model, param_name):
setattr(model, param_name, param_value)
App.Console.PrintMessage(f"更新参数: {param_name} = {param_value}\n")
else:
App.Console.PrintWarning(f"模型中不存在参数: {param_name}\n")
# 使用示例
doc = App.newDocument("DataIntegrationExample")
# 创建一个简单的参数化模型
box = doc.addObject('Part::Box', 'ParameterizedBox')
box.Length = 100
box.Width = 50
box.Height = 30
doc.recompute()
# 示例CSV数据
csv_data = """parameter_name,value,description
Length,150,盒子长度
Width,75,盒子宽度
Height,40,盒子高度
"""
# 从CSV导入参数
parameters = import_parameters_from_csv(csv_data)
# 更新模型
update_model_from_parameters(box, parameters)
doc.recompute()
App.Console.PrintMessage("模型已根据外部数据更新完成!\n")
实践价值:外部数据集成方案能够实现设计数据的集中管理和自动更新,减少手动数据输入错误,提高设计数据的一致性和可追溯性。
升华FreeCAD自动化的价值
提升设计效率与质量
FreeCAD Python自动化脚本的应用,能够显著提升设计效率和质量。通过自动化重复性任务,设计师可以将更多时间和精力投入到创造性的设计工作中。同时,自动化减少了人为错误,提高了设计的一致性和可靠性。
实践价值:设计效率的提升直接转化为产品开发周期的缩短和成本的降低,而设计质量的提高则减少了后期修改和制造过程中的问题。
实现定制化工作流程
每个设计团队都有其独特的工作流程和需求。FreeCAD的Python API允许团队根据自身需求定制自动化工具和工作流程,从而最大化团队的工作效率。无论是特定行业的设计规范,还是公司内部的设计流程,都可以通过定制化脚本来实现自动化。
实践价值:定制化工作流程能够使设计过程更加符合团队的实际需求,提高团队协作效率,减少沟通成本。
促进跨学科协作
FreeCAD的自动化脚本不仅可以在单一学科内提高效率,还可以促进不同学科之间的协作。例如,机械设计师、电气工程师和结构分析师可以通过共享参数化模型和自动化工具,实现更紧密的协作和更高效的设计迭代。
实践价值:跨学科协作的改善能够减少设计冲突,提高产品整体性能,加速产品开发过程。
推动数字化转型
FreeCAD的Python自动化功能是推动工程设计数字化转型的重要工具。通过将设计知识和规则编码到脚本中,企业可以构建自己的设计知识库和自动化工具库,实现设计知识的积累和复用。这种数字化转型不仅提高了当前设计效率,还为未来的人工智能设计和 generative design 奠定了基础。
实践价值:数字化转型能够使企业在激烈的市场竞争中保持领先地位,提高创新能力和响应速度。
赋能开源生态系统
作为一款开源软件,FreeCAD的自动化脚本不仅服务于单个用户或企业,还为整个开源生态系统做出贡献。用户可以分享自己开发的自动化工具和脚本,丰富FreeCAD的功能,促进社区的共同发展。这种开源协作模式加速了技术创新和知识传播。
实践价值:开源生态系统的发展为用户提供了更多的工具和资源选择,同时也为企业提供了降低软件成本的途径。
结语
FreeCAD Python自动化脚本为工程设计带来了革命性的变化。通过发现设计流程中的自动化机会,构建定制化的自动化解决方案,并在实践中不断验证和优化,设计师和工程师可以显著提高工作效率,改善设计质量,释放创造力。从智能参数化建模到批量工程图生成,从自动化装配到设计质量检查,再到外部数据集成,FreeCAD的自动化能力正在改变传统的设计方式。
随着数字化转型的深入和开源生态系统的发展,FreeCAD Python自动化脚本将发挥越来越重要的作用。无论是个人设计师还是大型企业,都可以通过掌握这一强大工具,在激烈的市场竞争中获得优势。现在就开始探索FreeCAD的自动化世界,开启你的高效设计之旅吧!
通过本文介绍的方法和示例,你已经了解了FreeCAD Python自动化的基本概念和应用。接下来,你可以根据自己的具体需求,进一步探索和开发更复杂的自动化解决方案。记住,自动化的最终目标是让你专注于真正重要的创新工作,而不是被繁琐的操作所困扰。祝你在FreeCAD自动化之旅中取得成功!
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00
jiuwenclawJiuwenClaw 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。Python0239- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
AtomGit城市坐标计划AtomGit 城市坐标计划开启!让开源有坐标,让城市有星火。致力于与城市合伙人共同构建并长期运营一个健康、活跃的本地开发者生态。01
electerm开源终端/ssh/telnet/serialport/RDP/VNC/Spice/sftp/ftp客户端(linux, mac, win)JavaScript00



