pyhon 读取STL文件外观尺寸

一、问题描述

自己在Ubuntu上想直接获取单一零件ST L的外观尺寸大小,现整理了如下直接获取STL文件外观尺寸的脚本

二、使用方法

1. 安装依赖

 pip install numpy-stl

2. 执行脚本

python read_baselink.py

注意脚本内容中读取文件的位置

current_directory = os.getcwd()								# 获取当前脚本位置
file_path = current_directory +"/"+ file_name   # STL 文件存放位置

在这里插入图片描述

read_baselink.py 内容

import numpy as np
from stl import mesh
import os

"""
    Please pre_install numpy-stl
    pip install numpy-stl
    python read_baselink.py
"""

file_name='base_link.STL'
# file_directory='/home/eco/read_stl/meshes/'
# file_path = file_directory + file_name

current_directory = os.getcwd()								# 获取当前脚本位置
file_path = current_directory +"/"+ file_name   # STL 文件存放位置

def get_stl_size(file_path):
    # 加载STL文件
    stl_mesh = mesh.Mesh.from_file(file_path)

    # 获取三维坐标数组
    vertices = stl_mesh.vectors

    # 计算物体的长、宽、高
    x_min = np.min(vertices[:, :, 0])  # x轴方向上的最小值
    x_max = np.max(vertices[:, :, 0])  # x轴方向上的最大值
    y_min = np.min(vertices[:, :, 1])  # y轴方向上的最小值
    y_max = np.max(vertices[:, :, 1])  # y轴方向上的最大值
    z_min = np.min(vertices[:, :, 2])  # z轴方向上的最小值
    z_max = np.max(vertices[:, :, 2])  # z轴方向上的最大值



    return (x_min, x_max), (y_min, y_max), (z_min, z_max)

# 获取STL文件的长、宽、高
baffle_x = 0.030  # 挡板前向距离
baffle_y = 0.015  # 挡板横向距离(单边)

x_range, y_range, z_range = get_stl_size(file_path)
X = x_range[1] - x_range[0] 
Y = y_range[1] - y_range[0] 
Z = z_range[1] - z_range[0] 


# 计算边缘点
LeftFront_x = x_range[1] + baffle_x
LeftFront_y = y_range[0] - baffle_y

LeftBack_x = x_range[0]
LeftBack_y = y_range[0] - baffle_y

RightFront_x = x_range[1] + baffle_x
RightFront_y = y_range[1] + baffle_y

RightBack_x = x_range[0]
RightBack_y = y_range[1] + baffle_y


# 输出结果
# print(f"Model 长、宽、高分别为:{X:.3f}、{Y:.3f}、{Z:.3f} m.")
# print("X 轴方向上的范围: {:.3f} ~ {:.3f} m".format(*x_range))
# print("Y 轴方向上的范围: {:.3f} ~ {:.3f} m".format(*y_range))
# print("Z 轴方向上的范围: {:.3f} ~ {:.3f} m".format(*z_range))
print("footprint: [[{:.3f}, {:.3f}], [{:.3f}, {:.3f}], [{:.3f}, {:.3f}], [{:.3f}, {:.3f}]]"
      .format(LeftFront_x, LeftFront_y,LeftBack_x,LeftBack_y, RightFront_x, RightFront_y, RightBack_x,RightBack_y))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值