1

我有一个 Django Web 应用程序并将其部署到 Elastic Beanstalk 环境中。我也有 numpy-stl 包。我正在尝试从 Amazon S3 存储桶中获取 .stl 文件并将该文件与 stl 包的功能一起使用,但我收到了一个错误,例如'bytes' object has no attribute 'get_mass_properties'.

我的代码是;

s3 = boto3.client('s3')
obj = s3.get_object(Bucket=bucket_name, Key=key)
body = obj['Body'].read()
volume, cog, inertia = body.get_mass_properties()

如何获取 .stl 文件并使用它?

4

2 回答 2

1

假设您正在谈论这种stl文件格式,一旦您从 S3 将其读入 python,您需要一些 python 库来打开它。

快速搜索返回numpy-stl

简单的库,可以快速轻松地处理 STL 文件(以及一般的 3D 对象)。

因此,您可以安装该库并尝试在您正在下载的文件上使用它。

如果您在 lambda 上运行代码(不是写在您的问题中?),那么您必须将该库与您的部署包捆绑在一起,或者为此构建自定义 lambda 层。

于 2020-06-13T22:59:02.837 回答
0

我已经修复如下。

import stl
import boto3
import tempfile

s3 = boto3.resource('s3', region_name=region)
bucket = s3.Bucket(bucket)
obj = bucket.Object(uploadedVolume)
tmp = tempfile.NamedTemporaryFile()
with open(tmp.name, 'wb') as f:
    obj.download_fileobj(f)
    stlMesh = stl.mesh.Mesh.from_file(tmp.name)

volume, cog, inertia = stlMesh.get_mass_properties()
于 2020-06-15T08:00:59.447 回答