振镜系统优化

安装Ultimaker


偏好设置 -> 基本 ->语言 -> 简体中文

偏好设置 -> 设置 -> Check all


偏好设置 -> 打印机 == 参数如图,下面也是==

参数设置





导入stl文件,调整好位置,点准备,就可保存模型,即gcode代码

实心matlab代码,gcode2pointClound

%%新Gcode解析,适用于实心加工件
clear;
syms u v t m n;
d = 150;%扫描间距
xtemp = 0;
ytemp = 0;
gcode = fopen('10-3-1.gcode');%导入Gcode文件
pc = fopen(('10-3-1v4.txt'), 'a');%写入点云文件
fprintf(pc, ['%s\r\n'], 'start');g0Flag = 'G0';
g1Flag = 'G1';
xFlag = ' X';
yFlag = ' Y';
zFlag = ' Z';
nFlag = '\n';
eFlag = ' E';while ~feof(gcode)str1 = fgetl(gcode);g0p = strfind(str1,g0Flag);g1p = strfind(str1,g1Flag);xp = strfind(str1,xFlag);yp = strfind(str1,yFlag);zp = strfind(str1,zFlag);np = length(str1);ep = strfind(str1,eFlag);if zpz = round(str2double(str1((zp+length(zFlag)):length(str1))) * 1000);endif g0pif xpif ypif epstrx = str1((xp+length(xFlag)):yp);if length(strx) > 2if strx(1:2) == '-.'strx = strx(3:length(strx));strx = ['-0.',strx];endendstry = str1((yp+length(yFlag)):ep);if length(stry) > 2if stry(1:2) == '-.'stry = stry(3:length(stry));stry = ['-0.',stry];endendx = round(str2double(strx) * 1000);y = round(str2double(stry) * 1000);xtemp = x;ytemp = y;fprintf(pc,'%d,%d,%d\r\n',[x,y,z]);endif zpstrx = str1((xp+length(xFlag)):yp);if length(strx) > 2if strx(1:2) == '-.'strx = strx(3:length(strx));strx = ['-0.',strx];endendstry = str1((yp+length(yFlag)):zp);if length(stry) > 2if stry(1:2) == '-.'stry = stry(3:length(stry));stry = ['-0.',stry];endendx = round(str2double(strx) * 1000);y = round(str2double(stry) * 1000);xtemp = x;ytemp = y;fprintf(pc,'%d,%d,%d\r\n',[x,y,z]);endif isempty(zp)if isempty(ep)strx = str1((xp+length(xFlag)):yp);if length(strx) > 2if strx(1:2) == '-.'strx = strx(3:length(strx));strx = ['-0.',strx];endendstry = str1((yp+length(yFlag)):length(str1));if length(stry) > 2if stry(1:2) == '-.'stry = stry(3:length(stry));stry = ['-0.',stry];endendx = round(str2double(strx) * 1000);y = round(str2double(stry) * 1000);xtemp = x;ytemp = y;fprintf(pc,'%d,%d,%d\r\n',[x,y,z]);endendendendendif g1pif xpif ypif epstrx = str1((xp+length(xFlag)):yp);if length(strx) > 2if strx(1:2) == '-.'strx = strx(3:length(strx));strx = ['-0.',strx];endendstry = str1((yp+length(yFlag)):ep);if length(stry) > 2if stry(1:2) == '-.'stry = stry(3:length(stry));stry = ['-0.',stry];endendx = round(str2double(strx) * 1000);y = round(str2double(stry) * 1000);md = max(abs(x - xtemp),abs(y - ytemp));k = ceil(md / d) ;for i =1:1:kxx(i) = round(x - (k - i) * (x - xtemp) / k);yy(i) = round(y - (k - i) * (y - ytemp) / k);fprintf(pc,'%d,%d,%d\r\n',[xx(i),yy(i),z]);endxtemp = xx(i);ytemp = yy(i);endif zpstrx = str1((xp+length(xFlag)):yp);if length(strx) > 2if strx(1:2) == '-.'strx = strx(3:length(strx));strx = ['-0.',strx];endendstry = str1((yp+length(yFlag)):zp);if length(stry) > 2if stry(1:2) == '-.'stry = stry(3:length(stry));stry = ['-0.',stry];endendx = round(str2double(strx) * 1000);y = round(str2double(stry) * 1000);md = max(abs(x - xtemp),abs(y - ytemp));k = ceil(md / d) ;for i =1:1:kxx(i) = round(x - (k - i) * (x - xtemp) / k);yy(i) = round(y - (k - i) * (y - ytemp) / k);fprintf(pc,'%d,%d,%d\r\n',[xx(i),yy(i),z]);endxtemp = xx(i);ytemp = yy(i);endendendend
end
for k=1:10fprintf(pc,'%d,%d,%d\r\n',[-90000,-90000,-10000]);
endclose('all')

实心matlab代码,gcode2pointClound

%%新Gcode解析,适用于通孔与Z轴重合加工件
clear;
syms u v t m n;
circle = u^2 + v^2;
d = 150;%扫描间距
r = 2500;%中心孔半径
xtemp = 0;
ytemp = 0;
gcode = fopen('16-3-1.gcode');%导入Gcode文件
pc = fopen(('16-3v4.txt'), 'a');%写入点云文件
fprintf(pc, ['%s\r\n'], 'start');g0Flag = 'G0';
g1Flag = 'G1';
xFlag = ' X';
yFlag = ' Y';
zFlag = ' Z';
nFlag = '\n';
eFlag = ' E';while ~feof(gcode)str1 = fgetl(gcode);g0p = strfind(str1,g0Flag);g1p = strfind(str1,g1Flag);xp = strfind(str1,xFlag);yp = strfind(str1,yFlag);zp = strfind(str1,zFlag);np = length(str1);ep = strfind(str1,eFlag);if zpz = round(str2double(str1((zp+length(zFlag)):length(str1))) * 1000);endif g0pif xpif ypif epstrx = str1((xp+length(xFlag)):yp);if length(strx) > 2if strx(1:2) == '-.'strx = strx(3:length(strx));strx = ['-0.',strx];endendstry = str1((yp+length(yFlag)):ep);if length(stry) > 2if stry(1:2) == '-.'stry = stry(3:length(stry));stry = ['-0.',stry];endendx = round(str2double(strx) * 1000);y = round(str2double(stry) * 1000);%点在圆内则舍弃if (x^2 + y^2) < r^2continue;end%绕过圆孔,圆孔轴线与z轴重合%求速移点与起点所构直线与圆交点s = solve(circle == r^2,v - y == (y - ytemp)/(x - xtemp) * (u - x),u,v);if(length(double(s.u)) == 2)u1 = double(s.u(1));u2 = double(s.u(2));v1 = double(s.v(1));v2 = double(s.v(2));q1 = [u1 u2 0];q2 = [v1 v2 0];k = (v2 - v1) / (u2 - u1);%速移线过原点垂线与圆交点if logical(k)l = solve(m^2 + n^2 == r^2,n == -1 / k * m,m,n);elsel = solve(m^2 + n^2 == r^2,m == 0,m,n);endm1 = double(l.m(1));m2 = double(l.m(2));n1 = double(l.n(1));n2 = double(l.n(2));p1 = [m1 m2 0];p2 = [n1 n2 0];%速移线平移距离d1 = norm(cross(q2-q1,p1-q1))/norm(q2-q1);d2 = norm(cross(q2-q1,p2-q1))/norm(q2-q1);if d1 < d2s = solve((n - n1) == k * (m - m1),(n - v1) == - 1 / k * (m - u1),m,n);x1 = double(s.m);y1 = double(s,n);s = solve((n - n1) == k * (m - m1),(n - v2) == - 1 / k * (m - u2),m,n);x2 = double(s.m);y2 = double(s,n);%(xtemp,ytemp)与(x,y)在圆内或异侧if ((v1 - y) * (v1 - ytemp) < 0) && ((v2 - y) * (v2 - ytemp) > 0)%直线移动到最近点if abs(y1 - ytemp) < abs(y2 - ytemp)fprintf(pc,'%d,%d,%d\r\n',[x1,y1,z]);fprintf(pc,'%d,%d,%d\r\n',[x2,y2,z]);endif abs(y1 - ytemp) > abs(y2 - ytemp)fprintf(pc,'%d,%d,%d\r\n',[x2,y2,z]);fprintf(pc,'%d,%d,%d\r\n',[x1,y1,z]);endendendif d1 > d2s = solve((n - n2) == k * (m - m2),(n - v1) == - 1 / k * (m - u1),m,n);x1 = double(s.m);y1 = double(s,n);s = solve((n - n2) == k * (m - m2),(n - v2) == - 1 / k * (m - u2),m,n);x2 = double(s.m);y2 = double(s,n);if ((v1 - y) * (v1 - ytemp) < 0) && ((v2 - y) * (v2 - ytemp) > 0)%(xtemp,ytemp)与(x,y)在圆内或异侧if abs(y1 - ytemp) < abs(y2 - ytemp)fprintf(pc,'%d,%d,%d\r\n',[x1,y1,z]);fprintf(pc,'%d,%d,%d\r\n',[x2,y2,z]);endif abs(y1 - ytemp) > abs(y2 - ytemp)fprintf(pc,'%d,%d,%d\r\n',[x2,y2,z]);fprintf(pc,'%d,%d,%d\r\n',[x1,y1,z]);endendendendxtemp = x;ytemp = y;fprintf(pc,'%d,%d,%d\r\n',[x,y,z]);endif zpstrx = str1((xp+length(xFlag)):yp);if length(strx) > 2if strx(1:2) == '-.'strx = strx(3:length(strx));strx = ['-0.',strx];endendstry = str1((yp+length(yFlag)):zp);if length(stry) > 2if stry(1:2) == '-.'stry = stry(3:length(stry));stry = ['-0.',stry];endendx = round(str2double(strx) * 1000);y = round(str2double(stry) * 1000);%点在圆内则舍弃if (x^2 + y^2) < r^2continue;end%绕过圆孔,圆孔轴线与z轴重合%求速移点与起点所构直线与圆交点s = solve(circle == r^2,v - y == (y - ytemp)/(x - xtemp) * (u - x),u,v);if(length(double(s.u)) == 2)u1 = double(s.u(1));u2 = double(s.u(2));v1 = double(s.v(1));v2 = double(s.v(2));q1 = [u1 u2 0];q2 = [v1 v2 0];k = (v2 - v1) / (u2 - u1);%速移线过原点垂线与圆交点if logical(k)l = solve(m^2 + n^2 == r^2,n == -1 / k * m,m,n);elsel = solve(m^2 + n^2 == r^2,m == 0,m,n);endm1 = double(l.m(1));m2 = double(l.m(2));n1 = double(l.n(1));n2 = double(l.n(2));p1 = [m1 m2 0];p2 = [n1 n2 0];%速移线平移距离d1 = norm(cross(q2-q1,p1-q1))/norm(q2-q1);d2 = norm(cross(q2-q1,p2-q1))/norm(q2-q1);if d1 < d2s = solve((n - n1) == k * (m - m1),(n - v1) == - 1 / k * (m - u1),m,n);x1 = double(s.m);y1 = double(s,n);s = solve((n - n1) == k * (m - m1),(n - v2) == - 1 / k * (m - u2),m,n);x2 = double(s.m);y2 = double(s,n);%(xtemp,ytemp)与(x,y)在圆内或异侧if ((v1 - y) * (v1 - ytemp) < 0) && ((v2 - y) * (v2 - ytemp) > 0)%直线移动到最近点if abs(y1 - ytemp) < abs(y2 - ytemp)fprintf(pc,'%d,%d,%d\r\n',[x1,y1,z]);fprintf(pc,'%d,%d,%d\r\n',[x2,y2,z]);endif abs(y1 - ytemp) > abs(y2 - ytemp)fprintf(pc,'%d,%d,%d\r\n',[x2,y2,z]);fprintf(pc,'%d,%d,%d\r\n',[x1,y1,z]);endendendif d1 > d2s = solve((n - n2) == k * (m - m2),(n - v1) == - 1 / k * (m - u1),m,n);x1 = double(s.m);y1 = double(s,n);s = solve((n - n2) == k * (m - m2),(n - v2) == - 1 / k * (m - u2),m,n);x2 = double(s.m);y2 = double(s,n);if ((v1 - y) * (v1 - ytemp) < 0) && ((v2 - y) * (v2 - ytemp) > 0)%(xtemp,ytemp)与(x,y)在圆内或异侧if abs(y1 - ytemp) < abs(y2 - ytemp)fprintf(pc,'%d,%d,%d\r\n',[x1,y1,z]);fprintf(pc,'%d,%d,%d\r\n',[x2,y2,z]);endif abs(y1 - ytemp) > abs(y2 - ytemp)fprintf(pc,'%d,%d,%d\r\n',[x2,y2,z]);fprintf(pc,'%d,%d,%d\r\n',[x1,y1,z]);endendendendxtemp = x;ytemp = y;fprintf(pc,'%d,%d,%d\r\n',[x,y,z]);endif isempty(zp)if isempty(ep)strx = str1((xp+length(xFlag)):yp);if length(strx) > 2if strx(1:2) == '-.'strx = strx(3:length(strx));strx = ['-0.',strx];endendstry = str1((yp+length(yFlag)):length(str1));if length(stry) > 2if stry(1:2) == '-.'stry = stry(3:length(stry));stry = ['-0.',stry];endendx = round(str2double(strx) * 1000);y = round(str2double(stry) * 1000);%点在圆内则舍弃if (x^2 + y^2) < r^2continue;end%绕过圆孔,圆孔轴线与z轴重合%求速移点与起点所构直线与圆交点s = solve(circle == r^2,v - y == (y - ytemp)/(x - xtemp) * (u - x),u,v);if(length(double(s.u)) == 2)u1 = double(s.u(1));u2 = double(s.u(2));v1 = double(s.v(1));v2 = double(s.v(2));q1 = [u1 u2 0];q2 = [v1 v2 0];k = (v2 - v1) / (u2 - u1);%速移线过原点垂线与圆交点if logical(k)l = solve(m^2 + n^2 == r^2,n == -1 / k * m,m,n);elsel = solve(m^2 + n^2 == r^2,m == 0,m,n);endm1 = double(l.m(1));m2 = double(l.m(2));n1 = double(l.n(1));n2 = double(l.n(2));p1 = [m1 m2 0];p2 = [n1 n2 0];%速移线平移距离d1 = norm(cross(q2-q1,p1-q1))/norm(q2-q1);d2 = norm(cross(q2-q1,p2-q1))/norm(q2-q1);if d1 < d2s = solve((n - n1) == k * (m - m1),(n - v1) == - 1 / k * (m - u1),m,n);x1 = double(s.m);y1 = double(s.n);s = solve((n - n1) == k * (m - m1),(n - v2) == - 1 / k * (m - u2),m,n);x2 = double(s.m);y2 = double(s.n);%(xtemp,ytemp)与(x,y)在圆内或异侧if ((v1 - y) * (v1 - ytemp) < 0) && ((v2 - y) * (v2 - ytemp) > 0)%直线移动到最近点if abs(y1 - ytemp) < abs(y2 - ytemp)fprintf(pc,'%d,%d,%d\r\n',[x1,y1,z]);fprintf(pc,'%d,%d,%d\r\n',[x2,y2,z]);endif abs(y1 - ytemp) > abs(y2 - ytemp)fprintf(pc,'%d,%d,%d\r\n',[x2,y2,z]);fprintf(pc,'%d,%d,%d\r\n',[x1,y1,z]);endendendif d1 > d2s = solve((n - n2) == k * (m - m2),(n - v1) == - 1 / k * (m - u1),m,n);x1 = double(s.m);y1 = double(s.n);s = solve((n - n2) == k * (m - m2),(n - v2) == - 1 / k * (m - u2),m,n);x2 = double(s.m);y2 = double(s.n);if ((v1 - y) * (v1 - ytemp) < 0) && ((v2 - y) * (v2 - ytemp) > 0)%(xtemp,ytemp)与(x,y)在圆内或异侧if abs(y1 - ytemp) < abs(y2 - ytemp)fprintf(pc,'%d,%d,%d\r\n',[x1,y1,z]);fprintf(pc,'%d,%d,%d\r\n',[x2,y2,z]);endif abs(y1 - ytemp) > abs(y2 - ytemp)fprintf(pc,'%d,%d,%d\r\n',[x2,y2,z]);fprintf(pc,'%d,%d,%d\r\n',[x1,y1,z]);endendendendxtemp = x;ytemp = y;fprintf(pc,'%d,%d,%d\r\n',[x,y,z]);endendendendendif g1pif xpif ypif epstrx = str1((xp+length(xFlag)):yp);if length(strx) > 2if strx(1:2) == '-.'strx = strx(3:length(strx));strx = ['-0.',strx];endendstry = str1((yp+length(yFlag)):ep);if length(stry) > 2if stry(1:2) == '-.'stry = stry(3:length(stry));stry = ['-0.',stry];endendx = round(str2double(strx) * 1000);y = round(str2double(stry) * 1000);md = max(abs(x - xtemp),abs(y - ytemp));k = ceil(md / d) ;for i =1:1:kxx(i) = round(x - (k - i) * (x - xtemp) / k);yy(i) = round(y - (k - i) * (y - ytemp) / k);fprintf(pc,'%d,%d,%d\r\n',[xx(i),yy(i),z]);endxtemp = xx(i);ytemp = yy(i);endif zpstrx = str1((xp+length(xFlag)):yp);if length(strx) > 2if strx(1:2) == '-.'strx = strx(3:length(strx));strx = ['-0.',strx];endendstry = str1((yp+length(yFlag)):zp);if length(stry) > 2if stry(1:2) == '-.'stry = stry(3:length(stry));stry = ['-0.',stry];endendx = round(str2double(strx) * 1000);y = round(str2double(stry) * 1000);md = max(abs(x - xtemp),abs(y - ytemp));k = ceil(md / d) ;for i =1:1:kxx(i) = round(x - (k - i) * (x - xtemp) / k);yy(i) = round(y - (k - i) * (y - ytemp) / k);fprintf(pc,'%d,%d,%d\r\n',[xx(i),yy(i),z]);endxtemp = xx(i);ytemp = yy(i);endendendend
end
for k=1:10fprintf(pc,'%d,%d,%d\r\n',[-90000,-90000,-10000]);
endclose('all')

d参数与Ultimaker中层厚设置最好一致,r为空心半径
大致算法如下:

%%生成手性薄片直角坐标系下轨迹
% syms theta r t a b c n;
% a=5.77;
% b=0.3;
% c=-2;
% n=4;
% theta = t+c/n*cos(n*t);
% r=a*(1+b*cos(n*t));
% % s=0:0.01:2*pi;
% % figure
% % polarplot(theta,r);
% [x,y]=pol2cart(theta,r);
% x
% y

最新文章

  1. 怎么解决tomcat占用8080端口问题图文教程 端口被占用
  2. Java加密解密入门
  3. 用wxpython做ui_wxPython - 如何强制UI刷新?
  4. AOS编排语言系列教程(四):创建弹性云服务器ECS
  5. 前端快来!最火的 Vue.js 开源项目出炉
  6. grep awk sed 练习题
  7. 各版本Anaconda的下载、安装和卸载(适用于Windows/Linux系统)
  8. 最小二乘法曲线拟合以及Matlab实现-----实验结果资源和总结
  9. 董明珠还能任性么?美的和小米如今都彻底击败了格力
  10. win10获得system权限(超级管理员)
  11. 保研夏令营面试、考研复试自我介绍、个人展示模板与撰写注意事项
  12. SRAM、PSRAM、SPI FLASH
  13. java代码(ascii与字母互转)
  14. datagrid设置单元格边框_如何设置datagridview某一个单元格的边框样式
  15. c#代码实现打印机打印文件
  16. 北京市石景山区谷歌卫星地图下载
  17. 什么是IMAP、POP服务?
  18. 声纹验证和声纹识别中的AS-norm、Z-norm、T-norm、ZT-norm、 S-norm操作
  19. 快手小店保证金多少钱?快手保证金一定要交吗?
  20. 多因子权重优化方法比较

热门文章

  1. TextCNN代码解读及实战
  2. DXF解析CAD图形解析PLT格式文件解析C#工程源码
  3. Vue项目使用file-saver将html转word文件、把html内容下载保存导出到本地生成doc文件包括图片:前端下载利器FileSaver
  4. 软考中级软件设计师--6.UML
  5. 软考中级软件设计师---下午题
  6. 华为悦盒EC6108V9教程
  7. Mac墨刀怎么导出HTML,mockingbot墨刀中文使用说明.pdf
  8. 通信接口:UART、I2C、SPI、TTL、RS232、RS422、RS485、CAN、USB
  9. 小米游戏本2019 I7-9750H安装黑苹果11.5 big Sur
  10. 夜谈TCP/IP的起源和胜利