CadQuery CQGI接口详解:脚本执行与交互式建模指南

CadQuery CQGI接口详解:脚本执行与交互式建模指南

cadquery A python parametric CAD scripting framework based on OCCT cadquery 项目地址: https://gitcode.com/gh_mirrors/ca/cadquery

什么是CQGI

CadQuery Gateway Interface(CQGI)是CadQuery提供的一套标准化接口规范,它定义了脚本执行环境与CadQuery脚本之间的交互方式。作为一款参数化CAD建模库,CadQuery主要通过编程方式创建3D模型,而CQGI则为各种执行环境(如IDE、文档系统等)提供了统一的脚本执行框架。

CQGI的核心价值

传统CAD建模工具通常采用图形界面交互方式,而CadQuery则通过代码实现建模过程。CQGI在这两者之间架起了桥梁,使得:

  1. 开发者可以创建各种前端界面来执行CadQuery脚本
  2. 用户可以通过更友好的方式与参数化模型交互
  3. 教学文档能够实时展示代码与模型的对应关系

脚本编写规范

在CQGI兼容环境中编写脚本时,需要遵循以下约定:

基本结构

脚本无需显式导入cadquery模块(已自动导入为cq),但必须至少调用一次show_object()方法来输出模型。典型结构如下:

# 创建基础几何体
base = cq.Workplane("XY").box(10, 20, 5)

# 添加特征
with_hole = base.faces(">Z").workplane().hole(3)

# 输出最终模型
show_object(with_hole)

调试输出

CQGI提供了debug()方法用于输出中间建模状态,这对复杂模型的调试非常有帮助:

# 创建初始工作平面
wp = cq.Workplane("XY")

# 调试输出工作平面(黄色显示)
debug(wp, {"color": "yellow"})

# 创建草图
rect = wp.rect(5, 10)

# 调试输出草图(红色显示)
debug(rect, {"color": "red"})

# 拉伸并输出最终模型
show_object(rect.extrude(2))

调试信息通常会在执行环境中以不同颜色或图层显示,帮助开发者理解建模过程。

参数化设计

CQGI支持通过外部参数控制模型,这是实现参数化设计的关键:

脚本中的参数定义

# 这些顶层变量将被识别为可调整参数
length = 10.0
width = 5.0
thickness = 2.0
has_hole = True

# 使用参数构建模型
result = cq.Workplane("XY").box(length, width, thickness)

if has_hole:
    result = result.faces(">Z").workplane().hole(1.5)

show_object(result)

参数类型系统

CQGI自动识别参数类型并提供了丰富的元数据支持:

  • 数值类型(int/float):可设置范围约束
  • 布尔类型:自动转换为复选框控件
  • 字符串:支持枚举值限制

执行环境集成

开发执行环境(如自定义CAD工具)时,可以通过以下方式集成CQGI:

基本执行流程

from cadquery import cqgi

# 解析用户脚本
script_content = open("model.py").read()
model = cqgi.parse(script_content)

# 获取脚本参数信息
parameters = model.metadata.parameters
for name, param in parameters.items():
    print(f"参数 {name}: 类型 {param.paramType}, 默认值 {param.default_value}")

# 使用自定义参数执行脚本
build_result = model.build(build_parameters={
    "length": 15.0,
    "has_hole": False
})

# 处理结果
if build_result.success:
    for i, result in enumerate(build_result.results):
        print(f"获取到模型 {i}")
else:
    print(f"执行失败: {build_result.exception}")

高级控制选项

build()方法支持多种构建选项:

build_result = model.build(
    build_parameters={"param1": "new_value"},
    build_options={
        "timeout": 30,  # 超时设置(秒)
        "tessellation_tolerance": 0.1,  # 曲面细分精度
        "angular_tolerance": 0.1  # 角度公差(弧度)
    }
)

典型应用场景

1. 自动化模型导出

import cadquery as cq
import cadquery.cqgi as cqgi

# 加载并执行脚本
model = cqgi.parse(open("parametric_design.py").read())
result = model.build()

# 导出所有结果模型
if result.success:
    for i, obj in enumerate(result.results):
        cq.exporters.export(obj.shape, f"output_{i}.step")
        print(f"成功导出模型 {i}")
else:
    print("执行错误:", result.exception)

2. 交互式参数调整工具

可以基于CQGI开发图形界面,实时调整参数并预览模型变化,非常适合产品配置器类应用。

3. 教学文档集成

在技术文档中嵌入可交互的CadQuery示例,读者既能查看代码又能看到实时渲染的模型。

最佳实践建议

  1. 参数命名:使用有意义的参数名并添加描述
  2. 参数范围:为数值参数设置合理的最小/最大值
  3. 模块化设计:复杂模型拆分为多个show_object调用
  4. 错误处理:在脚本中添加参数校验逻辑
  5. 调试输出:善用debug()方法辅助开发

未来发展

CQGI仍在持续演进中,未来可能加入:

  • 更完善的沙箱安全机制
  • 参数依赖关系定义
  • 模型构建性能分析
  • 多模型装配支持

通过CQGI,CadQuery实现了从纯代码建模到交互式设计的跨越,为开发者提供了更灵活的集成方案,也为最终用户带来了更好的使用体验。无论是开发自定义CAD工具,还是创建参数化模型库,CQGI都是值得深入掌握的核心接口。

cadquery A python parametric CAD scripting framework based on OCCT cadquery 项目地址: https://gitcode.com/gh_mirrors/ca/cadquery

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈昊和

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值