⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 solenoid.m

📁 绘制螺纹的MATLAB程序
💻 M
字号:
% ;;;-----------弹簧的程序---------- 
% (defun c:spring(/) 
%   (setq p1(getpoint "请指定螺旋线基点:")) 
%   (setq r(getreal "请输入弹簧平均半径:")) 
%   (setq d0(getreal "请输入弹簧丝直径:")) 
%   (setq disp(getreal "请输入弹簧节距:")) 
%   (setq n0(getint "请输入弹簧工作圈数:")) 
%   (setq n(getint "请输入每圈细化段数(16/20/24/28/32/36/40/48/52/56/60/100):")) 
%   (setq n1(* 1.25 n))                   ;支撑圈细化段数 
%   (setq n1(fix n1)) 
%   (setq n2(* n0 n))                     ;工作圈细化段数 
%   (setq delta(/ (* 2.0 pi) n))          ;单位转角 
%   (setq j(/ disp n))                    ;工作圈轴向位移量 
%   (setq j0(/ d0 n))                     ;支撑圈轴向位移量 
%   (setq bb(caddr p1)) 
%   (setq ang 0) 
%   (setq jj 0) 
%   (command "ucs" "o" p1) 
%   (setq pt1(list r 0 0)) 
%   (command "3dpoly" pt1) 
%   (repeat n1                            ;绘制下支撑圈 
%     (setq jj(+ jj 1)) 
%     (setq ang(+ delta ang)) 
%     (setq pt(list (* r (cos ang)) (* r (sin ang)) (* j0 jj))) 
%     (command pt) 
%   ) 
%   (setq p2(list 0 0 (* j0 jj))) 
%   (setq g1(* j0 jj))                    ;下支撑圈高度 
%   (setq jj 0) 
%   (repeat n2                            ;绘制工作圈 
%     (setq jj(+ jj 1)) 
%     (setq ang(+ delta ang)) 
%     (setq pt(list (* r (cos ang)) (* r (sin ang)) (+ g1 (* j jj)))) 
%     (command pt) 
%   ) 
%   (setq p3(list 0 0 (* j jj))) 
%   (setq g2(* j jj))                     ;工作圈高度 
%   (setq jj 0) 
%   (repeat n1                            ;绘制上支撑圈 
%     (setq jj(+ jj 1)) 
%     (setq ang(+ delta ang)) 
%     (setq pt(list (* r (cos ang)) (* r (sin ang)) (+ g1 g2 (* j0 jj)))) 
%     (command pt) 
%   ) 
%   (setq g3(* j0 jj))                    ;上支撑圈高度 
%   (command "") 
%   (setq e1(entlast)) 
%   (command "ucs" "x" "")                ;拉伸弹簧 
%   (command "circle" pt1 (/ d0 2)) 
%   (setq e2(entlast)) 
%   (command "extrude" e2 "" "p" e1) 
%   (setq e3(entlast)) 
%   (setq pt2(list r (/ d0 4) 0))         ;磨平 
%   (setq py(+ g1 g2 g3 (- 0 (/ d0 4)))) 
%   (setq pt3(list (- 0 r) py 0)) 
%   (command "slice" e3 "" "zx" pt2 pt3) 
%   (command "slice" e3 "" "zx" pt3 pt2) 
%   (command "ucs" "w") 
%   % ) 
% ;;;---------end----------弹簧程序结束!


% % t=0: pi/50: 2*pi;
% % x=sin(t); y=cos(t); z=t; 
% % h=plot3(x, y, z, 'g-')
% % set(h,'LineWidth',4*get(h,'LineWidth'))
% 
% 
% [X0,Y0,Z0]=sphere(30); % 产生单位球面的三维坐标
% X=2*X0;Y=2*Y0;Z=2*Z0; % 产生半径为 2 的球面的三维坐标
% clf,surf(X0,Y0,Z0); % 画单位球面
% shading interp % 采用插补明暗处理
% hold on,mesh(X,Y,Z),colormap(hot),hold off % 采用 hot 色图
% hidden off % 产生透视效果
% axis equal,axis off % 不显示坐标轴 

n0 =1;
n = 16;
n2 = n0*n;
JJ = 0;
r=1;
X0 =r;Y0 =0;Z0 =0; 
delta =2*pi/n;
d0 = 0.2;
J0 = 5*d0/n;
ang = 0;
C0 = curve3;

for I = 1 : n2
    JJ =JJ+1;
    ang = ang +delta;
    X1 = r*cos(ang); Y1 = r*sin(ang); Z1 = J0*JJ;
    C1 = curve3([X0,X1],[Y0,Y1],[Z0,Z1]);
    X0 =X1;Y0 = Y1;Z0 = Z1;
    geomplot(C1,'pointcolor','r','pointlabels','on','pointmarker','diamond','camlight','on','lightmode','phong','axisvisible','on'),axis([-1,1,-1,1,0,1]);hold on,pause(0.5)
    C1 = geomcoerce('curve',{C0,C1});
    C0 = C1;    
end
geomplot(C1);
geomplot(C1,'pointcolor','r','pointlabels','off', 'pointmarker','circle')

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -