命令行工具使用
第11章 命令行工具使用
11.1 命令行工具概述
11.1.1 solvespace-cli简介
SolveSpace提供命令行工具 solvespace-cli,用于批量处理和自动化操作。
主要功能
- 批量导出各种格式
- 自动化测试
- 持续集成
- 脚本化工作流
11.1.2 构建命令行工具
# 仅构建CLI工具
mkdir build
cd build
cmake .. -DENABLE_GUI=OFF -DENABLE_CLI=ON
make
# 生成文件: build/bin/solvespace-cli
或同时构建GUI和CLI
cmake .. -DENABLE_GUI=ON -DENABLE_CLI=ON
make
11.1.3 安装位置
Linux
- 系统安装:
/usr/bin/solvespace-cli - 本地构建:
build/bin/solvespace-cli
Windows
- 安装目录:
C:\Program Files\SolveSpace\solvespace-cli.exe
macOS
- 应用包内:
SolveSpace.app/Contents/MacOS/solvespace-cli
11.2 基本用法
11.2.1 命令格式
solvespace-cli <命令> [选项] <输入文件> [输出文件]
11.2.2 帮助信息
# 显示帮助
solvespace-cli --help
# 显示版本
solvespace-cli --version
11.2.3 通用选项
--chord-tol=<值> 设置弦公差 (mm)
--verbose 详细输出
--quiet 静默模式
11.3 导出命令
11.3.1 导出三角网格
导出STL
solvespace-cli export-mesh input.slvs output.stl
# 指定弦公差
solvespace-cli export-mesh --chord-tol=0.01 input.slvs output.stl
导出OBJ
solvespace-cli export-mesh input.slvs output.obj
11.3.2 导出精确几何
导出STEP
solvespace-cli export-step input.slvs output.step
11.3.3 导出2D视图
导出PDF
solvespace-cli export-view input.slvs output.pdf
指定视图方向
# XY平面视图(俯视)
solvespace-cli export-view --view=xy input.slvs output.pdf
# YZ平面视图(右视)
solvespace-cli export-view --view=yz input.slvs output.pdf
# ZX平面视图(前视)
solvespace-cli export-view --view=zx input.slvs output.pdf
导出SVG
solvespace-cli export-view input.slvs output.svg
导出DXF
solvespace-cli export-view input.slvs output.dxf
11.3.4 导出剖面
solvespace-cli export-section input.slvs output.dxf
11.3.5 导出缩略图
# 导出PNG图像
solvespace-cli thumbnail input.slvs output.png
# 指定尺寸
solvespace-cli thumbnail --size=512 input.slvs output.png
# 指定视图
solvespace-cli thumbnail --view=iso input.slvs output.png
11.4 分析命令
11.4.1 检查文件
# 检查文件完整性
solvespace-cli check input.slvs
输出示例:
文件: input.slvs
组数: 5
参数: 127
实体: 45
约束: 32
状态: OK
自由度: 0
11.4.2 测量信息
# 显示测量信息
solvespace-cli measure input.slvs
输出:
体积: 12500.00 mm³
表面积: 3400.00 mm²
边界框: (0, 0, 0) 到 (50, 50, 10)
11.5 批处理脚本
11.5.1 批量导出STL
Bash脚本
#!/bin/bash
# export_all_stl.sh
INPUT_DIR="./designs"
OUTPUT_DIR="./exports"
mkdir -p "$OUTPUT_DIR"
for file in "$INPUT_DIR"/*.slvs; do
name=$(basename "$file" .slvs)
echo "导出: $name"
solvespace-cli export-mesh "$file" "$OUTPUT_DIR/${name}.stl"
done
echo "完成!"
Windows批处理
@echo off
REM export_all_stl.bat
setlocal enabledelayedexpansion
set INPUT_DIR=.\designs
set OUTPUT_DIR=.\exports
if not exist "%OUTPUT_DIR%" mkdir "%OUTPUT_DIR%"
for %%f in (%INPUT_DIR%\*.slvs) do (
set name=%%~nf
echo 导出: !name!
solvespace-cli export-mesh "%%f" "%OUTPUT_DIR%\!name!.stl"
)
echo 完成!
11.5.2 批量生成缩略图
#!/bin/bash
# generate_thumbnails.sh
for file in *.slvs; do
name=$(basename "$file" .slvs)
solvespace-cli thumbnail --size=256 "$file" "${name}_thumb.png"
done
11.5.3 多格式导出
#!/bin/bash
# export_multi_format.sh
INPUT="$1"
NAME=$(basename "$INPUT" .slvs)
echo "导出 $NAME 为多种格式..."
# 3D格式
solvespace-cli export-mesh "$INPUT" "${NAME}.stl"
solvespace-cli export-step "$INPUT" "${NAME}.step"
solvespace-cli export-mesh "$INPUT" "${NAME}.obj"
# 2D视图
solvespace-cli export-view --view=xy "$INPUT" "${NAME}_top.pdf"
solvespace-cli export-view --view=zx "$INPUT" "${NAME}_front.pdf"
solvespace-cli export-view --view=yz "$INPUT" "${NAME}_right.pdf"
# 缩略图
solvespace-cli thumbnail --view=iso "$INPUT" "${NAME}_preview.png"
echo "完成!"
11.5.4 条件导出
#!/bin/bash
# conditional_export.sh
for file in *.slvs; do
# 检查文件状态
result=$(solvespace-cli check "$file" 2>&1)
if echo "$result" | grep -q "状态: OK"; then
echo "OK: $file - 导出中"
name=$(basename "$file" .slvs)
solvespace-cli export-mesh "$file" "${name}.stl"
else
echo "错误: $file - 跳过"
fi
done
11.6 持续集成
11.6.1 GitHub Actions示例
# .github/workflows/export-models.yml
name: Export CAD Models
on:
push:
paths:
- 'designs/*.slvs'
jobs:
export:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install SolveSpace
run: |
sudo snap install solvespace
- name: Export Models
run: |
mkdir -p exports
for file in designs/*.slvs; do
name=$(basename "$file" .slvs)
solvespace-cli export-mesh "$file" "exports/${name}.stl"
done
- name: Upload Artifacts
uses: actions/upload-artifact@v3
with:
name: stl-exports
path: exports/*.stl
11.6.2 GitLab CI示例
# .gitlab-ci.yml
stages:
- export
export-models:
stage: export
image: ubuntu:latest
before_script:
- apt-get update && apt-get install -y snapd
- snap install solvespace
script:
- mkdir -p exports
- |
for file in designs/*.slvs; do
name=$(basename "$file" .slvs)
solvespace-cli export-mesh "$file" "exports/${name}.stl"
done
artifacts:
paths:
- exports/
11.6.3 构建验证
#!/bin/bash
# verify_designs.sh
# 用于CI中验证设计文件
exit_code=0
for file in *.slvs; do
echo "检查: $file"
result=$(solvespace-cli check "$file" 2>&1)
if echo "$result" | grep -q "状态: OK"; then
echo " ✓ 通过"
else
echo " ✗ 失败"
echo "$result"
exit_code=1
fi
done
exit $exit_code
11.7 高级用法
11.7.1 管道处理
# 列出所有设计文件的信息
find . -name "*.slvs" -exec solvespace-cli check {} \;
# 筛选有问题的文件
for f in *.slvs; do
solvespace-cli check "$f" 2>&1 | grep -q "错误" && echo "$f"
done
11.7.2 参数化导出
虽然CLI不直接支持修改参数,但可以通过脚本预处理:
#!/bin/bash
# 使用sed修改slvs文件中的参数值(需谨慎)
# 注意:直接修改slvs文件需要理解其格式
# 更安全的方法是使用Python绑定
# 示例:仅用于简单的数值替换
# sed 's/val=50\.000000/val=60.000000/g' input.slvs > modified.slvs
# solvespace-cli export-mesh modified.slvs output.stl
11.7.3 并行处理
#!/bin/bash
# parallel_export.sh - 使用GNU parallel进行并行导出
# 安装: apt install parallel
find . -name "*.slvs" | parallel -j4 '
name=$(basename {} .slvs)
solvespace-cli export-mesh {} "{.}.stl"
echo "完成: $name"
'
11.7.4 日志记录
#!/bin/bash
# export_with_log.sh
LOG_FILE="export.log"
echo "导出开始: $(date)" > "$LOG_FILE"
for file in *.slvs; do
name=$(basename "$file" .slvs)
echo "处理: $name" >> "$LOG_FILE"
start_time=$(date +%s)
result=$(solvespace-cli export-mesh "$file" "${name}.stl" 2>&1)
end_time=$(date +%s)
duration=$((end_time - start_time))
echo " 耗时: ${duration}秒" >> "$LOG_FILE"
if [ $? -eq 0 ]; then
echo " 状态: 成功" >> "$LOG_FILE"
else
echo " 状态: 失败" >> "$LOG_FILE"
echo " 错误: $result" >> "$LOG_FILE"
fi
done
echo "导出完成: $(date)" >> "$LOG_FILE"
11.8 常见问题
11.8.1 命令找不到
问题: solvespace-cli: command not found
解决:
# 检查安装路径
which solvespace-cli
# 如果使用snap安装
snap run solvespace-cli
# 或添加到PATH
export PATH=$PATH:/snap/bin
11.8.2 导出失败
问题: 导出返回错误
诊断:
# 使用详细模式
solvespace-cli --verbose export-mesh input.slvs output.stl
# 先检查文件
solvespace-cli check input.slvs
11.8.3 权限问题
问题: 无法写入输出文件
解决:
# 检查目录权限
ls -la output_dir/
# 确保目录存在
mkdir -p output_dir/
# 检查磁盘空间
df -h
11.8.4 内存不足
问题: 大文件导出时内存不足
解决:
# 增加弦公差减少多边形数量
solvespace-cli export-mesh --chord-tol=0.5 large_file.slvs output.stl
# 或分批处理
11.9 命令参考
11.9.1 完整命令列表
solvespace-cli <命令> [选项] <参数>
命令:
export-mesh 导出三角网格 (STL/OBJ)
export-step 导出STEP格式
export-view 导出2D视图 (PDF/SVG/DXF)
export-section 导出剖面
thumbnail 生成缩略图
check 检查文件
measure 测量信息
选项:
--chord-tol=<mm> 弦公差
--view=<方向> 视图方向 (xy/yz/zx/iso)
--size=<像素> 图像尺寸
--verbose 详细输出
--quiet 静默模式
--help 显示帮助
--version 显示版本
11.10 总结
本章介绍了SolveSpace命令行工具的使用:
- 概述: 工具功能、构建、安装
- 基本用法: 命令格式、帮助、选项
- 导出命令: 网格、精确几何、2D视图、缩略图
- 分析命令: 检查、测量
- 批处理: Shell脚本、多格式导出
- 持续集成: GitHub Actions、GitLab CI
- 高级用法: 管道、并行、日志
- 问题排查: 常见问题解决
下一章将介绍C语言库API的详细使用。
导航
- 上一章: 第10章 - 约束求解器原理
- 下一章: 第12章 - C语言库API详解

浙公网安备 33010602011771号