WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Vom 3D-Objekt die Wände dicker machen ?

 

JanInfoMed
Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 29.08.19
Wohnort: Regensburg
Version: ---
     Beitrag Verfasst am: 10.09.2019, 12:04     Titel: Vom 3D-Objekt die Wände dicker machen ?
  Antworten mit Zitat      
funktioniert i-wie nicht, bin nicht so lange in matlab und wollte fragen, wie man die wandstärke oder die Linien dicker machen kann, damit es beim ausdrucken nicht auseinanderfällt

Code:


set(bin.faces,bin.vertices,'LineWidth',8);




 
Private Nachricht senden Benutzer-Profile anzeigen


JanInfoMed
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 29.08.19
Wohnort: Regensburg
Version: ---
     Beitrag Verfasst am: 10.09.2019, 13:14     Titel:
  Antworten mit Zitat      
Ich hab es versucht mit Linewidth oder set, aber die Wandstärke wird nur im Programm angezeigt und nicht abgespeichert für die STL-Datei

Photostrahlung.jpg
 Beschreibung:
Wie es im Programm aussieht

Download
 Dateiname:  Photostrahlung.jpg
 Dateigröße:  248.45 KB
 Heruntergeladen:  333 mal
Photonenstrahlung.jpg
 Beschreibung:
Wie es im 3D-Programm aussieht

Download
 Dateiname:  Photonenstrahlung.jpg
 Dateigröße:  408.91 KB
 Heruntergeladen:  289 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
JanInfoMed
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 29.08.19
Wohnort: Regensburg
Version: ---
     Beitrag Verfasst am: 11.09.2019, 11:03     Titel:
  Antworten mit Zitat      
https://de.mathworks.com/matlabcent.....ile?s_tid=prof_contriblnk
Private Nachricht senden Benutzer-Profile anzeigen
 
JanInfoMed
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 29.08.19
Wohnort: Regensburg
Version: ---
     Beitrag Verfasst am: 17.09.2019, 10:16     Titel:
  Antworten mit Zitat      
Die Oberfläche wird nicht angezeigt, ich weiß nicht woran es liegt. Es war erstmal geplant, das die Wänder dicker gemacht werden. Die Wand habe ich "verdoppelt" und um 0.8 Skalierung, kleiner gemacht. Normalerweise sollte dann zwischen der Wand und der etwas kleinere Wand ausgefüllt sein. Man sieht es auf dem Bild besser.

Code:

clear
name='010010_XBlockBigIsoz'; %Einlesen der Datei
     

info=dicominfo(name); %Zugreifen auf der Datei
es=(info.BeamSequence.Item_1.RadiationType);
ps=(info.BeamSequence.Item_1.RadiationType);
sz=size(info.BeamSequence.Item_1.BlockSequence.Item_1.BlockData,1); % Größe der Datei
bd=(info.BeamSequence.Item_1.BlockSequence.Item_1.SourceToBlockTrayDistance)/10;
bh=(info.BeamSequence.Item_1.BlockSequence.Item_1.BlockThickness)/10;
b(:,1)=info.BeamSequence.Item_1.BlockSequence.Item_1.BlockData(1:2:sz)/10; %x-Koordinaten
b(:,2)=info.BeamSequence.Item_1.BlockSequence.Item_1.BlockData(2:2:sz)/10;


 kx = -10:0.2:10;
 ky = -10:0.2:10;
 
 kz = bd:-0.1:bd-bh;
 sz_x=size(kx,2);
 sz_y=size(ky,2);
 sz_z=size(kz,2);
 
 bin=nan(sz_y,sz_x,sz_z);
 
 [X,Y] = meshgrid(kx,ky);

for i=1:sz_z
 x=kz(i)*b(:,1)/100;
 y=kz(i)*b(:,2)/100;
 xi=(x)*.8;
 yi=(y)*.8;
 tmp=inpolygon (X,Y,x,y);
 tmp_i=inpolygon (X,Y,xi,yi);
 bin(:,:,i)=xor(tmp,tmp_i);
 end
end


Oberfläche .jpg
 Beschreibung:

Download
 Dateiname:  Oberfläche .jpg
 Dateigröße:  92.39 KB
 Heruntergeladen:  271 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
JanInfoMed
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 29.08.19
Wohnort: Regensburg
Version: ---
     Beitrag Verfasst am: 19.09.2019, 08:44     Titel: Umsetzung erfolgreich, nur das Objekt ist kleiner geworden
  Antworten mit Zitat      
Code:


% Es hat geklappt, indem ich in der untersten Schicht und der obersten Schicht , die z-Achse um "1 Einheit nach oben" gezogen und sie mit "0ern" ausgefüllt habe, somit schließen sich die  zwei Wände zu einer dicken Wand
% Das Problem ist jetzt das die Skalierung verändert wurde, auf dem Bild sieht
% man das der "Block" nur 1 cm breit und 1 cm hoch ist...
% der "Block" ist aber 5 cm hoch.. muss jetzt schauen, wie man das bearbeitet


clear
name='010010_XBlockBigIsoz'; %Einlesen der Datei
     

info=dicominfo(name); %Zugreifen auf der Datei
es=(info.BeamSequence.Item_1.RadiationType);
ps=(info.BeamSequence.Item_1.RadiationType);
sz=size(info.BeamSequence.Item_1.BlockSequence.Item_1.BlockData,1); % Größe der Datei
bd=(info.BeamSequence.Item_1.BlockSequence.Item_1.SourceToBlockTrayDistance)/10;
bh=(info.BeamSequence.Item_1.BlockSequence.Item_1.BlockThickness)/10;
b(:,1)=info.BeamSequence.Item_1.BlockSequence.Item_1.BlockData(1:2:sz)/10; %x-Koordinaten
b(:,2)=info.BeamSequence.Item_1.BlockSequence.Item_1.BlockData(2:2:sz)/10;


 kx = -10:0.2:10;
 ky = -10:0.2:10;
 
 kz = bd:-0.1:bd-bh;
 sz_x=size(kx,2);
 sz_y=size(ky,2);
 sz_z=size(kz,2);
 
 bin=nan(sz_y,sz_x,sz_z);
 
 [X,Y] = meshgrid(kx,ky);

for i=1:sz_z
 x=kz(i)*b(:,1)/100;
 y=kz(i)*b(:,2)/100;
 xi=(x)*.8;
 yi=(y)*.8;
 tmp=inpolygon (X,Y,x,y);
 tmp_i=inpolygon (X,Y,xi,yi);
 bin(:,:,i)=xor(tmp,tmp_i);

 end

 bin = squeeze(bin);
 [X,Y,Z] = meshgrid(kx,ky,kz);  % Ab hier wird die unterste und oberste Schicht erstellt und dann mit 0ern gefüllt, nur die Skalierung wurde verändert und ich bekomm ein kleineres Objekt
 bin=smooth3(bin);
 bin(:,:,1)=0;
 bin(:,:,end)=0;
 Oberfl = isosurface(X,Y,Z,bin(:,:,:),'verbose');

 s1 = 'PHOTON';
 s2 = 'ELECTRON';
tf  = strcmp(es,s2);
tu = strcmp(ps,s1);

if (tf == true) %Ist es eine Elektronenstrahlung ? -> ja dann soll es hierfür speziell geglättet werden
 
   Oberfl=smoothpatch(Oberfl,1,2); %Glättungsfaktor, wie oft soll es geglättet werden
    subplot(1,2,2), patch(Oberfl,'FaceColor',[1 0 1],'EdgeAlpha',0); view(3); camlight; % Darstllung des Objekts
 stlwrite('test.stl', Oberfl.faces, Oberfl.vertices);
else
  %msgbox('No Electron Radiation')
   
if (tu == true) %Ist es eine Photonenstrahlung ? -> ja dann soll es hierfür speziell geglättet werden
     Oberfl=smoothpatch(Oberfl,1,5,1,1)
    subplot(1,2,2), patch(Oberfl,'FaceColor',[1 0 1],'EdgeAlpha',0); view(3); camlight;
   stlwrite('test.stl', Oberfl.faces, Oberfl.vertices);
     %msgbox('No PhotonRadiation');
   end
 end
 


PhotoblockSkalierungfehlt.jpg
 Beschreibung:

Download
 Dateiname:  PhotoblockSkalierungfehlt.jpg
 Dateigröße:  228.63 KB
 Heruntergeladen:  287 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
JanInfoMed
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 29.08.19
Wohnort: Regensburg
Version: ---
     Beitrag Verfasst am: 23.09.2019, 13:19     Titel: Fertiges Objekt mit der richtigen Skalierung :)
  Antworten mit Zitat      
Es wurde noch überarbeitet und ich habe noch etwas hinzugefügt, dass das Objekt in cm dargestellt wird.
Ich habe also einfach anstatt
Code:
for i=1:sz_z
 x=kz(i)*b(:,1)/100;
 y=kz(i)*b(:,2)/100;


Code:
for i=1:sz_z
 x=kz(i)*b(:,1)/1000;
 y=kz(i)*b(:,2)/1000;


Weiterhin wurde geändert,
Code:

     
gridsz=.5; %in cm
isodist=1000; %umrechnung in cm, kann ich in die For-schleife einfügen anstatt die 1000 -> isodist;
[maxix]=max(b(:,1)); %Damit man das nicht manuell machen muss, einfach den maximalen wert für x und y raussuchen und
[maxiy]=max(b(:,2)); %mithilfe von max für x und y -> das Koordinatensystem erstellen, damit keine Löcher später entstehen
mx=round(maxix);
my=round(maxiy);
mx=mx+4;
my=my+4;
 kx = -mx:gridsz:mx;
 ky = -my:gridsz:my;
 
 kz = bd+gridsz:-gridsz:bd-bh-gridsz; % Damit die unterste und oberste Schichterstellt wird -> + gridsz für die obere Schicht und für die unterste Schicht -> - gridsz


Umwandlung in cm um und somit hab ich die richtigen Maße. Man muss beachten, dass er jedesmal Flächen rausgeschnitten hat und sie nicht erkennent, da ich die Grenzen der x und y Werte zu klein gehalten habe. Beispielsweise habe ich einfach den maximalen Wert aus x und y genommen-> diese als Grenzen festgelegt und es wurde das komplette Objekt angezeigt und die richtige Skalierung, ohne i-welche Löcher.
Ich bin jetzt nur noch gespannt wie das ausgedruckte Objekt aussieht und ob dann wirklich die Maße übernommen worden sind.

NeuesObjekt.jpg
 Beschreibung:

Download
 Dateiname:  NeuesObjekt.jpg
 Dateigröße:  408.71 KB
 Heruntergeladen:  276 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.