Python实现管线建模 - 3.同心变径管

news2024/10/6 9:04:00

        往期回顾

Python实现管线建模 || 1.圆直管、方管icon-default.png?t=N7T8https://blog.csdn.net/Xxy9426/article/details/138836778?spm=1001.2014.3001.5501

  对依赖库的补充  

        随着后续内容的深入,我发现单纯靠trimesh库已经无法完成后续的建模(涉及到多个几何体拼接或者是创建较复杂的几何体的情况单单用trimesh铁定是搞不定的),所以需要使用 cmd

pip install trimesh[all] 

来安装  trimesh 及其所有必要依赖库 。 主要包括:

numpy:用于数值计算的基础库。

scipy:提供了额外的科学计算功能。

networkx:用于图和网络分析。

pyglet:用于 OpenGL 的图形库。

shapely:用于几何对象的创建和操作。

rtree:用于空间索引和查询。

Pillow:Python Imaging Library,处理图像文件。

lxml:用于解析和处理 XML 和 HTML。

assimp:Open Asset Import Library,用于读取多种 3D 文件格式。

pyrender:用于渲染三维场景。

        变径管件指的是用于连接不同直径管道的管件,主要用于管道系统中从较大管径的管道过渡到较小管径的管道(或相反)。变径管线在城市管网中有着广泛应用,一般来说是特征点当中的一类。通常出现在流量变化、压力调整或设备连接的场景中。

        根据管件形态的不同,可以将其分为两种类型:

        1.同心变径管:这种变径管的中心轴线是相同的,通常用于垂直或水平管道。

        2.偏心变径管:这种变径管的其中一侧是平的,通常用于水平管道,以避免积水。

        咱们把变径管的内容拆分成两篇文章,今天我们先来进行同心变径管的建模(偏心的我还没搞明白)。同心变径管本质上是一边粗一边细的圆台,形状比较规矩,所以建模流程上比较简单。

        上代码~

import trimesh
import numpy as np

def create_tapered_cylinder(radius_base=0.5, radius_top=1.5, height=3.0, segments=32):
    """
    创建一个圆台形状的三维模型。
    参数:
    radius_base: 圆台底部半径,默认为0.5。
    radius_top: 圆台顶部半径,默认为1.5。
    height: 圆台的高度,默认为3.0。
    segments: 圆台侧面的分段数,默认为32。
    
    返回:
    cylinder_mesh: 圆台的三维网格模型。
    """
    # 创建圆台的底部和顶部圆
    theta = np.linspace(0, 2 * np.pi, segments)  # 生成从0到2π的等差数列,用于计算圆的点
    base_circle = np.column_stack((np.cos(theta) * radius_base, np.sin(theta) * radius_base, np.zeros_like(theta)))  # 底部圆的坐标
    top_circle = np.column_stack((np.cos(theta) * radius_top, np.sin(theta) * radius_top, np.full_like(theta, height)))  # 顶部圆的坐标
    
    # 将底部和顶部圆的坐标合并,形成圆台的顶点
    vertices = np.vstack([base_circle, top_circle])

    # 定义圆台的面
    faces = []
    for i in range(segments - 1):  # 循环创建侧面的面
        faces.append([i, i + 1, i + segments])  # 定义侧面的三角形面
        faces.append([i + 1, i + 1 + segments, i + segments])
    # 闭合圆台的底部和顶部,形成完整的圆台形状
    faces.append([segments - 1, 0, 2 * segments - 1])
    faces.append([0, segments, 2 * segments - 1])

    # 使用trimesh库创建三维网格模型
    cylinder_mesh = trimesh.Trimesh(vertices=vertices, faces=faces)

    return cylinder_mesh

# 创建圆台模型
tapered_cylinder = create_tapered_cylinder()

# 导出圆台模型到OBJ文件
tapered_cylinder.export('output/tapered_cylinder.obj')

        之后本系列文章会继续更新偏心变径管(等我学会、三通、四通、法兰结构等等管线的建模。需要的朋友可以点点关注不迷路~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1830905.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Prometheus+Grafana监控MySQL

一、准备 grafana服务器:192.168.48.136Prometheus服务器:192.168.48.136被监控服务器:192.168.48.134、192.168.48.135查看时间是否同步 二、安装prometheus server 【2.1】安装 # 解压安装包 tar -zxvf prometheus-2.52.0.linux-amd64.t…

安卓删除文件恢复,3个技巧轻松解决,让你的数据失而复得

如今,手机数据的重要性不言而喻。无论是工作文档、个人照片还是其他珍贵的资料,一旦丢失,都可能带来不小的困扰。而当我们不小心删除了手机中的文件时,焦虑和无助感更加强烈。但幸运的是,随着技术的不断进步&#xff0…

Unity接入PS5手柄和Xbox手柄以及Android平台的(以及不同平台分析)

Unity接入PS5手柄和Xbox手柄以及Android平台的(以及不同平台分析) 介绍Unity手柄小知识PC端和编辑器上的摇杆事件和滑动事件PS5手柄Xbox手柄北通手柄 安卓环境下(安卓手机或者安卓模拟器)PS5手柄Xbox手柄北通手柄 总结 介绍 最近…

高中数学:数列-等比数列

一、概念 二、通项公式 1、与函数的关系 类似一个指数函数 2、重要性质 三、求和公式 错位相减法 四、练习 例题1 例题2

基于机器学习的变频器故障诊断方法(MATLAB,Python)

变频器故障数据由MATLAB Simulink生成。 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from sklearn.neighbors import KNeighborsClassifier from sklearn.svm import SVC from sklearn.ensemble import RandomForestClass…

折叠手机鼻祖倒下了,折叠屏手机或完蛋,苹果早有先见之明

柔宇即将倒下,这家率先开发出折叠屏技术的企业未能挽救它自己,而对于折叠手机行业来说,这么多年过去,折叠手机也仍然是绝对的少数派,或许折叠手机也快要寿终正寝了。 柔宇开发的折叠手机为外折叠,弯曲部分无…

【UIDynamic-动力学-UICollisionBehavior-碰撞行为-与引用View碰撞-与另一个item发生碰撞 Objective-C语言】

一、接下来,我们来说这个碰撞啊, 1.把之前的代码备份一份,改个名字,叫做“02-碰撞-与引用View碰撞” 首先呢,把重力的这些属性,先删了, 让它先有重力,先command + R, 当我们点击屏幕的时候,它有重力,所以自然会往下落, 但是呢,好像感觉,超出了控制器的View了以后…

React+TS前台项目实战(九)-- 全局常用组件弹窗Dialog封装

文章目录 前言Dialog公共弹窗组件1. 功能分析2. 代码详细注释3. 使用方式4. 效果展示 总结 前言 今天这篇主要讲全局公共弹窗Dialog组件封装,将用到上篇封装的模态框Modal组件。有时在前台项目中,偶尔要用到一两个常用的组件,如 弹窗&#x…

建筑工程软件Revit中复杂大模型如何实现Web端轻量化?| HOOPS技术应用

建筑信息模型( BIM)技术在建筑工程中扮演着越来越重要的角色,而Autodesk Revit作为主流的BIM软件,被广泛应用于设计、施工和管理。然而,Revit生成的复杂大模型常常由于数据量庞大而难以直接在Web端展示和操作。这时&am…

爬虫初学篇——看完这些还怕自己入门不了?

初次学习爬虫,知识笔记小分享 学scrapy框架可看:孤寒者博主的【Python爬虫必备—>Scrapy框架快速入门篇——上】 目录🌟 一、🍉基础知识二、🍉http协议:三、🍉解析网页(1) xpath的用…

分类预测 | Matlab实现GWO-CNN-SVM灰狼冰算法优化卷积支持向量机分类预测

分类预测 | Matlab实现GWO-CNN-SVM灰狼冰算法优化卷积支持向量机分类预测 目录 分类预测 | Matlab实现GWO-CNN-SVM灰狼冰算法优化卷积支持向量机分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现GWO-CNN-SVM灰狼冰算法优化卷积支持向量机分类预测&…

java之sql注入审计

1 基础环境搭建 1.1 mysql数据库搭建 phpStudy是一个PHP调试环境的程序集成包,PHPMysqlApache。 通过phpstduy下载与安装指 定版本的mysql数据库【可以同时下载多个版本,便于应对不对的系统及复现漏洞便捷切换多个版本】 完成下载后,启动…

无人机比赛有哪些?

无人机比赛项目可是多种多样,精彩纷呈呢! 常见的比赛项目包括S形绕桩赛、平台起降赛、应用航拍、投掷物品和定点飞行等。这些项目不仅考验无人机的性能,更考验飞行员的操控技巧。 在S形绕桩赛中,飞行员需要操控无人机快速而准确…

大数据SQL格式化规范及示例

无论是数据仓库开发还是数据分析,编写清晰易读的SQL是一项基本的技能。本文将分享几个SQL格式的规范和示例,旨在提高SQL的可读性和可维护性。 虽然这些规范没有严格的标准,但统一的格式可以帮助减少理解和维护SQL代码的时间。不管团队其他人…

5G智能运维趋势

随着5G技术的普及,网络运维面临着前所未有的复杂性和数据量挑战。智能运维通过人工智能、大数据分析、自动化工具等技术,为5G网络提供了高效的管理和优化手段。在网络性能优化、故障预测与管理、资源动态调度、安全管理和网络切片管理等方面,…

一些激活函数

一些激活函数 摘要激活函数分类sigmoidTanhSoftsignSoftmaxReLUSoftplusNoisy ReLULeaky ReLUPReluELUSELUSwishGELUGLUGEGLUMishMaxout 摘要 本篇博客对一些激活函数进行总结,以便加深理解和记忆 激活函数分类 饱和激活函数:sigmoid、tanh… 非饱和激…

欣九康诊疗系统助力诊所向数字化转型

数字化已经成为各行各业转型的重点方向,而为了不被时代所淘汰,医疗机构也势必要紧跟潮流,本人作为门诊部的负责人深知医疗机构要想实现数字化转型那么拥有一款便捷实用的医疗平台是必不可少的,近几年,随着国家大力支持…

table组件,前端如何使用table组件,打印数组数据,后端传输的数据应该如何打印

一、如何使用table,将数组数据打印出来 后端传来的数据,很大概率是一个List数组,我们必须用一个table组件,来打印这些数据。 table标签的介绍 在HTML中,table是常用组件之一,主要用来打印数组信息。 它的…

SpringBoot如何自定义启动Banner 以及自定义启动项目控制台输出信息 类似于若依启动大佛 制作教程

前言 Spring Boot 项目启动时会在控制台打印出一个 banner,下面演示如何定制这个 banner。 若依也会有相应的启动动画 _ooOoo_o8888888o88" . "88(| -_- |)O\ /O____/---\____. \\| |// ./ \\||| : |||// \/ _||||| -:- |||||- \| | \\…

基于DPU的云原生裸金属服务快速部署及存储解决方案

1. 背景介绍 1.1. 业务背景 在云原生技术迅速发展的当下,容器技术因其轻量级、可移植性和快速部署的特性而成为应用部署的主流选择,但裸金属服务器依然有其独特的价值和应用场景,是云原生架构中不可或缺的一部分。 裸金属服务器是一种高级…