📄 solenoid.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 + -