2021-08-26 11:22 PM - last edited on 2021-09-14 08:49 AM by Noemi Balogh
!-- Init _iPgNr = 0 _iBkNr = 0 p_to_m = GLOB_SCALE / 1000 !-- Syles define style{2} "globStyle" "Papyrus", 2.5 * p_to_m, 4 define style{2} "S1" "Arial", 1.0 * p_to_m, 0 define style{2} "S2" "Times", 1.5 * p_to_m, 1 define style{2} "S3" "Luminari", 4.0 * p_to_m, 0 define style{2} "S4" "Arial Black", 4.0 * p_to_m, 32 !-- Base hotspot2 0,0 !-- Setup _rt dict _rt _rt.x = 0.5 _rt.y = 0.5 _rt.anchor = 1 _rt.align = 1 _rt.style = "globStyle" !-- First Block _rt.line[1].part[1].s = "S3" _rt.line[1].part[1].v = "Luminari normal " _rt.line[1].part[2].s = "S4" _rt.line[1].part[2].v = "Arial Black sup " _rt.line[1].part[3].s = "S3" _rt.line[1].part[3].v = "Luminari normal " _rt.line[1].part[4].s = "S4" _rt.line[1].part[4].v = "Arial Black sup" _rt.line[2].v = "Times bold" _rt.line[2].s = "S2" _rt.line[3].v = "Papyrus underline" !_rt.line[3].s = "S3" !-> use global style _rt.line[4].s = "S1" _rt.line[4].v = "Arial normal" _rt.line[5].part[1].s = "S1" _rt.line[5].part[1].v = "" _rt.line[5].part[2].s = "S2" _rt.line[5].part[2].v = "Times Bold" gosub "rtBlock" rect2 _rt.x, _rt.y, _rt.x + _rtWidth, _rt.y + (-1 * _rtHeight) !-- Second Block add2 0,-1* (_rtHeight + 0.1) _rt.line[1].s = "S1" _rt.line[1].v = "Luminari normal" gosub "rtBlock" rect2 _rt.x, _rt.y, _rt.x + _rtWidth, _rt.y + (-1 * _rtHeight) !======================================================================================================================= end ! end ! end ! end ! end ! end ! end ! end ! end ! end ! end ! end ! end ! end ! end ! end ! end ! end ! end ! end ! !======================================================================================================================= !======================================================================================================================= "rtBlock": ! ---------------------------------------------------------------------------------------------------------------------- ! Mehrzeiliger Text als Richtext ausgeben. ! Es können mit .part[] pro Paragraph mehrere verschiedene Textstile gesetzt werden. ! Stift muss vor Aufruf gesetzt werden. !----------------------------------------------------------------------------------------------------------------------- ! ! Caller: ! _rt - (dict) ! .x - (real) x-Position des Richtextes ! .y - (real) y-Position des Richtextes ! .anchor - (int) Textanker ! .align - (int) Ausrichtung der Paragraphen ! .style - (string) Style für alle einfachen Zeilen ! .line - (array) Array mit Texten pro Zeile ! !----------------------------------------------------------------------------------------------------------------------- ! ! Responder: ! _rtHeight - (real) Textblock Höhe ! _rtWidth - (real) Textblock Breite ! !----------------------------------------------------------------------------------------------------------------------- ! ! Other: ! _iPgNr - (int) Paragraph-Index (am Anfang des Scipts initialisieren und auf 0 setzen) ! _iBkNr - (int) Block-Index (am Anfang des Scipts initialisieren und auf 0 setzen) ! !----------------------------------------------------------------------------------------------------------------------- ! ! Help: ! mögliche Struktur für _rt.line[]: ! .line.s - (string) Style (optional) ! .line.v - (string) Text ! ! oder: ! .line.part.s - (string) Style ! .line.part.v - (string) Text ! ! * m darf aktuell maximal 4 sein! (weitere Teile werden ignoriert) ! !======================================================================================================================= __nLines = vardim1(_rt.line) for q = 1 to __nLines _iPgNr = _iPgNr+1 put _iPgNr if haskey(_rt.line.v) then if haskey(_rt.line.s) then paragraph _iPgNr _rt.align, 0, 0, 0, 1 style _rt.line.s _rt.line.v + "\ts = " + _rt.line.s endparagraph else paragraph _iPgNr _rt.align, 0, 0, 0, 1 _rt.line.v + "\tgs = " + _rt.style endparagraph endif else if haskey(_rt.line.part) then if vardim1(_rt.line.part) = 1 then paragraph _iPgNr _rt.align, 0, 0, 0, 1 style _rt.line.part[1].s : _rt.line.part[1].v endparagraph endif if vardim1(_rt.line.part) = 2 then paragraph _iPgNr _rt.align, 0, 0, 0, 1 style _rt.line.part[1].s : _rt.line.part[1].v style _rt.line.part[2].s : _rt.line.part[2].v endparagraph endif if vardim1(_rt.line.part) = 3 then paragraph _iPgNr _rt.align, 0, 0, 0, 1 style _rt.line.part[1].s : _rt.line.part[1].v style _rt.line.part[2].s : _rt.line.part[2].v style _rt.line.part[3].s : _rt.line.part[3].v endparagraph endif if vardim1(_rt.line.part) >= 4 then paragraph _iPgNr _rt.align, 0, 0, 0, 1 style _rt.line.part[1].s : _rt.line.part[1].v style _rt.line.part[2].s : _rt.line.part[2].v style _rt.line.part[3].s : _rt.line.part[3].v style _rt.line.part[4].s : _rt.line.part[4].v endparagraph endif else paragraph _iPgNr _rt.align, 0, 0, 0, 1 !style _rt.style "No Text to print!" endparagraph endif endif next q _iBkNr = _iBkNr+1 __bkName = "bk" + str("%",_iPgNr) style _rt.style textblock_ __bkName 0, _rt.anchor, 0, 1, 1, 0, __nLines, get(__nLines) richtext2 _rt.x, _rt.y, __bkName _dummy = REQUEST ("TEXTBLOCK_INFO", __bkName, _rtWidth, _rtHeight) _dummy = removekey(_rt.line) return
2021-08-27 04:16 PM
paragraph set style "style 1" "text" endparagraph paragraph set style "style 2" "text" endparagraph
2021-09-15 12:44 PM
The problem is with font names, all used style's font names have to be correct.
In GDL the font names visible on the Archicad UI can't be used. REQUEST "FONTNAMES_LIST" returns a list of installed fonts. "Arial" can be "Arial Western" or "Arial Central European", etc...