Setting the FontData for a Text Object
-
Hello,
I am trying to set the Font for a Text Objectt.I've been following the code from this forum topic: SetFont not working
This example uses MoText, however, and I would like to use the Text Object. I'm unable to access its FontData via
PRIM_TEXT_FONT
:import c4d def main(doc): textObject = c4d.BaseObject(c4d.Osplinetext) doc.InsertObject(textObject) print textObject[c4d.PRIM_TEXT_FONT] #prints None c4d.EventAdd() if __name__=='__main__': main(doc)
If I change the Font manually and then print
Text[c4d.PRIM_TEXT_FONT]
from the Command Line it does print the Font Data, but I don't know how to change this Font in Python.Can anyone explain how to get/set the FontData with a Text Object? Thank you!
-
For whatever reason, the default Text Object has no FontData in
Text[c4d.PRIM_TEXT_FONT]
. By creating a FontData instance, I was able to set the Font.import c4d def main(doc): textObject = c4d.BaseObject(c4d.Osplinetext) doc.InsertObject(textObject) fontData = c4d.FontData() bc = c4d.BaseContainer() bc.SetString(500, 'Arial') bc.SetString(501, '11') bc.SetInt32(502, 400) bc.SetInt32(503, 0) bc.SetString(509, 'Arial') bc.SetString(508, 'ArialMT') fontData.SetFont(bc) textObject[c4d.PRIM_TEXT_FONT] = fontData textObject[c4d.ID_BASELIST_NAME] = bc[500] textObject[c4d.PRIM_TEXT_TEXT] = bc[500] c4d.EventAdd() if __name__=='__main__': main(doc)