Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
On 09/04/2013 at 08:55, xxxxxxxx wrote:
Hi all,
I am trying to set the 'offset' parameter of an XRef object, but I can't get it to work. Does anybody know what I am doing wrong?
Here's my code:
op[c4d.ID_CA_XREF_OFFSET] = c4d.BaseTime(10,doc.GetFps()) c4d.EventAdd()
Thanks in advance!
On 09/04/2013 at 09:16, xxxxxxxx wrote:
your code is technically correct, however the definition of your basetime is a bit unusual. the basetime denominator is not meant to be the documents frames per second. basetime is just a format to store fractional values like 1/3 without rounding errors. the basetime in your example would be for 30 fps 10.0/30.0 = 0.3_ sec.
On 09/04/2013 at 10:20, xxxxxxxx wrote:
Hi, and thanks for the reply.
So do you know what to change to get it to work? What is the correct use of c4d.basetime?
Grtz!
On 09/04/2013 at 10:36, xxxxxxxx wrote:
it is difficult to say what is right and what is wrong in your context. when you want to set the xref time offset to 10 seconds it is simply
op[c4d.ID_CA_XREF_OFFSET] = c4d.BaseTime(10)
if your code still does not work as expected you will have to add a more extensive example.
On 09/04/2013 at 11:31, xxxxxxxx wrote:
Hi again,
If I have an XRef object in the scene, select it and run this code:
import c4d op[c4d.ID_CA_XREF_OFFSET] = c4d.BaseTime(10) c4d.EventAdd()
Then nothing happens. No changed offset, no errors in the console. Nothing.
On 09/04/2013 at 12:09, xxxxxxxx wrote:
i do not mean to be rude but your code does not make any sense at all. op is a predefined variable which is pointing to the hosting object for a script. for an actual script this is None, for a python tag it is the tag and for a python node the GvNode. so op can never be a xref in a scripting environment. also your snippet is pretty unusual, as you include the import statements but not any wrapping method for your code.
this script will set the time offset to 10 sec for the currently selected xref. edit: it does not actually check if obj is a baselist2d (and a xref) so this is something you might want to change for an actual script
import c4d def main() : obj = doc.GetActiveObject() obj[c4d.ID_CA_XREF_GENERATOR]]= True obj[c4d.ID_CA_XREF_OFFSET] = c4d.BaseTime(10) c4d.EventAdd() if __name__=='__main__': main()
On 09/04/2013 at 12:27, xxxxxxxx wrote:
And Hi again
Hmmm... either I am not getting it or something weird is going on, because if I run your code while an XRef object is selected, the offset does not change. (By the way, there is one bracket too many in your script that caused it to throw an error initially) Have you tried the script yourself? Does it work for you?
I modified your code a bit to test some things. When i put in some lines to change some other parameters, those lines seem to work fine. See the comments in the code. Strange...
Thanks very much for taking the time to help me though! Cheers!
import c4d
def main() : obj = doc.GetActiveObject() #this doesn't seem to do anything: obj[c4d.ID_CA_XREF_GENERATOR] = True obj[c4d.ID_CA_XREF_OFFSET] = c4d.BaseTime(10) #this, however, works fine: obj[c4d.ID_BASEOBJECT_REL_POSITION,c4d.VECTOR_X] = 10 obj[c4d.ID_CA_XREF_SHOWOBJECTS] = False c4d.EventAdd()
if __name__=='__main__': main()
On 09/04/2013 at 12:52, xxxxxxxx wrote:
hi,
no i hadn't tested it. there is some strange behaviour for xref objects going on. but if you set the generator flag manually (not sure why c4d refuses it to be set programmatically) the offset value will be written correctly. this time i have actually tested it
On 09/04/2013 at 12:55, xxxxxxxx wrote:
Ah! Finally! Thanks a lot man!
On 09/04/2013 at 14:54, xxxxxxxx wrote:
op is referring to the active object in a script, so you can omitt this line: obj = doc.GetActiveObject()
Best, -Niklas