Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware 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
    • Unread
    • Recent
    • Tags
    • Users
    • Login
    1. Maxon Developers Forum
    2. nicholas_yue
    3. Topics
    N
    • Profile
    • Following 0
    • Followers 0
    • Topics 14
    • Posts 22
    • Best 2
    • Controversial 0
    • Groups 0

    Topics created by nicholas_yue

    • N

      Finding name/handle to last object merged into scene

      Cinema 4D SDK
      • • • nicholas_yue
      3
      0
      Votes
      3
      Posts
      569
      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 ?

      Cinema 4D SDK
      • • • nicholas_yue
      2
      0
      Votes
      2
      Posts
      922
      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.

      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

      Cinema 4D SDK
      • • • nicholas_yue
      3
      0
      Votes
      3
      Posts
      534
      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()?

      Cinema 4D SDK
      • • • nicholas_yue
      4
      0
      Votes
      4
      Posts
      1.0k
      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

      Cinema 4D SDK
      • python • • nicholas_yue
      6
      0
      Votes
      6
      Posts
      1.2k
      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 ?

      General Talk
      • python • • nicholas_yue
      5
      0
      Votes
      5
      Posts
      1.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

      Cinema 4D SDK
      • • • nicholas_yue
      3
      0
      Votes
      3
      Posts
      577
      Views

      P

      Is BaseDocument.GetChanged() what you want? See Changed Mode.

    • N

      Getting and setting frame range from RenderData

      Cinema 4D SDK
      • • • nicholas_yue
      2
      0
      Votes
      2
      Posts
      598
      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 ?

      Cinema 4D SDK
      • • • nicholas_yue
      2
      0
      Votes
      2
      Posts
      382
      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

      Cinema 4D SDK
      • • • nicholas_yue
      3
      1
      Votes
      3
      Posts
      544
      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

      Cinema 4D SDK
      • • • nicholas_yue
      6
      0
      Votes
      6
      Posts
      1.2k
      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

      Cinema 4D SDK
      • • • nicholas_yue
      2
      0
      Votes
      2
      Posts
      408
      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 ?

      Cinema 4D SDK
      • • • nicholas_yue
      5
      0
      Votes
      5
      Posts
      756
      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 ?

      Cinema 4D SDK
      • • • nicholas_yue
      7
      0
      Votes
      7
      Posts
      1.7k
      Views

      ManuelM

      hi,

      I'll set this thread to solved without further feedback πŸ™‚

      Cheers,
      Manuel