Further to this post:
https://plugincafe.maxon.net/topic/12559/python-tag-not-updating
Where to I pass the str variable in the code? I do not see the place for it. Thanks.
Further to this post:
https://plugincafe.maxon.net/topic/12559/python-tag-not-updating
Where to I pass the str variable in the code? I do not see the place for it. Thanks.
Hi @Swinn could you post your code?
MAXON SDK Specialist
import c4d
import maxon
def message(msg_type, data):
if msg_type == c4d.MSG_NOTIFY_EVENT:
event_data = data['event_data']
msg_id = event_data['msg_id']
if msg_id == c4d.MSG_DESCRIPTION_POSTSETPARAMETER:
desc_id = event_data['msg_data']['descid']
if desc_id[1].id == 2398: # The ID of the User Data
txt = "Swinn"
pythonLogger = maxon.Loggers.Python()
pythonLogger.Write(maxon.TARGETAUDIENCE.ALL, txt, maxon.MAXON_SOURCE_LOCATION(1), maxon.WRITEMETA.UI_SYNC_DRAW)
mtx = op.GetObject().GetMg()
mtx.off = mtx.off + c4d.Vector(10,0,0)
op.GetObject().SetMg(mtx)
def main():
obj = op.GetObject()
# Check if we already listen for message
if not obj.FindEventNotification(doc, op, c4d.NOTIFY_EVENT_MESSAGE):
obj.AddEventNotification(op, c4d.NOTIFY_EVENT_MESSAGE, 0, c4d.BaseContainer())
if __name__=='__main__':
main()
Here in the latest S22 it's working as it should, and print Swinn to the console, on which version are you?
Moreover what I was referring to is the LogerInterface.Write require a maxon.String, by convenience, if the passed data is a str (python Type) it will create on the fly a maxon.String, but if you pass another kind of data type, this will not be converted to a string even if there is a possible string representation, so you need to transform your datatype to a str the usual way is by doing str(YourData) so in our example, it will give us
txt = c4d.Vector()
pythonLogger = maxon.Loggers.Python()
pythonLogger.Write(maxon.TARGETAUDIENCE.ALL, str(txt), maxon.MAXON_SOURCE_LOCATION(1), maxon.WRITEMETA.UI_SYNC_DRAW)
Cheers,
Maxime.
MAXON SDK Specialist