Verfasst am: 07.10.2013, 16:45
Titel: Print mit Matlab
Hallo,
ich muss Simulink Modelle mit Matlab in pdf ausdrucken, dabei ist es wichtig, dass die Referenz Position von Subsysteme im Modell bekannt sein soll, weil später wird die für Hyperreferenzierung verwendet. ich habe das folgendermaßen versucht. Es haut hin aber saubere Position von Subsystemen kriege ich trotzdem nicht raus.
1. print(hSystem,'-depsc',tempImageName, '-r100'); Mit dem Kommand drucke ich erstmal ein eps einer Simulink Ebene. Danach versucht das Skript, den .eps file in Matlab einzulesen und dabei sucht die Positionen von Subsystemen aus der Datei. Leider funktioniert das für Umfangreiche Simulink Modelle nicht, weil irgendwie die vom Matlab erzeugte .eps file ist immer Unzterschiedlich. Ich kann nichts für allgemeines programmieren.
Im Anhang habe ich eine Datei angehängt. Gibt es eine bessere Methode für die Lösung meines Problems?
%*********************************************************
% Process size parameters
%*********************************************************
n = 15;
zahl = 0;
zeichen = 1;
% read eps file
fid = fopen(tempImageName,'r');
tline = fgetl(fid);
whileischar(tline)
k = 1;
ifstrfind(tline,'%%PageBoundingBox:') [b, bb] = regexp(tline,'','match', 'split');
width = str2double(bb{6});
height = str2double(bb{7});
end ifstrfind(tline,'/dpi2point') [m, mm] = regexp(tline,' ','match', 'split');
Faktor = str2double(mm{2});
end ifstrfind(tline,'%%IncludeResource: font Helvetica') for i=1:n
tline = fgetl(fid);
ifregexp(tline, '/Helvetica' ,'start');
% Ri_Subsystem: Right Subsystem
Ri_Subsystem = regexpi(tline,'[\d.]', 'match');
for Ri=1: length(Ri_Subsystem)
Right_Subsystem = Ri_Subsystem{Ri};
ifstrcmp(Right_Subsystem,'.')
zahl = str2double([Ri_Subsystem{Ri-2:end}])/10;
Ri = 1;
break end end end % Sea_Subsystem: Search Subsystem
Sea_Subsystem = regexp(tline, '(' ,'start');
if Sea_Subsystem == true & zahl == Faktor
%cursor is at the line where the name of subsystem ist written
%in .eps file
temp = regexp(tline,'\w*','match');
subsystem = temp{1};
while ~strcmp(subsystem,subsystems(k).name)
%Matching the name of subsystem found in .eps
%file with the subsystems present in workspace % if k <= length(subsystems) & strcmp(subsystem,subsystems(k).name)==true % zeichen = 2; % break if k == length(subsystems) & strcmp(subsystem,subsystems(k).name)==false
zeichen = 2;
break end
k = k+1;
end
zahl = 0;
zeichen = 1;
end
Subsystem_Koor = regexp(tline, 'gs' ,'start');
if Subsystem_Koor == true
%searching the coordinates of find subsystem in .eps
%file and writing it to the structure subsystems
pos_obj = textscan(tline, '%s %n %n %n %n %s %s %s', 'delimiter', ' ');
pos_obj1 = pos_obj(2:5);
if zeichen ~= 2
subsystems(k) .position_EPS = cell2mat(pos_obj1)./Faktor;
k = 1;
break end break end end end
tline = fgets(fid);
end fclose(fid);
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
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.