• How do I change parameters in Camera using user data

    4
    0 Votes
    4 Posts
    765 Views
    r_giganteR
    Can you create user interfaces with Python or do you somehow build the tool interface with user data? Yes you can! Cinema 4D Python API comes with a complete set of classes to deliver full-fledged UI to your scripts or plugins. Please start looking at the examples in the Python Github repository to get an idea on Python API potentials. If I wanted this camera rig to be setup via a button would I have to create the xpresso interface or would this be done another way? Depending on the final purposes, skipping the Xpresso graph in favor of a Python-based logic could be preferred if the logic is supposed not to be changed by development-agnostic guys. The initial idea of Xpresso was exactly of providing a convenient and easy-to-use interface to implement programmatic behaviors or models without writing a single line of code. Also, is it best to learn Python basics before jumping into C4D plugin development? If so what are the best starting points? Definitively it is! I warmly recommend going through a first dive in Python, get comfortable with those concepts representing its development foundation and then move to the Cinema 4D Python API. This will help you to better understand the examples. Best, Riccardo
  • Beginner:How to set axis to the bottom of a cube by python?

    Moved
    6
    2
    0 Votes
    6 Posts
    2k Views
    M
    @ilad Well, it's not limited to non-animated objects. As @r_gigante posted, you're actually modifying the points and the matrix. Both operations can also be achieved manually. So, no difference if animated or not. The only thing you have to keep in mind when modifying animated objects is to make sure, all keys containing Matrix/PLA data have to be handled as well.
  • Export objects with materials to new document

    python r19
    2
    0 Votes
    2 Posts
    504 Views
    A
    Found it! c4d.documents.IsolateObjects(doc, t_objects) A helper routine to copy the objects t_objects of document doc to a new document (returned). All materials associated are also copied over and the links are corrected. Parameters: doc (c4d.documents.BaseDocument) – The document that contains the objects in t_objects. t_objects (List[c4d.BaseObject]) – The objects to isolate. Return type: c4d.documents.BaseDocument Returns: The document containing the isolated objects. Thank you all !
  • Get current frame at render time with Python?

    3
    0 Votes
    3 Posts
    776 Views
    A
    Hi Maxime, thanks for the response! I was aware that the scene gets copied, but unaware of the GetDocument function so it definitely makes sense! I will give that a try and report back. I have been trying this with both a python effector, as well as in a python xpresso node. Andrew
  • Search Icon in Menubar

    3
    1
    0 Votes
    3 Posts
    578 Views
    lasselauchL
    Wow, thanks so much for this complete Example, Maxime..!!! Great work, really appreciated! Cheers, Lasse
  • Beginner:How can i set a key-frame and value to a cube by python?

    Moved
    5
    1
    0 Votes
    5 Posts
    3k Views
    ManuelM
    hello, thanks @tummosoft, it's nice to see it's helpful @ilad By the way instead of ID_BASEOBJECT_POSITION you could have use ID_BASEOBJECT_REL_POSITION. Both Ids are the same. If you want to know how to get those ids you can use the python console and drag and drop parameters, more information on this page In this case the DescID is composed of two DescLevel. The first define the Vector type, the second de Float type for X, Y and Z. (DescID can have less or more levels) To change the Size.Y of the cube, the descID will be : c4d.DescID(c4d.DescLevel(c4d.PRIM_CUBE_LEN, c4d.DTYPE_VECTOR, 0), c4d.DescLevel(c4d.VECTOR_Y, c4d.DTYPE_REAL, 0))) To change the scale of the object the descID will be : c4d.DescID(c4d.DescLevel(c4d.ID_BASEOBJECT_REL_SCALE, c4d.DTYPE_VECTOR, 0), c4d.DescLevel(c4d.VECTOR_Y, c4d.DTYPE_REAL, 0))) Cheers Manuel
  • ToolResizeData UI

    7
    0 Votes
    7 Posts
    924 Views
    r_giganteR
    @rsodre : looks like it.
  • i code to create a group of cylinders in C4D python,why no response?

    Moved
    5
    1
    0 Votes
    5 Posts
    1k Views
    I
    @r_gigante Thank for your professional help! I am so grateful for your commitment!
  • Dynamic Update on Plug-ins

    r20 python
    5
    0 Votes
    5 Posts
    682 Views
    B
    Hi @m_magalhaes Thanks for the response and clarification specially with the def __init___ and def InitValuesthat was news to me. The plug-in works as expected. Have a great day ahead!
  • What are the options to install a Cinema4D plug-in?

    3
    0 Votes
    3 Posts
    2k Views
    M
    Hi Riccardo, Thank you for the detailed answer. With the many options available, I chose one that fits best with our installer. Again, thanks for the help! Maxime
  • Automatically add effector object into In-/Exclusion User Data

    5
    0 Votes
    5 Posts
    736 Views
    M
    @mfersaoui said in Automatically add effector object into In-/Exclusion User Data: @m_adam Thank you, Now I'm searching for how to add an Object to an In-Exclude user data. I tried with the following code but this doesn't work. import c4d def main(): effectors = op[c4d.ID_USERDATA,2] # In/Exclude User Data plain = doc.GetFirstObject() # Plain object (Effector) effectors.InsertObject(plain, 1) c4d.EventAdd() if __name__=='__main__': main() The actual issue is that effectors = op[c4d.ID_USERDATA,2] perform a copy of the InExcludeData so that means you have to reassign the data correctly after it since you don't do the change directly from the InExcludeData of the BaseContainer. op[c4d.ID_USERDATA,2] = effector Cheers, Maxime.
  • Limit the number of executions of an object plugin.

    5
    0 Votes
    5 Posts
    956 Views
    mfersaouiM
    @s_bach Sorry, I just saw your message. the replies notifications was disabled. Thank You!
  • urllib2.HTTPError: HTTP Error 403

    python
    4
    0 Votes
    4 Posts
    1k Views
    ManuelM
    hello, we did run a couple of test and seems that the "issue" is on Patreon side. HTTP Error 403: Forbidden We did try with other url, it work. We did try adding header-agent or things like that, it failed. They probably changed something on their server that doesn't allow to connect with python with default parameters. You have to contact them in order to know what you have to do. Cheers Manuel
  • How to Get CAJoint points Counts(Bone Display Set : Polygon)

    r20 python
    3
    0 Votes
    3 Posts
    473 Views
    chuanzhenC
    @m_adam Thanks
  • ProjectTool & visual studio: /DELAYLOAD

    8
    0 Votes
    8 Posts
    2k Views
    ManuelM
    hello, if you can give us feedback that would be awesome. Cheers Manuel
  • Visual Studio 2019 Support ?

    2
    0 Votes
    2 Posts
    577 Views
    r_giganteR
    Hi Root Star, thanks for reaching out us. With regard to the IDE version, we highly suggest sticking the compatibility table reported in our documentation. Visual Studio 2019 is not supported by R20 and it's likely not to be officially supported also on R21. With regard to .hxx files, these are generated by our source processor when the building process is initiated and it's highly discouraged to change or get rid of them during the building process. The issues you're facing are highly related to the fact that the solution/project file(s) built by the projecttool (when kernel_app_64bit.exe g_updateProject=<your path to Cinema SDK> is executed) are not 100% compatible with VS2019 resulting in building tool-chain flaws. Best, Riccardo
  • GvNode parameters

    python
    5
    0 Votes
    5 Posts
    1k Views
    ManuelM
    hello, I've got some feedback, You can't rely on the fact that all resource name contain Redshift. (most but not all). As Some parts are generated dynamically this could break your tools. May I ask you what are you trying to implement ? Cheers Manuel
  • Selection-Status of RenderData

    6
    0 Votes
    6 Posts
    772 Views
    lasselauchL
    @m_magalhaes
  • Getting the deform cache of another object under ModifyObject()

    c++
    2
    0 Votes
    2 Posts
    583 Views
    r_giganteR
    Hi CMPX, thanks for reaching out is. With regard to your topic I recommend to have a look at how the Lattice Plane example on Github works. This is a simplified example showing how to deliver the mechanism of the Lattice Deformer on a plane and, at the same time, it put the bases to extend it with an arbitrary mesh. Definitively your mesh modifier should implement the ObjectData::ModifyObject() method to displace the mesh of the object to be deformed based on the displacement that you've set on the controlling mesh. If your controlling mesh(es) are then Cinema 4D generators, then you have to run through BaseObject::GetCache() or BaseObject::GetDeformCache() in order to retrieve the points of the controlling object, and based on their relative position in the space deliver the modification on the target object. Best, Riccardo
  • Can not compile plugin for R20

    7
    0 Votes
    7 Posts
    1k Views
    ManuelM
    hello, this thread will be considered as Solved tomorrow is you have nothing to add. Cheers Manuel