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).
Thanks! Sorry, I am so careless that I ignore the message "Needs to be called before the change.".
UNDOTYPE_CHANGE:
Any change to an object, including hierarchy modifications; modification in positioning (object has been moved from A to B), substructures etc. (Needs to be called before the change.)
Undo for InsertUnder() is not right. Why? The code below: The operations below: After executing the script: After several undo operations:
The first question is that the undo result is not right. The second question is that the undo times are not right. There should be one time for undo to get the correct undo result if there is no problem.
Is it possible to change active view via python but "c4d.CallCommand(13640) # Toggle Active View"?
Because "c4d.CallCommand(13640) # Toggle Active View" is used with a click on the view. I can not use python code to change a certain view to be active.
I want to change active view via the view ID from "range(doc.GetBaseDrawCount())". But I can not find the relevant APIs.
I can get the active view from "doc.GetActiveBaseDraw()" but there are no ways to set the active view.
Great!!! It runs. You are right. Thank you so much! I think your answer is worth being written in the API document to make the workflow more clear.
Why does "Symbols Parser" not work? The API document is below. https://developers.maxon.net/docs/Cinema4DPythonSDK/html/manuals/foundation/symbols.html?highlight=c4d_symbols
I changed "py-fresnel_r13.pyp" in official plugin examples. Finally, I got the issues.
How can I update the deformer like the "Spline" deformer when I move the objects in the viewport?
My splines for my deformer plugin are in the "c4d.InExcludeData" like the below.
I know that the callback function "Draw(self, op, drawpass, bd, bh)" is about the viewport.
But I don't know how to update the deformer when I move the spline objects or its affected polygon objects in the viewport.
My updated contents is same as the callback fuction "ModifyObject(self, mod, doc, op, op_mg, mod_mg, lod, flags, thread)".
Is there a "msgId" in the function "GetDParameter(self, node, id, flags)" in the class "c4d.plugins.ObjectData" when I add a child to an object? The object is a deformer. I want to update the function "GetDDescription(self, node, description, flags)" via the function "GetDParameter(self, node, id, flags)" when I add a child to the deformer in the "Object Manager".
Does Manager ID change between different c4d versions such as R24, R25 and R26 If Manager ID is based on the options in "Restrict to" in Command Manager.
The Manager ID is explained here. https://developers.maxon.net/docs/Cinema4DPythonSDK/html/modules/c4d.gui/index.html#c4d.gui.AddShortcut.
@m_adam Thanks so much! You are a very professional guy!!!
I need a simple and successful example of c4d.gui.SplineCustomGui which has same params as the picture below.
I have tried directly code below. But it can not have the full control of c4d.gui.SplineCustomGui by bc[c4d.constant], and it is without the gui elements, such as "Point X", "Point Y" and so on. class Dialog(c4d.gui.GeDialog):
def __init__(self): compoId = 1000 i = 1 compoId += i self.groId_0 = compoId compoId += i self.spliId_0 = compoId def CreateLayout(self): bc = c4d.BaseContainer() # bc[c4d.SPLINECONTROL_GRID_H] = True # bc[c4d.SPLINECONTROL_GRID_V] = True # bc[c4d.SPLINECONTROL_VALUE_LABELS_H_LEGACY] = True # bc[c4d.SPLINECONTROL_VALUE_LABELS_V_LEGACY] = True bc[c4d.SPLINECONTROL_X_MIN] = 0 bc[c4d.SPLINECONTROL_X_MAX] = 1 # bc[c4d.SPLINECONTROL_X_STEPS] = 0.1 bc[c4d.SPLINECONTROL_Y_MIN] = 0 bc[c4d.SPLINECONTROL_Y_MAX] = 1 # bc[c4d.SPLINECONTROL_Y_STEPS] = 0.1 # bc[c4d.SPLINECONTROL_PRESET_BTN_LEGACY] = True # bc[c4d.SPLINECONTROL_ROUND_SLIDER_LEGACY] = True # bc[c4d.SPLINECONTROL_GRIDLINES_H_LEGACY] = 10 # bc[c4d.SPLINECONTROL_GRIDLINES_V_LEGACY] = 10 # bc[c4d.SPLINECONTROL_MINSIZE_H] = 0.1 # bc[c4d.SPLINECONTROL_MINSIZE_V] = 0.1 # bc[c4d.SPLINECONTROL_X_MIN_TEXT_LEGACY] = "True" # bc[c4d.SPLINECONTROL_X_MAX_TEXT_LEGACY] = "True" # bc[c4d.SPLINECONTROL_Y_MIN_TEXT_LEGACY] = "True" # bc[c4d.SPLINECONTROL_Y_MAX_TEXT_LEGACY] = "True" # bc[c4d.SPLINECONTROL_X_TEXT] = "Density" # bc[c4d.SPLINECONTROL_Y_TEXT] = "Vertex Weight" # bc[c4d.SPLINECONTROL_NEW_NO_HORIZ_LEGACY] = False # bc[c4d.SPLINECONTROL_NEW_NO_VERT_LEGACY] = False # bc[c4d.SPLINECONTROL_HIDE_GRID_H_LEGACY] = False # bc[c4d.SPLINECONTROL_HIDE_GRID_V_LEGACY] = False # bc[c4d.SPLINECONTROL_HIDE_PRESET_BTN_LEGACY] = False # bc[c4d.SPLINECONTROL_HIDE_ROUND_SLIDER_LEGACY] = False # bc[c4d.SPLINECONTROL_HIDE_VALUE_EDIT_H_LEGACY] = False # bc[c4d.SPLINECONTROL_HIDE_VALUE_EDIT_V_LEGACY] = False # bc[c4d.SPLINECONTROL_HIDE_VALUE_LABELS_H_LEGACY] = False # bc[c4d.SPLINECONTROL_HIDE_VALUE_LABELS_V_LEGACY] = False # bc[c4d.SPLINECONTROL_ALLOW_HORIZ_SCALE_MOVE] = True # bc[c4d.SPLINECONTROL_ALLOW_VERT_SCALE_MOVE] = True # bc[c4d.SPLINECONTROL_OPTIMAL] = True # bc[c4d.SPLINECONTROL_OPTIMAL_X_MIN] = 0.01 # bc[c4d.SPLINECONTROL_OPTIMAL_Y_MIN] = 0.01 # bc[c4d.SPLINECONTROL_OPTIMAL_X_MAX] = 0.01 # bc[c4d.SPLINECONTROL_OPTIMAL_Y_MAX] = 0.01 # bc[c4d.SPLINECONTROL_SQUARE] = False # bc[c4d.SPLINECONTROL_CUSTOMCOLOR_SET] = True # bc[c4d.SPLINECONTROL_CUSTOMCOLOR_COL] = c4d.Vector(1,1,1) bc[c4d.SPLINECONTROL_NO_FLOATING_WINDOW] = True # bc[c4d.SPLINECONTROL_NO_PRESETS] = False self.spli = self.AddCustomGui(self.spliId_0, c4d.CUSTOMGUI_SPLINE, "", c4d.BFH_SCALEFIT|c4d.BFV_SCALEFIT, 0, 0, bc) return True
The second way with description files, I also have tried https://plugincafe.maxon.net/topic/13499/splinecustomgui-settings-issue/10?_=1653814204664. But I failed. If it can have all params like the picture in the second way, I want a successful and simple example including its description files(.res and .h).
edited by [ @ferdinand ]:
How can I set the selection state the underlying c4d.BaseSelectof a c4d.SelectionTag?
c4d.BaseSelect
c4d.SelectionTag
@LingZA said:
For an exmaple like op.MakeTag(c4d.Tedgeselection).
BaseSelect1.CopyTo(BaseSelect2) BaseSelect2 is of selection tag.
@ferdinand Thank you so much! I am not professional in c++.
I optimze my workflow with Density Map in ZRemesher in Remesh generator. ZRemesher uses vertex weights from the vertex map as density map after I put a vertex map into Density Map linkbox.
Actually, I mean that I want to create a tag which contains the vertex weights, then vertex weights are used by ZRemesher after I put the tag into Density Map linkbox. So I don't need a "vertex map" indeed, but I need a tag I describe above.
I want to create a tag with the outputs(vertex weights) same as Vertex Map. I know I can generate Vertex Map directly, but I don't want do that. I want a simple example. Please!
Thanks so much!!!
Your answer makes me understand that PolygonObject.GetPolygonS(self) and PolygonObject.GetPolygonH(self) respectively represent selection states in a list from BaseSelect and visibility states in a list from BaseSelect.
How can get the visibility of the every point/edge/face in python api?