DXFLib的地址如下:
https://www.mathworks.com/matlabcentral/fileexchange/33884-dxflib?s_tid=srchtitle_DXFLib_1
多亏了它,使得我们可以方便地使用matlab生成想要的dxf文件,实现简单图纸的自动化
但是……它好像没有画圆和弧线的功能:


于是,我简单参考了以下链接,仿照dxf_polyline写了以下两个函数,原理非常简单,实现我个人所需的必要功能即可
https://blog.csdn.net/sanqima/article/details/37743773
https://www.cnblogs.com/xyb930826/p/4493373.html
dxf_circle.m
function FID = dxf_circle(FID, center, radius)
try
if FID.dump
fprintf(FID.fid,'0
');
fprintf(FID.fid,'CIRCLE
');
dxf_print_layer(FID);
fprintf(FID.fid,'66
'); % entities follow (not necessary)
fprintf(FID.fid,'1
');
fprintf(FID.fid,'10
');
fprintf(FID.fid,[num2str(center(1)),'
']);
fprintf(FID.fid,'20
');
fprintf(FID.fid,[num2str(center(2)),'
']);
fprintf(FID.fid,'30
');
fprintf(FID.fid,[num2str(center(3)),'
']);
fprintf(FID.fid,'40
');
fprintf(FID.fid,[num2str(radius),'
']);
end
catch exception
if FID.fid >= 0
fclose(FID.fid);
end
rethrow(exception);
end
dxf_arc.m
function FID = dxf_arc(FID, center, radius, angle)
try
if FID.dump
fprintf(FID.fid,'0
');
fprintf(FID.fid,'ARC
');
dxf_print_layer(FID);
fprintf(FID.fid,'66
'); % entities follow (not necessary)
fprintf(FID.fid,'1
');
fprintf(FID.fid,'10
');
fprintf(FID.fid,[num2str(center(1)),'
']);
fprintf(FID.fid,'20
');
fprintf(FID.fid,[num2str(center(2)),'
']);
fprintf(FID.fid,'30
');
fprintf(FID.fid,[num2str(center(3)),'
']);
fprintf(FID.fid,'40
');
fprintf(FID.fid,[num2str(radius),'
']);
fprintf(FID.fid,'50
');
fprintf(FID.fid,[num2str(angle(1)),'
']);
fprintf(FID.fid,'51
');
fprintf(FID.fid,[num2str(angle(2)),'
']);
end
catch exception
if FID.fid >= 0
fclose(FID.fid);
end
rethrow(exception);
end
测试如下(随便画了一个图):
FID = dxf_open('mytest.dxf');
dxf_polyline(FID,[1,0,-1]',[0,1,0]',[0,0,0]');
dxf_arc(FID, [0,0,0], 1, [0,135]);
dxf_circle(FID, [0,1,0], 0.5);
dxf_close(FID);
得到结果如下:

这样用起来就方便了。