Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush Python API
      • ZBrush GoZ API
      • Code Examples on Github
    • Forum
    • Downloads
    • Support
      • Support Procedures
      • Registered Developer Program
      • Plugin IDs
      • Contact Us
    • Categories
      • Overview
      • News & Information
      • Cinema 4D SDK Support
      • Cineware SDK Support
      • ZBrush 4D SDK Support
      • Bugs
      • General Talk
    • Recent
    • Tags
    • Users
    • Login
    1. Maxon Developers Forum
    2. nicholas_yue
    3. Topics
    N
    Offline
    • Profile
    • Following 0
    • Followers 0
    • Topics 14
    • Posts 22
    • Groups 0

    Topics

    • N

      Finding name/handle to last object merged into scene

      Watching Ignoring Scheduled Pinned Locked Moved Cinema 4D SDK
      3
      0 Votes
      3 Posts
      626 Views
      ferdinandF
      Hello @nicholas_yue, without any further questions or postings, we will consider this topic as solved by Wednesday and flag it accordingly. Cheers, Ferdinand
    • N

      C4DUnhandledExceptionFilter - debugging log ?

      Watching Ignoring Scheduled Pinned Locked Moved Cinema 4D SDK
      2
      0 Votes
      2 Posts
      978 Views
      ferdinandF
      Hello @nicholas_yue, thank you for reaching out to us. You can find the crash reports of Cinema in its preference folder. The preference folder should be located in \{​​​​​​​USER}​​​​​​​\AppData\Roaming\MAXON\{​​​​​​​​​​​​​​VERSION}​​​​​​​​​​​​​​\. It can also be opened via a button at the bottom of the preferences menu. [image: 1623227605524-4f6efb26-a940-40f4-ba2e-235d991e14e4-image.png] However, this will lead you to the preference folder of the Cinema 4D app, not the one for commandline.exe. The last element in the path will be a folder with a name like S24_XXX_YYYYYYY where the XXX part is the minor revision and the YYYYYYY part a hash with no higher meaning for the user. So, the path is then for example {USER}\AppData\Roaming\MAXON\S24_037_DFA0E3FB. When you have run the command line app at least once, then there will also be a folder with almost the same path, but only that an _x has been appended, e.g., {USER}\AppData\Roaming\MAXON\S24_037_DFA0E3FB_x. This path then contains all the commandline.exe data, including the bug reports, which should be visible to you under {USER}\AppData\Roaming\MAXON\{VERSION}_x\_bugreports. For testing purposes, you can always invoke a crash on Cinema 4D by using the argument -crashtest. So, .\Commandline.exe -crashtest will force a crash which should pop up in your {USER}\AppData\Roaming\MAXON\{VERSION}_x\_bugreports. Cheers, Ferdinand
    • N

      Object GetNext() method does not advance to next object

      Watching Ignoring Scheduled Pinned Locked Moved Cinema 4D SDK
      3
      0 Votes
      3 Posts
      599 Views
      ferdinandF
      Hi @nicholas_yue, @Cairyn said everything (thanks for that). I would additionally recommend to read the Wikipedia article on graph traversal I have posted in your other thread, as it might clear up a few things for you. Cheers, Ferdinand
    • N

      Alternative way to iterate list other than GetNext()?

      Watching Ignoring Scheduled Pinned Locked Moved Cinema 4D SDK
      4
      0 Votes
      4 Posts
      1k Views
      ferdinandF
      Hi, without further feedback, we will consider this thread as solved by Monday and flag it accordingly. Cheers, Ferdinand
    • N

      Dialog button hangs C4D

      Watching Ignoring Scheduled Pinned Locked Moved Cinema 4D SDK python
      6
      0 Votes
      6 Posts
      1k Views
      ferdinandF
      Hi, without further feedback, we will consider this thread as solved by Monday and flag it accordingly. Cheers, Ferdinand
    • N

      Rendering with specific camera ?

      Watching Ignoring Scheduled Pinned Locked Moved General Talk python
      5
      0 Votes
      5 Posts
      1k Views
      ferdinandF
      Hi, without further feedback, we will consider this thread as solved by Wednesday and flag it accordingly. Cheers, Ferdinand
    • N

      Detecting unsaved changes

      Watching Ignoring Scheduled Pinned Locked Moved Cinema 4D SDK
      3
      0 Votes
      3 Posts
      631 Views
      P
      Is BaseDocument.GetChanged() what you want? See Changed Mode.
    • N

      Getting and setting frame range from RenderData

      Watching Ignoring Scheduled Pinned Locked Moved Cinema 4D SDK
      2
      0 Votes
      2 Posts
      653 Views
      r_giganteR
      Hi @nicholas_yue thanks for reaching out us. Although I'm not sure if your post was meant as a question or as a statement I'm going, nevertheless, to share some thoughts. The data you're looking for are stored in the RenderData BaseContainer and you can set/get them using the usual method. A full exmaple is available on PluginCafe Github Repo. Put down in words the code might looks like something as: def printRDataInfo(in_rdata): # BaseTime values are printed as frame print in_rdata[c4d.RDATA_FRAMEFROM].GetFrame(doc.GetFps()) print in_rdata[c4d.RDATA_FRAMETO].GetFrame(doc.GetFps()) print in_rdata[c4d.RDATA_FRAMESTEP] # Main function def main(): # retrieve the RenderData instance rdata = doc.GetActiveRenderData() #just print the default values print "default rdata from/to/step values" printRDataInfo(rdata) # start is at sec 1 rdata[c4d.RDATA_FRAMEFROM] = c4d.BaseTime(1) # end is at sec 2 rdata[c4d.RDATA_FRAMETO] = c4d.BaseTime(2) rdata[c4d.RDATA_FRAMESTEP] = 1 #just print again the values print "first change with values to secs" printRDataInfo(rdata) # start is at frame 5 rdata[c4d.RDATA_FRAMEFROM] = c4d.BaseTime( 5.0, doc.GetFps()) # end is at frame 15 rdata[c4d.RDATA_FRAMETO] = c4d.BaseTime( 15.0, doc.GetFps()) rdata[c4d.RDATA_FRAMESTEP] = 1 #just print again the values print "second change with values to frames" printRDataInfo(rdata) Cheers, R
    • N

      Directory UI component ?

      Watching Ignoring Scheduled Pinned Locked Moved Cinema 4D SDK
      2
      0 Votes
      2 Posts
      435 Views
      M
      Hi @nicholas_yue this can be done with the CUSTOMGUI_FILENAME Here a complete example import c4d class ExampleDialog(c4d.gui.GeDialog): def CreateLayout(self): """ This Method is called automatically when Cinema 4D Create the Layout (display) of the Dialog. """ settings = c4d.BaseContainer() settings[c4d.FILENAME_DIRECTORY] = True self.AddCustomGui(1000, c4d.CUSTOMGUI_FILENAME, "", c4d.BFH_SCALEFIT | c4d.BFV_CENTER, 0, 0, settings) # Creates a Ok and Cancel Button self.AddDlgGroup(c4d.DLG_OK | c4d.DLG_CANCEL) return True def Command(self, messageId, bc): """ This Method is called automatically when the user clicks on a gadget and/or changes its value this function will be called. It is also called when a string menu item is selected. :param messageId: The ID of the gadget that triggered the event. :param bc: The original message container :return: False if there was an error, otherwise True. """ # User changed the file path if messageId == 1000: print(self.GetFilename(1000)) # User click on Ok button if messageId == c4d.DLG_OK: print(self.GetFilename(1000)) return True # User click on Cancel button elif messageId == c4d.DLG_CANCEL: print("User Click on Cancel") # Close the Dialog self.Close() return True return True def main(): # Creates a new instance of the GeDialog dlg = ExampleDialog() # Opens the GeDialog, since it's open it as Modal, it block Cinema 4D dlg.Open(c4d.DLG_TYPE_MODAL_RESIZEABLE, defaultw=300, defaulth=50) if __name__ == "__main__": main() Cheers, Maxime.
    • N

      Keeping text and edit UI component horizontally

      Watching Ignoring Scheduled Pinned Locked Moved Cinema 4D SDK
      3
      1 Votes
      3 Posts
      605 Views
      M
      Hi @nicholas_yue I confirm the correct way is to define the number of columns you want in a group. Please next time, post on the correct forum see How to post a Question, to set up tags and be sure to set up your topic as q question(QA Functionality. Cheers, Maxime.
    • N

      Unable to update Alembic path in xref

      Watching Ignoring Scheduled Pinned Locked Moved Cinema 4D SDK
      6
      0 Votes
      6 Posts
      1k Views
      M
      I know, it's not what you expected but there is for the moment no way to automate this using Cinema 4D API. Cheers, Maxime.
    • N

      Getting a list of objects at a given hierarchy

      Watching Ignoring Scheduled Pinned Locked Moved Cinema 4D SDK
      2
      0 Votes
      2 Posts
      463 Views
      M
      Hi @nicholas_yue there is nothing builtin but the most optimized way I think will be import c4d def GetNodeListsAtCurrentLevel(bl2D): parent = bl2D.GetUp() if parent is None: parent = bl2D.GetListHead() return parent.GetChildren() def main(): print GetNodeListsAtCurrentLevel(doc.GetActiveTag()) # Execute main() if __name__=='__main__': main() Cheers, Maxime.
    • N

      XRef : Alembic pop-up suppression ?

      Watching Ignoring Scheduled Pinned Locked Moved Cinema 4D SDK
      5
      0 Votes
      5 Posts
      828 Views
      N
      OK, I will use the support forum. Yes, using "Add XRef..." still result in seeing the Alembic Settings pop up every time I open the file.
    • N

      Post import - Updating alembic path does not update scene ?

      Watching Ignoring Scheduled Pinned Locked Moved Cinema 4D SDK
      7
      0 Votes
      7 Posts
      2k Views
      ManuelM
      hi, I'll set this thread to solved without further feedback Cheers, Manuel