Jump to content


Bronze Supporter
  • Content Count

  • Joined

  • Last visited

Community Reputation

5 Poor

About Eterea

  • Birthday 07/10/1966

Contact Methods

  • Website URL

Profile Information

  • First Name
  • Last Name
  • C4D Ver
    R20.026 Studio
  • Location
    Zaragoza, Spain
  • Interests
    I like many things, some related to my professional career (graphic designer and "3D artisan") and others not: design, art, architecture, photography, science, technology, cinema, music, literature, travelling, nature...

Recent Profile Visitors

1,202 profile views
  1. @kalugin THANK YOU SO MUCH for sharing these commented lines of code. This is a gold resource to start learning how Python works in C4D. Very grateful for this :-)
  2. I have slightly modified the script to transfer the Relative Position, Scale and Rotation from each selected object to their correspondent instances (to better mimic what the native “Instance” tool does). I'm sure this could be done in a more smart way, but anyway it works pretty well :-) import c4d from c4d import gui # Welcome to the world of Python # Created and shared by Kalugin here: # https://www.c4dcafe.com/ipb/forums/topic/104182-create-instances-from-selected-objects/ def main(): doc.StartUndo() # this generates an UNDO stack, every "AddUndo" between .StartUndo() and .EndUndo() will be "undoable" in a single "Ctrl+Z" objects = doc.GetActiveObjects(0) # this get's currently active objects in a list. The "0" parameter means that we don't want to select the children of the objects and we don't care about the oreder of the returned selection for obj in objects: # this iterates over the list of active objects. So for each object: instance = c4d.BaseObject(c4d.Oinstance) # create a new instance object instance.SetName(obj.GetName() + '_inst') # set it's name to the object's name + "_inst" instance.SetRelPos(obj.GetRelPos()) # set it's Relative Position to the object's Relative Position instance.SetRelScale(obj.GetRelScale()) # set it's Relative Scale to the object's Relative Scale instance.SetRelRot(obj.GetRelRot()) # set it's Relative Rotation to the object's Relative Rotation instance[c4d.INSTANCEOBJECT_LINK] = obj # set the instance's source object instance.InsertAfter(obj) # insert the instance object in the object manager, right before the source object. You can use other options. Like .InsertBefore(obj), if you want it after the source object. doc.AddUndo(c4d.UNDOTYPE_NEW, instance) # this adds the insertion of our new instance to the undo stack. doc.EndUndo() # this ends the undo stack c4d.EventAdd() # we infrom C4D that something has occured, otherwise it will not refresh until you click something or do something else if __name__=='__main__': main()
  3. Just a quick note to confirm that I installed your script, kalugin, and it works fantastically! Your comments will be also very useful, as I said. I'm very grateful :-) Best regards.
  4. Thank you so much for sharing that scripts, Kalugin! And also for commenting: this will be of great help! Away from my computer now. But tomorrow I will install for sure! BIG THANKS :-)
  5. Thanks for your reply, Bezo! That is what I was afraid… Well, is not so hard. And, on the other hand, the customisation capabilities in C4D is fantastic, easy and robust :-) Best regards.
  6. With every new C4D release I adapt my interface layouts and palettes to my taste. And there's a thing that bothers me to suffer every time. I don't know if there is a better way to do it? — First of all I create several custom palettes (up to 7-8) with my preferred tools and save each one of these individual custom palettes on my disk. — And then I create several Layouts: to model, to setup/rig my objects, to animate, to xpresso-ing, to render tests… etc. — The big part of my Custom Palettes are present in ALL my Custom Layouts. THEN: Once I end with all this customization. If I decide to make a change to a given Palette, then I need to re-save that palette, and go to each one of my Custom Layouts to substitute the original outdated palette by the new-updated one. This, for each one of my Layouts and Palettes… Is there some way to store a “Palette A”, then use this “Palette A” in 5 different Layouts, in a way that I could update my “Palette A” for all those 5 layouts automatically? THANKS! :-)
  7. Dear HSrdelic, It works PERFECTLY FINE! :-) Now I feel a complete dumb… So many years using that COFFEE script to quickly create a single instance from an object… And in fact is NOT necessary a script for that simple operation. There is a native tool and you can simply search for “Instance” in the “Customize commands” and assign your prefered keymap to that command. So simple! Now I asked myself WHY I initially got that old script, then? And the response is this: that old script allowed to create individual instances for each selected objects (you select 5 objects and automatically get 5 instances) But that is not really so necesary for my workflows… I can live without that script… Thanks again, HSrdelic :-)
  8. Converting all my old simple (or relatively simple) scripts to work with C4D 20… I'm very accustomed to simply press “i” to create an instance of selected object, thanks to an old COFFEE script (you can see it HERE, I don’t remember where I found it, years ago) Now I have created this Python script to do the same thing (just copying from the Script Log, I have no idea of coding for C4D) import c4d #Welcome to the world of Python def main(): def tool(): return c4d.plugins.FindPlugin(doc.GetAction(), c4d.PLUGINTYPE_TOOL) def object(): return doc.GetActiveObject() def tag(): return doc.GetActiveTag() def renderdata(): return doc.GetActiveRenderData() def prefs(id): return c4d.plugins.FindPlugin(id, c4d.PLUGINTYPE_PREFS) c4d.CallCommand(200000067, 200000067) # Duplicate tool()[c4d.MDATA_DUPLICATE_COPIES] = 1 tool()[c4d.MDATA_DUPLICATE_INSTANCES] = 1 c4d.CallButton(tool(), c4d.MDATA_APPLY) if __name__=='__main__': main() c4d.EventAdd() And it works perfectly except for a small thing: it creates a single instance from my selected object (great) but it places it inside a NULL. And I don’t want that. I would prefer my instance to be created automatically just side by side the original object, without nulls. Can you help me with this? THANKS! :-)
  9. Thank you so much for your detailed reply, Hermen! Just this afternoon I have found this interesting post on CGSociety (which is coincident with what you explain) and I have created several scripts like that. Step by step I'm converting to Python all those lost (simple) COFFEE resources that I have used for years :-) THANKS AGAIN!
  10. Thank you so much for your detailed guide, Bezo! I will try tomorrow. Really appreciate :-) EDIT: just tried it and works fantastically well! Thanks, again, bezo! :-)
  11. Hi guys! I just installed the new r20 and, as you surely know, all COFFEE plugins and scripts doesn't work :-/ Could you give me some clue to convert these really simple 2-3 lines COFFEE snippets from COFFEE to Python? I used them for years as quick shortcuts to enable/disable things. I have certain experience creating Python scripts for Modo. But ZERO experience with Python in Cinema. Snippet 1 // Editor_Renderer_OFF.CSC CallCommand(100004781); // Editor Off CallCommand(100004784); // Renderer Off Snippet 2 // ToggleGrid.CSC var doc = GetActiveDocument(); doc->GetActiveBaseDraw()#BASEDRAW_DISPLAYFILTER_GRID = !doc->GetActiveBaseDraw()#BASEDRAW_DISPLAYFILTER_GRID; If you could give me some orientation with only these two, I would convert ALL THESE GUYS (well, the 2-3 lines ones, not the more complex at bottom…) BIG THANKS!
  12. Eterea

    Problem with CINEVERSITY Support-SOLVED

    Just a quick note to confirm that I finally have been contacted by Cineversity, through Facebook Messenger. I finally got an email to directly contact with a person at MAXON.net and they are in charge on this issue. Thanks for your help, guys! :-)
  13. Eterea

    Problem with CINEVERSITY Support-SOLVED

    Thank you SO MUCH, HSrdelic & PBarrelas! :-) I have also sent a Twitter mention to Cineversity and a direct message through their Facebook site. I also think that they will respond on time. Big thanks again.
  14. Eterea

    Problem with CINEVERSITY Support-SOLVED

    Hi PBarrelas! Thanks for your feedbak :-) I also have my Cineversity Premium Account “tied” to my MSA. But not as an “automatic thing”. On august 2017 Techlimits offered me this MSA (which I paid using Bank Transfer) and they said that I would receive a coupon from MAXON to get a free Cineversity Premium Account I received that coupon from MAXON on September 1, 2017. And once I introduced that coupon in the Cineversity system, they (Cineversity) ask me to introduce my Credit Card info for further renew. And, 1 year ago, that does not seemed to me like an “optional thing”. It seemed more like an mandatory step. And I did so. Now, 1 year later, I have paid again my MSA renew to Techlimits, and both Techlimits & MAXON says that I will receive my coupon for Cineversity (from MAXON) ALONG September. But on Cineversity I see that “automatic renew” is planned for September 1st (!?!?!?) And now I’m here, in the middle of this MAXON / TECHLIMITS / CINEVERSITY nosense situation… All this could be easily addressed, I suppose, if Cineversity would RESPOND to my messages. But that is NOT the case, unfortunately :-(
  15. I’m having an unpleasant problem with CINEVERSITY Support: I have contacted them on two occasions using the official and unique form located HERE. First time weeks ago and also for a second time, just yesterday. And no one responds to my messages. This seems to me a very bad support. Well, in fact, a non-existent support. LONG DETAILED STORY: — On July 23 I renewed my MSA (from September 01, 2018 to August 31, 2019) with TECHLIMITS, official MAXON Distributor in Spain. They said that I will receive (from MAXON) a coupon to renew without cost my Cineversity Premium Membership. “Great!” — When I go to my CINEVERSITY account I see that my Premium Membership will renew automatically on September 1st, 2018. And they have my Credit Card info stored in their system. — I have contacted MAXON and they say that they will send my coupon for CINEVERSITY free-renew “along September…” This means that CINEVERSITY will charge my Credit Card on September 1st, because I won’t receive my coupon at time to avoid that. TECHLIMITS said that I should contact directly to CINEVERSITY to explain all this situation. And this is what I have done, through their official Contact Form. Twice. Without any kind of response (and yes: I have checked my spam folder) As a side note: the guy at MAXON support said me that I also could try “to remove my credit card info at CINEVERSITY” or maybe “cancel premium subscription, and then it will change from Premium to Standard until I get the new coupon” And well: it appears that neither of the above options works. — If I go to my CINEVERSITY Membership area I can see there a “Manage Subcription” sub-area. And an “Update Payment Information” with the info for my Credit Card. And there is no way to remove that info. It only allows to substitute the old CC info with a new one. But no “Delete” button, at all. — If I go to the “Cancel Subscription” area I read this message: “Are you sure you would like to cancel your subscription? Your subscription will remain active until the current subscription period ends, after which it will downgrade to a free account.” Once I press the “Cancel Subscription” button nothing changes at all. The info about my membership remains exactly the same (see attached image capture done AFTER Subscription cancellation): Cristobal Vila Account Level: Premium Account Status: Active Member Since: September 1st, 2017 Subscription Renews: September 1st, 2018 (To my eyes, nothing here indicates that it will be renewed in standard mode, without charging my credit card) I really hope that someone at CINEVERSITY could read this. To the rest: any other idea about how to proceed? And, by the way, I’m not happy at all about how all these things work. Too much convoluted and confused. And I’m not joyful neither with my Credit Card info being stored there without possibility to delete it, to be honest. Thanks for your help (and sorry for the long post)