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\n'); fprintf(FID.fid,'CIRCLE\n'); dxf_print_layer(FID); fprintf(FID.fid,'66\n'); % entities follow (not necessary) fprintf(FID.fid,'1\n'); fprintf(FID.fid,'10\n'); fprintf(FID.fid,[num2str(center(1)),'\n']); fprintf(FID.fid,'20\n'); fprintf(FID.fid,[num2str(center(2)),'\n']); fprintf(FID.fid,'30\n'); fprintf(FID.fid,[num2str(center(3)),'\n']); fprintf(FID.fid,'40\n'); fprintf(FID.fid,[num2str(radius),'\n']); 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\n'); fprintf(FID.fid,'ARC\n'); dxf_print_layer(FID); fprintf(FID.fid,'66\n'); % entities follow (not necessary) fprintf(FID.fid,'1\n'); fprintf(FID.fid,'10\n'); fprintf(FID.fid,[num2str(center(1)),'\n']); fprintf(FID.fid,'20\n'); fprintf(FID.fid,[num2str(center(2)),'\n']); fprintf(FID.fid,'30\n'); fprintf(FID.fid,[num2str(center(3)),'\n']); fprintf(FID.fid,'40\n'); fprintf(FID.fid,[num2str(radius),'\n']); fprintf(FID.fid,'50\n'); fprintf(FID.fid,[num2str(angle(1)),'\n']); fprintf(FID.fid,'51\n'); fprintf(FID.fid,[num2str(angle(2)),'\n']); 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);
得到結果如下:
這樣用起來就方便了。