[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Finde Textrahmen mit größter Schriftgröße

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Finde Textrahmen mit größter Schriftgröße

WernerPerplies
Beiträge gesamt: 2762

14. Mai 2021, 09:40
Beitrag # 16 von 28
Beitrag ID: #579884
Bewertung:
(4871 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Faxinger,

Zitat Wieso kann ich nicht danach (sobald der Array fertig generiert wurde)den größten Wert aus diesem Array ermitteln?

Doch kannst Du!

Annahme: Array austeigend:
array.pop() -> letztes Element mit dem größten Wert

Annhame: Array absteigend:
array.shift() -> erstes Element mit dem größten Wert

Das Element wird aus dem Array entfernt.


als Antwort auf: [#579883]
X

Finde Textrahmen mit größter Schriftgröße

Martin Fischer
  
Beiträge gesamt: 12783

14. Mai 2021, 09:41
Beitrag # 17 von 28
Beitrag ID: #579885
Bewertung:
(4870 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Ich glaube Programmierer denken anders :-)


Bin auch kein Programmierer, sondern ein an Automatisierung interessierter Schriftsetzer.

Antwort auf: Wieso kann ich nicht danach (sobald der Array fertig generiert wurde)den größten Wert aus diesem Array ermitteln?


Das geht schon.
Code
var max = Math.max(arr); 


Aber dann kennst Du zwar den maximalen Wert, weißt aber (noch) nicht, in welchem Textrahmen der nun steckt, weil er - skripttechnisch - noch keine Verbindung zum Textrahmen hat.

Nun könntest Du hingehen, und die Schleife nochmal durchgehen und prüfen, wo dieser Wert (zum ersten Mal) vorkommt. Das ist recht umständlich (und frißt ggf. Zeit).
Oder Du kannst die Position des höchsten Wertes im Array ermitteln und von dort auf den entsprechenden Textrahmen in der Auswahl schließen.

In meinem einfachen Code oben habe ich versucht, beim ersten Durchgang quasi das Ergebnis schon mitzunehmen: Was bei der Prüfung gleich richtig einsortiert wird, braucht nicht nachher neu herausgefunden werden.

Aber wie oben angegeben: Es führen viele Wege nach Rom.


als Antwort auf: [#579883]
(Dieser Beitrag wurde von Martin Fischer am 14. Mai 2021, 09:42 geändert)

Finde Textrahmen mit größter Schriftgröße

faxinger666
Beiträge gesamt: 167

14. Mai 2021, 09:42
Beitrag # 18 von 28
Beitrag ID: #579886
Bewertung:
(4866 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

vielen Dank für dein Skript, das kann ich logisch nachvollziehen, bis auf einen kleinen Punkt :-)
Code
                    arr.push(String(sel[i].characters[0].pointSize)); 


Warum wird hier ein String vor die Schriftgröße gesetzt?
Danke
LG
faxinger


als Antwort auf: [#579877]

Finde Textrahmen mit größter Schriftgröße

WernerPerplies
Beiträge gesamt: 2762

14. Mai 2021, 09:43
Beitrag # 19 von 28
Beitrag ID: #579887
Bewertung:
(4866 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Faxinger,

Zitat Wieso kann ich nicht danach (sobald der Array fertig generiert wurde)den größten Wert aus diesem Array ermitteln?

Doch kannst Du!

Annahme: Array austeigend:
array.pop() -> letztes Element mit dem größten Wert

Annhame: Array absteigend:
array.shift() -> erstes Element mit dem größten Wert

Das Element wird aus dem Array entfernt.

Mit meinem Prototypen würde das so aussehen:

ArrayMitTextStyleRanges.sortThis("pontSize", true, true).shift(); // , true -> absteigend, true -> numerisch


als Antwort auf: [#579883]

Finde Textrahmen mit größter Schriftgröße

faxinger666
Beiträge gesamt: 167

14. Mai 2021, 09:54
Beitrag # 20 von 28
Beitrag ID: #579888
Bewertung:
(4853 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
var max = Math.max(arr);

Genau das hatte ich ja versucht mit 2 Durchgängen,
was zwar umständlicher ist als dein elegantes Vorgehen aber eben für mich durchschaubarer :-)

Aber math max lieferte mir nicht die größte pointsize von allen ausgewählten Textrahmen erstes Zeichen, sondern die pointsize des ersten ausgewählten Textrahmens (also die Größe des ersten Zeichens dieses Textrahmens) Und da bin ich gescheitert.

Meine Vorgehensweise wäre so, dass ich nachdem der maxWert ermittelt wurde, den Textrahmen adressieren würde. Wie genau muss ich mir noch überlegen. Vielleicht mit parentTextframe?

Vielen vielen Dank nochmal.


als Antwort auf: [#579885]

Finde Textrahmen mit größter Schriftgröße

Martin Fischer
  
Beiträge gesamt: 12783

14. Mai 2021, 10:10
Beitrag # 21 von 28
Beitrag ID: #579890
Bewertung:
(4865 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: arr.push(String(sel[i].characters[0].pointSize));


Im ersten Entwurf des Skripts oben sollten die Schriftgrößen am Ende als String ausgegeben werden. Zwar hätte die Umwandlung in Kombination mit einem anderen hinzuzufügenden String-Element (in JavaScript) automatisch funktioniert. Aber wo möglich, versuche ich die Kontrolle über diese Umwandlung zu behalten.

Und genau diese ausdrückliche Stringumwandlung sorgt bei Dir bei der späteren Sortierung für unerwartete Ergebnisse: im Array wird nicht nach nu merischen Schriftgrößen sortiert, sondern nach Strings.

Deswegen solltest Du auf die String-Umwandlung der Werte bei der Aufnahme in’s Array verzichten:

Code
arr.push(sel[i].characters[0].pointSize); 



als Antwort auf: [#579888]
(Dieser Beitrag wurde von Martin Fischer am 14. Mai 2021, 10:20 geändert)

Finde Textrahmen mit größter Schriftgröße

Martin Fischer
  
Beiträge gesamt: 12783

14. Mai 2021, 10:14
Beitrag # 22 von 28
Beitrag ID: #579891
Bewertung:
(4859 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Meine Vorgehensweise wäre so, dass ich nachdem der maxWert ermittelt wurde, den Textrahmen adressieren würde. Wie genau muss ich mir noch überlegen. Vielleicht mit parentTextframe?


parentTextFrames[0] würde passen, wenn es denn eine Verbindung von der ermittelten Zahl zu dem Textrahmen, in dem sie enthalten ist, geben würde.
Aber genau diese Verbindung fehlt Dir.
Du hast die maximale Zahl und kannst sie benennen. Aber zu diesem Zeitpunkt wissen Du und das Skript nicht mehr, aus welchem Textrahmen die Zahl entnommen ist, da sie nur noch nackert als Zahl da steht, ohne den Container, aus dem sie ermittelt wurde.


als Antwort auf: [#579888]

Finde Textrahmen mit größter Schriftgröße

faxinger666
Beiträge gesamt: 167

14. Mai 2021, 10:46
Beitrag # 23 von 28
Beitrag ID: #579893
Bewertung:
(4842 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke für die Erklärung, jetzt habe ich es geschnallt.

Schönen Tag noch.

Alles Liebe
faxinger


als Antwort auf: [#579891]

Finde Textrahmen mit größter Schriftgröße

Uwe Laubender
Beiträge gesamt: 5316

14. Mai 2021, 15:00
Beitrag # 24 von 28
Beitrag ID: #579897
Bewertung:
(4821 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,
ein Array kann ja nicht nur Strings speichern, man könnte auch den zugehörigen character oder textStyleRange mit dazu speichern. In einem Aufwasch.

Oder man macht das in einem Objekt.

Eine Schleife durch alle textStyleRanges, die PointSize wird ermittelt, übersteigt sie die PointSize im gespeicherten Objekt oder Array, werden die Werte dort einfach neu zugewiesen.

Hier ein Beispiel mit einem Array als Resultat.
Voraussetzung ist ein ausgewählter Textrahmen:

Code
var selectedTextFrame = app.selection[0]; 

var allTextStyleRanges =
selectedTextFrame.textStyleRanges.everyItem().getElements();

var resultArray =
[
[
0.001 ,
"Default"
]
];

for( var n=0; n<allTextStyleRanges.length; n++ )
{
if( resultArray[0][0] < allTextStyleRanges[n].pointSize )
{
resultArray[0][0] = allTextStyleRanges[n].pointSize;
resultArray[0][1] = allTextStyleRanges[n];
}
};


app.select( resultArray[0][1] );
alert( "PointSize:" +"\r"+ resultArray[0][0] );



als Antwort auf: [#579893]

Finde Textrahmen mit größter Schriftgröße

Martin Fischer
  
Beiträge gesamt: 12783

14. Mai 2021, 15:39
Beitrag # 25 von 28
Beitrag ID: #579899
Bewertung:
(4810 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

zum Einen hatten Herr Perplies und ich oben auf die Möglichkeit eines Arrays mit Objekten und anschließender Sortierung bereits hingewiesen. Auf eine Ausführung dieses Ansatzes hatte ich jedoch bewusst verzichtet, um es Faxinger nicht zu kompliziert zu machen.

Zum Anderen geht es Faxinger nicht um die Ermittlung der textStyleRanges eines ausgewählten Textrahmens, sondern um die Bestimmung desjenigen Textrahmens (aus einer Auswahl von mehreren - ausdrücklich mit Inhalt), dessen erstes Zeichen (oder erster TextStyleRange) den höchsten Schriftgrad hat.

Oder hast Du für Deine Idee mit dem zweidimensionalen Array bewusst eine geänderte Aufgabenstellung verwendet?



Ferner hätte ich noch eine Frage zu Deiner Feststellung oben:
Zitat Arbeite mit textStyleRanges, anstatt mit einzelnen Zeichen.
[..]
Geht, je nach formatiertem Text, sehr viel schneller.
Vor allem dann, wenn Du große Textmengen hast.


Ist dem bei der gegebenen Aufgabenstellung tatsächlich so, dass die Auswertung des ersten textStyleRanges statt des ersten characters in mehreren ausgewählten Textrahmen einen zeitlichen Unterschied macht?
Kann mir das eigentlich nicht vorstellen, habe das aber auch nicht nachgemessen, weil ich vermute, dass bei ein paar Textrahmen der zeitliche Unterschied nicht ins Gewicht fallen dürfte und auf einem Druckbogen erwarte ich eine überschaubare Zahl an zu prüfenden Textrahmen, und nicht hunderte oder gar tausende.

Aber ich weiß, Du bist ein Perfektionist. ;-)


als Antwort auf: [#579897]
(Dieser Beitrag wurde von Martin Fischer am 14. Mai 2021, 16:05 geändert)

Finde Textrahmen mit größter Schriftgröße

Uwe Laubender
Beiträge gesamt: 5316

14. Mai 2021, 16:09
Beitrag # 26 von 28
Beitrag ID: #579902
Bewertung:
(4793 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,
ich hoffe, ich habe ein für faxinger lesbares und verstehbares Skript geschrieben, das nach seiner sehr eng formulierten Aufgabenstellung etwas mehr Perspektive zeigt.


als Antwort auf: [#579899]

Finde Textrahmen mit größter Schriftgröße

Martin Fischer
  
Beiträge gesamt: 12783

14. Mai 2021, 16:23
Beitrag # 27 von 28
Beitrag ID: #579903
Bewertung:
(4781 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

dem ist gewiss so.
Mich verwundert lediglich etwas die Konzentration auf die textStyleRanges.
Und da dachte ich, ich könnte ja mal nachfragen, weil ich es mir nicht so recht vorstellen kann, dass/wie die Auswertung der jeweils ersten textStyleRanges von vielen Textrahmen performanter sein soll als die Auswertung von den jeweils ersten characters.

Werde gelegentlich mal eine Versuchsanordnung anlegen und dem nachspüren ob und ab wann das messbar wird.


als Antwort auf: [#579902]
(Dieser Beitrag wurde von Martin Fischer am 14. Mai 2021, 16:25 geändert)

Finde Textrahmen mit größter Schriftgröße

faxinger666
Beiträge gesamt: 167

18. Mai 2021, 15:54
Beitrag # 28 von 28
Beitrag ID: #579920
Bewertung:
(4143 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe und Martin,

nochmals herzlichen Dank für eure Anregungen.
@Uwe: der Weg über die textstyleRanges wäre mir deshalb nicht in den Sinn gekommen, weil es ja nur um die Ermittlung des ersten Zeichens bzw. dessen Schriftgröße aus einer Auswahl an Textrahmen ging. Bei textstyleRanges denke ich eher an wechselnde Formatierungen innerhalb eines Textabschnittes und das wäre in diesem Fall für mich kein Unterscheidungsmerkmal mit dem ich arbeiten würde.

Die Laufdauer des Skripts ist in meinem Fall auch nebensächlich, da meistens eine überschaubere Anzahl an Textrahmen (meist unter 10) ausgewählt ist. Ob die Ermittlung des Textrahmens mit dem größten ersten Zeichens dabei 0,05 Sekunden oder 0,04 Sekunden dauert ist mir schlichtweg Banane :-)

Alles Liebe
faxinger


als Antwort auf: [#579897]
X

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
17.04.2024

Online
Mittwoch, 17. Apr. 2024, 10.00 - 10.30 Uhr

Webinar

Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Günther Business Solutions und Impressed treten in einem Webinar den Gegenbeweis an. Experten beider Unternehmen zeigen, wie Großformatdrucker vom Einsatz zweier bewährter Lösungen profitieren können: • von advanter print+sign von Günther Business Solutions, dem ERP-System für den Großformatdruck, dass alle Phasen der Wertschöpfung im Large Format Printing abdeckt • von Impressed Workflow Server, der smarten PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt Über die Kombination beider Lösungen können Großformatdrucker ihre Prozesse mit modernen Workflows Schritt für Schritt automatisieren – und so zügig deutliche Zeit- und Kosteneinsparungen realisieren. Das Webinar sollten Sie sich nicht entgehen lassen – damit Sie keine Effizienzpotenziale mehr liegen lassen. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Ja

Organisator: Impressed / Günther Business Solutions

https://www.impressed.de/schulung.php?c=sDetail&sid=326

Und es geht doch: Automatisierung im Großformatdruck!