function mp=Build_RotateSampleOptRadii() % Bulid mp obj (contains models and all arguments) %% init pace=0.5; Pst=[0 0 0]-pace*0.51; Ped=[12 12 6]; Ped=FCM_dV.round_Ped(Pst,Ped,pace); maxdeep=3; order=1; viewxy=[-30 30]; Shape.accessThreshold(pace/maxdeep/2/2/2);% Oa=[0 0 0]; Ra=[0 0 0]; rvec=(Ped-Pst)/pace num_cells=rvec(1)*rvec(2)*rvec(3); fprintf("num_cells: %.0f\n",num_cells);% show num of cells %% add SS lib & python path additon_path=pwd; if count(py.sys.path,additon_path) == 0 insert(py.sys.path,int32(0),additon_path); end %% assemble c0 % c=CSG("STL",[pwd,'/SolidWoks Files/BearingBracket/BearingB.STL'],'init'); cube1=CSG("Cube","corner",[0 0 0],Ra,[12 12 1]); cube2=CSG("Cube","corner",[0 0 5],Ra,[12 12 1]); c=cube1+cube2; cyObjs=[]; for i=2:2*2:12 for j=2:2*2:12 cy=CSG("Cylinder",[i j 0],Ra,0.5,10); cyObjs=[cyObjs cy]; end end firstFlg=1; cys=[]; for cy=cyObjs if firstFlg==1 firstFlg=0; cys=cy; else cys=cys+cy; end end %% tmp output % c.set_display_args([Pst(1) Pst(2) Pst(3)],Ped,pace/5,'viewxy',viewxy); % c.csg2stl('/home/cflin/Documents/MATLAB/MatlabCode/TopCSG/NNew_Data/RotateSample/CSG_plates'); % % cys.set_display_args([Pst(1) Pst(2) Pst(3)],Ped,pace/5,'viewxy',viewxy); % cys.csg2stl('/home/cflin/Documents/MATLAB/MatlabCode/TopCSG/NNew_Data/RotateSample/CSG_cylinders'); % limitedCube=CSG("Cube","corner",[0 0 0+0.1],Ra,[12 12 6]+[0 0 -0.1]); % limitedCube.set_display_args([Pst(1) Pst(2) Pst(3)],Ped,pace/5,'viewxy',viewxy); % limitedCube.csg2stl('/home/cflin/Documents/MATLAB/MatlabCode/TopCSG/NNew_Data/RotateSample/CSG_limitedCube'); % % limitedCys=limitedCube*cys; % limitedCys.set_display_args([Pst(1) Pst(2) Pst(3)],Ped,pace/5,'viewxy',viewxy); % limitedCys.csg2stl('/home/cflin/Documents/MATLAB/MatlabCode/TopCSG/NNew_Data/RotateSample/CSG_limitedCylinders'); c=c+(limitedCube*cys); %---------------------------assemble c % show model clf; c.set_display_args([Pst(1) Pst(2) Pst(3)],Ped,pace/5,'viewxy',viewxy); c.display_csg(); % c.csg2stl('/home/cflin/Documents/MATLAB/MatlabCode/TopCSG/NNew_Data/RotateSample/initModel'); V0=1; %% % time and calculate Volume tic fcmv=FCM_V(Pst,Ped,pace,maxdeep,order,@c.calSF,@(X) ones(size(X,1),1));% |||1 dV V0=fcmv.calIntegral_V(); fprintf('V0: %f ,Time: %f\n',V0,toc); %% build Dirichlet/Neumann boundary eepsD=1e-1; eepsN=1e-1; % DC2d=Line([0 0 0],[CubePed(1) 0 0]); DC2d=Rect([0 0 0],[12 12 0],false); Dskt=Sketch([0 0 0],[0 0 0],1e-9,DC2d); Dirich_csg=CSG();Dirich_csg.init(Dskt); Dirich_csg.saveAs('Dir'); Dirich_csg.judge_func=@(X) abs(X(:,3))< eepsD*0.35; %------------------------------------------Neu Ncir=Rect([0 0 0],[12 12 0],false); Nskt=Sketch([0 0 6],[0 0 0],1e-9,Ncir); Neuman_csg=CSG(); Neuman_csg.init(Nskt,'Neu'); Neuman_csg.judge_func=@(X) X(:,1)>0 & X(:,1)<12 & X(:,2)>0 & X(:,2)<12 & abs(X(:,3)-6)