管道弯头使用MATLAB代码创建

28日视图(30天)
马里兰州米娅
马里兰州米娅 2023年1月5日
编辑: 马里兰州米娅2023年4月22日20:52
我完成了MATLAB代码创建尽可能多的我想要直管道。然而,我想下面使用管道弯头连接它们的样子。知道如何在MATLAB创建这个弯头吗?
2的评论
马里兰州米娅
马里兰州米娅 2023年1月23日
编辑:马里兰州米娅 2023年1月23日
谢谢。这是我试图使用MATLAB模型肘部。我的目标就是把两个管道90度弯头。起初我新型弯曲曲线(基本上肘部的中心线,在下面的图中蓝线)。现在知道x, y, z曲线上的点的量,我创建了3 d圆下面这些点和它看起来像。然而,当我试图连接第一个直管,它不工作。有什么错误我做在肘部建模。
% %肘部输入
pipe_size = 25.4;%在毫米
d_outside = 33.4;%在毫米
一个= 38;%在毫米(center-to-end距离)% Ref。1(16页,表3)
%长半径弯头在使用曲率半径大于管直径(> = 1.5 *管diamater)
% 90°长半径弯头,中心端尺寸维度表中给出的ASME B16.9一样半径弯头(Ref。2)
x1 = 2100;% left_pipe_end_x
日元= 0.00;% left_pipe_end_yo
x2 = 2138;% right_pipe_end_x
y2 = -38;% right_pipe_end_y
R = 38岁;%在毫米曲率半径
% %现在让我们计算中心点(x0, y0)
信谊x0 y0
eq1 = R ^ 2 - ((x0-x1) ^ 2 + (y0-y1) ^ 2);
eq2 = R ^ 2 - ((x0-x2) ^ 2 + (y0-y2) ^ 2);
索尔=解决([eq1 eq2, x0 < = x1, y0 < = y2], [x0, y0]);
x_c =双(sol.x0)
y_c =双(sol.y0)
% (x0, y0) = (2138 0)
% %其他点
x = linspace (x1, x2, 50);
x = x ';
i = 1:长度(x)
x1 = x(我);
eqa1 = @ (y) R ^ 2 - ((x_c-x1) ^ 2 + (y_c-y) ^ 2);
长g格式
y_l = [0 -38];
y (i) = fzero (eqa1 y_l);
结束
y = y ';
final_mat = (x, y);
情节(final_mat (: 1) final_mat (:, 2),“b -”,“线宽”,2)
抓住
负载输出;
因为我= 1:长度(final_mat (: 1))
[x_value {}, y_value {}, z_value{我}]= plotCircle3D ([x(我),(我),0],[1,0,0),d_outside / 2, n_ele_circum);
结束
函数(x_value、y_value z_value] = plotCircle3D(中心、正常、半径,n_ele_circum)
d_theta = 2 *π/ n_ele_circum;%增量大小
θ= 0:d_theta: (2 * pi-d_theta);%的弧度
v = null(正常);
点= repmat(中心',1,大小(θ,2))+半径* (v (: 1) * cos(θ)+ v (:, 2) * sin(θ));
:plot3(点(1),点(2:),点(3:),r -);
:x_value =点(1);
y_value =点(2:);
z_value =点(3);
结束

登录置评。

答案(1)

约翰D 'Errico
约翰D 'Errico 2023年1月25日
编辑:约翰D 'Errico 2023年1月25日
不工作是什么?为什么你认为它是不工作?
我猜想,你的一个问题是你不能模型90度弯头你试图做的事。你的圈画总是相互平行。这必须是不正确的。
第二个问题是你只画圆圈。他们没有相互连接弯管的长度。这两个问题。所以这样做更好的通过一个真正的表面,我称之为2-manifold。设置遵循一条曲线在空间是一个好主意。
的好处是,这使它还容易生成一系列的管道,因为气缸代码我写不介意中心线的道路是一个线性段或圆弧。例如
[pipe1x, pipe1y pipe1z] = generalCylinder ((1 1 0; 0 1 0), 0.25, 50);
[pipe2x, pipe2y pipe2z] = generalCylinder ((1 0 0; 1 1 0), 0.25, 50);
φ= linspace(0,π/ 2)';
elbowarcxyz = 1 * (cos(φ),sin(φ),0(元素个数(φ),1)];
[elbowx,用肘推的,elbowz] = generalCylinder (elbowarcxyz, 0.25, 50);
H1 =冲浪(pipe1x pipe1y pipe1z);
持有
H2 =冲浪(pipe2x pipe2y pipe2z);
用肘推的,H3 =冲浪(elbowx elbowz);
H1。FaceColor =“b”;
H2。FaceColor =‘g’;
H3。FaceColor =“r”;
盒子
持有
平等的
我附加generalCylinder这个答案。
现在你需要做的就是创建一个中心线的道路通过空间,然后使用汽缸代码构建缸表面,遵循这条道路。
6个评论
马里兰州米娅
马里兰州米娅 2023年4月22日20:51
编辑:马里兰州米娅 2023年4月22日20:52
我用一般气缸代码 @John D 'Errico 创建肘(以前的回答中可以看到这个线程)。LSDyna然而,当我打开这个文件,我发现创建的肘部不完全与其他两个管道从下图可以看到。可以看到,在一些连接部分,存在差距和部分之间有重叠在接头端管和弯头。我将感激如果有人可以帮助我。再次感谢。代码(code2.m)附加在此也可以发现在之前的回答 @John D 'Errico

登录置评。

类别

找到更多的在通用应用程序帮助中心文件交换

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!