RenderContent

References
public abstract class RenderContent : IDisposable
Base class for all RenderContent - RenderMaterial, RenderTexture and RenderEnvironment Contents have a unique type id which is the same for all instances of the same class and an instance id which is unique for each instance.They know how to provide a shader for rendering, how to read and write their state as XML and how to create their own user interfaces. There are two flavors of content in the RDK -- temporary and persistent.It is very important to understand the distinction between a temporary content instance and a persistent content instance, and the fact that a temporary instance (and all its children) can become persistent.Persistent content is registered with a document and is usually(but not always) owned by it. Temporary contents get created and deleted very often during the normal operation of the RDK.In fact, just about anything the user clicks on might result in a temporary content being created and deleted again.They are created by the content browser, the thumbnail rendering, and so on.They are 'free floating' and are owned by whomever created them.They do not appear in the modeless UI, they do not get saved in the 3dm file, and they can freely be deleted again after use. Contrast this with persistent contents which are attached to a document.They are always owned by RDK, appear in the modeless UI and get saved in the 3dm file. Pointers to persistent contents should never be stored by clients; you should only store their instance ids and look them up again using RenderContent.FromId. They can be deleted only after detaching them from the document. RenderContent::Create is the highest-level function for creating a content.It creates it, initializes it, adds it to the document and sends many events.It even records undo.You cannot call this method from just anywhere. It must only be called by 'UI code'; scripts or buttons on a dialog.It results in a persistent (usually top-level) content being attached to the document and appearing in all the RDK UI elements that display contents, like the thumbnail and tree views.If you call this method and specify a parent and child-slot name, your new content will be attached to the document-resident parent as a child and the UI will be updated accordingly. The important point is that everything is temporary while the content structure is being built. Only after the whole structure is complete will the top-level parent be attached to the document making the whole structure persistent.

Finalizer

~RenderContent

#
~RenderContent()
Finalizer

Properties

CanBeEdited

#Since v6.0
public bool CanBeEdited { get; }
Determines if the content can be edited.

Category

#Since v6.7
public string Category { get; }
Category for this content.

ChildSlotDisplayName

#Since v7.0
public string ChildSlotDisplayName { get; }
Returns the localized display name of the child slot name

ChildSlotName

#Since v5.1
public string ChildSlotName { get; set; }

CppPointer

#Since v6.0
public nint CppPointer { get; }

DisplayName

#Since v7.8
public string DisplayName { get; }
Display name for this content.

Document

#Since v5.10
public RhinoDoc Document { get; }
obsoleteUse DocumentOwner
Obsolete. Do not use. You should use DocumentOwner instead.

DocumentAssoc

#Since v6.0
public RhinoDoc DocumentAssoc { get; set; }
If this render content is associated with a document in any way, the document will be returned. This includes copies of render contents that were attached to a document when the copy was made. Otherwise returns null.

DocumentOwner

#Since v7.13
public RhinoDoc DocumentOwner { get; }
If this render content is owned by a document, the document will be returned. This is the same as getting the document the render content is attached to. Otherwise returns null.

DocumentRegistered

#Since v6.0
public RhinoDoc DocumentRegistered { get; }
obsoleteUse DocumentOwner
Obsolete. Do not use. You should use DocumentOwner instead.

Fields

#Since v5.1
public FieldDictionary Fields { get; }
Rhino.Render.Fields FieldDictionary which provides access to setting and retrieving field values.

Filename

#Since v7.4
public virtual string Filename { get; set; }
If the content is file based, this function can be overridden to deal with setting/getting the filename. Corresponds to IRhRdkFileBasedContent in the C++ SDK

FilesToEmbed

#Since v5.12
public virtual IEnumerable<string> FilesToEmbed { get; }
A string array of full paths to files used by the content that may be embedded in .3dm files and library files (.rmtl, .renv, .rtex). The default implementation returns an empty string list. Override this to return the file name or file names used by your content. This is typically used by textures that reference files containing the texture imagery.

FirstChild

#Since v6.0
public RenderContent FirstChild { get; }
Return First child of this content or null if none.

GroupId

#Since v6.26
public Guid GroupId { get; set; }
Group ID of the content

Hidden

#Since v5.1
public bool Hidden { get; set; }
Gets or sets the render content's 'hidden' state. This feature only works for top-level render contents because it hides the entire hierarchy. It is normally used for 'implementation detail' render contents. For expert use only. Hidden render contents are never shown in the UI, with the exception of the Object (or Layer) Material Properties UI which always shows whatever is assigned to the object (or layer). In the Object (or Layer) Material Properties UI, if the user drops down the list, hidden render contents are not listed. Hidden render contents, being part of the document content list, will be listed by any scripts or other code that iterates over the document render content list. It is recommended that you set IsHidden once when you create your render content and leave it on to prevent flicker or slow performance.

Id

#Since v5.1
public Guid Id { get; set; }
Instance identifier for this content.

IsDefaultInstance

#Since v6.0
public bool IsDefaultInstance { get; }
Checks if render content is default instance.

IsHiddenByAutoDelete

#Since v6.15
public bool IsHiddenByAutoDelete { get; }
Contents can be created as 'auto-delete' by certain commands such as 'Picture'. These contents are automatically hidden from the user when the associated Rhino object is deleted. They are later deleted when the document is saved.

IsLocked

#Since v5.12
public bool IsLocked { get; set; }
Set this property to true prior to adding content to the document to lock the content browser editing UI methods. Setting this to true will keep the browser from allowing things like deleting, renaming or changing content. This is useful for custom child content that you want to be editable but persistent. Setting this after adding content to the document will cause an exception to be thrown.
ExceptionIsLocked must be called prior to adding content to the document

ModelUnits

#Since v9.0
public LengthUnit ModelUnits { get; }
Units used by this instance on length fields.

Name

#Since v5.1
public string Name { get; set; }
Instance 'raw' name for this content.

NextSibling

#Since v6.0
public RenderContent NextSibling { get; }
Return First sibling of this content or null if none.

Notes

#Since v5.1
public string Notes { get; set; }
Notes for this content.

Parent

#Since v5.11
public RenderContent Parent { get; }
Returns the top content in this parent/child chain.

Private

#Since v9.0
public bool Private { get; }
The Content type should not be shown in the UI if Private is true

ProxyType

#Since v6.0
public ProxyTypes ProxyType { get; }
Gets the proxy type of the render content

RenderHash

#Since v6.0
[CLSCompliant(false)] public uint RenderHash { get; }
Render hash for the content hierarchy. It iterates over children and includes a caching mechanism which means the hash value can be retrieved quickly if it hasn't changed. The cache is invalidated when Changed() is called. You can override the CalculateRenderHash(ulong) method to provide a custom hash value.

Styles

#Since v7.5
public RenderContentStyles Styles { get; }

Tags

#Since v6.4
public string Tags { get; set; }
Tags for this content.

TopLevel

#Since v5.1
public bool TopLevel { get; }
Returns true if this content has no parent, false if it is the child of another content.

TopLevelParent

#Since v5.1
public RenderContent TopLevelParent { get; }
Returns the top content in this parent/child chain.

TypeDescription

#Since v5.1
public abstract string TypeDescription { get; }
Description for your content type. i.e., "Procedural checker pattern"

TypeId

#Since v6.0
public Guid TypeId { get; }
Type identifier for this content

TypeName

#Since v5.1
public abstract string TypeName { get; }
Name for your content type. i.e., "My .net Texture"

Xml

#Since v6.0
public string Xml { get; }

Methods

AddAutomaticUserInterfaceSection

#Since v5.1
public bool AddAutomaticUserInterfaceSection(string caption, int id)
Add a new automatic user interface section, Field values which include prompts will be automatically added to this section.
caption (string)Expandable tab caption.
id (int)Tab id which may be used later on to reference this tab.
Returns true if the automatic tab section was added otherwise; returns false on error.

AddChild

#Since v6.0 Obsolete v6.0
public bool AddChild(RenderContent renderContent, string childSlotName)
obsoleteThis method is obsolete and simply calls SetChild
renderContent (RenderContent)
childSlotName (string)

AddChild

#Since v5.6 Obsolete v6.0
public bool AddChild(RenderContent renderContent)
obsoleteThis method is obsolete and simply calls SetChild
renderContent (RenderContent)

AddPersistentRenderContent

#Since v5.1 Obsolete v6.0
public static bool AddPersistentRenderContent(RenderContent renderContent)
obsoleteUse RhinoDoc.RenderMaterials.Add
Add a material, environment or texture to the internal RDK document lists as top level content. The content must have been returned from RenderContent::MakeCopy, NewContentFromType or a similar function that returns a non-document content. Obsolete - use RhinoDoc.RenderMaterials.Add or similar.
renderContent (RenderContent)The render content.
true on success.

AddPersistentRenderContent

#Since v6.0 Obsolete v6.0
public static bool AddPersistentRenderContent(RhinoDoc document, RenderContent renderContent)
obsoleteUse RhinoDoc.RenderMaterials.Add
Add a material, environment or texture to the internal RDK document lists as top level content. The content must have been returned from RenderContent::MakeCopy, NewContentFromType or a similar function that returns a non-document content. Obsolete - use RhinoDoc.RenderMaterials.Add or similar.
document (RhinoDoc)The document to attach the render content to.
renderContent (RenderContent)The render content.
true on success.

AddUserInterfaceSection

#Since v6.0
public bool AddUserInterfaceSection(ICollapsibleSection section)
section (ICollapsibleSection)

AddUserInterfaceSection

#Since v5.1 Obsolete v6.0
public UserInterfaceSection AddUserInterfaceSection(Type classType, string caption, bool createExpanded, bool createVisible)
obsoleteUse AddUserInterfaceSection(Rhino.UI.Controls.ICollapsibleSection) below instead. This function will not work on the Mac and is not type-safe.
Add a new .NET control to an content expandable tab section, the height of the createExpanded tabs client area will be the initial height of the specified control.
classType (Type)The control class to create and embed as a child window in the expandable tab client area. This class type must be derived from IWin32Window or this method will throw an ArgumentException. Implement the IUserInterfaceSection interface in your classType to get UserInterfaceSection notification.
caption (string)Expandable tab caption.
createExpanded (bool)If this value is true then the new expandable tab section will initially be expanded, if it is false it will be collapsed.
createVisible (bool)If this value is true then the new expandable tab section will initially be visible, if it is false it will be hidden.
Returns the UserInterfaceSection object used to manage the new user control object.

BeginChange

#Since v6.0
public void BeginChange(ChangeContexts changeContext)
Begins a change or batch of changes. It may also make a copy of the content state allowing EndChange() to send an event with the old and new contents. Calls to this method are counted; you must call EndChange() once for every call to BeginChange(). Note: If Changed() was called between the calls to BeginChange() and EndChange(), the last call to EndChange() may cause the ContentChanged event to be sent.
changeContext (RenderContent.ChangeContexts)the change context. If this is ChangeContexts.UI, ChangeContexts.Program,ChangeContexts.Drop or ChangeContexts.Tree, the content will be copied. EndChange() will then send the copy as 'old' in the OnContentChanged event. EndChange() ContentChanged

BeginCreateDynamicFields

#Since v7.1
public void BeginCreateDynamicFields(bool automatic)
Automatic Dynamic Field support. Dynamic fields are typically created in the constructor of RenderContent and they are therefore created automatically whenever the content is created. However, some advanced users require the fields to be created in response to some user action which occurs much later. This creates the problem that the fields do not exist by default and therefore cannot be loaded when the document is loaded. These methods are provided to solve that problem by making it possible to automatically create the dynamic fields on loading if they don't already exist. Dynamic fields that have this auto-create-on-load behavior are referred to as automatic dynamic fields. Dynamic fields that do not require the advanced automatic feature can still be created by using these methods (recommended), or they can be created manually (legacy usage). You must call this before creating any dynamic fields. Calls to this method are counted; you must call EndCreateDynamicFields() once for every call to BeginCreateDynamicFields().
automatic (bool)automatic specifies if the dynamic fields are automatic. If so, they will be created automatically during loading of the document.

BindParameterToField

#Since v5.7
public void BindParameterToField(string parameterName, Field field, ChangeContexts setEvent)
Use bindings to automatically wire parameters to fields
parameterName (string)
field (Field)
setEvent (RenderContent.ChangeContexts)

BindParameterToField

#Since v5.7
public void BindParameterToField(string parameterName, string childSlotName, Field field, ChangeContexts setEvent)
Use bindings to automatically wire parameters to fields
parameterName (string)
childSlotName (string)
field (Field)
setEvent (RenderContent.ChangeContexts)

CalculateRenderHash

#
[CLSCompliant(false)] protected virtual uint CalculateRenderHash(ulong rcrcFlags)
obsoleteUse CalculateRenderHash2
Override this method to calculate the render hash of the state that affects how the content is rendered. Does not include children or perform any caching. Render hash values are now automatically cached by the content framework and you do not have to worry about caching. You also do not have to worry about iterating into children. This method is now only called internally by the framework, use the RenderHash property to get the current hash value.
rcrcFlags (ulong)

CalculateRenderHash2

#
[CLSCompliant(false)] protected virtual uint CalculateRenderHash2(CrcRenderHashFlags flags, string[] excludeParameterNames)
flags (CrcRenderHashFlags)
excludeParameterNames (string[])

ChangeChild

#Since v5.6 Obsolete v6.0
public bool ChangeChild(RenderContent oldContent, RenderContent newContent)
obsoleteThis method is obsolete and simply calls SetChild
oldContent (RenderContent)
newContent (RenderContent)

ChildSlotAmount

#Since v5.7
public double ChildSlotAmount(string childSlotName)
Gets the amount property for the texture in the specified child slot.
childSlotName (string)The child slot name of the texture.
The requested amount value. Values are typically from 0.0 to 100.0

ChildSlotNameFromParamName

#Since v5.1
public string ChildSlotNameFromParamName(string paramName)
A "child slot" is the specific "slot" that a child (usually a texture) occupies. This is generally the "use" of the child - in other words, the thing the child operates on. Some examples are "color", "transparency".
paramName (string)The name of a parameter field. Since child textures will usually correspond with some parameter (they generally either replace or modify a parameter over UV space) these functions are used to specify which parameter corresponded with child slot. If there is no correspondence, return the empty string.
The default behavior for these functions is to return the input string. Sub-classes may (in the future) override these functions to provide different mappings.

ChildSlotOn

#Since v5.7
public bool ChildSlotOn(string childSlotName)
Gets the on-ness property for the texture in the specified child slot.
childSlotName (string)The child slot name of the texture.
true if successful, else false.

ConvertUnits

#Since v9.0
public virtual void ConvertUnits(LengthUnit from, LengthUnit to)
Modify your content so that it is converted from meters into the units of the unit system. No need to call the base class when you override this, and no need to recurse into children.
from (LengthUnit)
to (LengthUnit)

ConvertUnits

#Since v7.0 Obsolete v9.0
[EditorBrowsable(EditorBrowsableState.Never)] public virtual void ConvertUnits(UnitSystem from, UnitSystem to)
obsolete. Use ConvertUnits with LengthUnit instead, and don't override this virtual function
Modify your content so that it is converted from meters into the units of the unit system. No need to call the base class when you override this, and no need to recurse into children.
from (UnitSystem)
to (UnitSystem)

Create

#Since v5.1 Obsolete v7.9
public static RenderContent Create(Guid type, RenderContent parent, string childSlotName, ShowContentChooserFlags flags, RhinoDoc doc)
Constructs a new content of the specified type and attaches it to a document. This function cannot be used to create temporary content that you delete after use. Content created by this function is owned by RDK and appears in the content editor. To create a temporary content which is owned by you, call RenderContentType.NewContentFromTypeId().
type (Guid)The type of the content to create.
parent (RenderContent)Parent is the parent content. If not null, this must be an RDK-owned content that is attached to the document (either top-level or child). The new content then becomes its child. If null, the new content is added to the top-level document content list instead.
childSlotName (string)ChildSlotName is the unique child identifier to use for the new content when creating it as a child of parent (i.e., when parent is not null)
flags (RenderContent.ShowContentChooserFlags)Flags for future use (please always pass ShowContentChooserFlags::None).
doc (RhinoDoc)The Rhino document to attach the new render content to.
A new document-resident render content.

Create

#Since v5.1 Obsolete v7.9
public static RenderContent Create(Guid type, ShowContentChooserFlags flags, RhinoDoc doc)
Constructs a new content of the specified type and attaches it to a document. This function cannot be used to create temporary content that you delete after use. Content created by this function is owned by RDK and appears in the content editor. To create a temporary content which is owned by you, call RenderContentType.NewContentFromTypeId().
type (Guid)The type of the content to create.
flags (RenderContent.ShowContentChooserFlags)Flags for future use (please always pass ShowContentChooserFlags::None).
doc (RhinoDoc)The Rhino document to attach the new render content to.
A new document-resident render content.

Create

#Since v7.9
public static RenderContent Create(RhinoDoc doc, Guid type, RenderContent parent, string childSlotName)
Constructs a new content of the specified type and attaches it to a document. This function cannot be used to create temporary content that you delete after use. Content created by this function is owned by RDK and appears in the content editor. To create a temporary content which is owned by you, call RenderContentType.NewContentFromTypeId().
doc (RhinoDoc)The Rhino document to attach the new render content to.
type (Guid)The type of the content to create.
parent (RenderContent)Parent is the parent content. If not null, this must be an RDK-owned content that is attached to the document (either top-level or child). The new content then becomes its child. If null, the new content is added to the top-level document content list instead.
childSlotName (string)ChildSlotName is the unique child identifier to use for the new content when creating it as a child of parent (i.e., when parent is not null)
A new document-resident render content.

Create

#Since v7.9
public static RenderContent Create(RhinoDoc doc, Guid type)
Constructs a new content of the specified type and attaches it to a document. This function cannot be used to create temporary content that you delete after use. Content created by this function is owned by RDK and appears in the content editor. To create a temporary content which is owned by you, call RenderContentType.NewContentFromTypeId().
doc (RhinoDoc)The Rhino document to attach the new render content to.
type (Guid)The type of the content to create.
A new document-resident render content.

Create

#Since v7.9
public static RenderContent Create(RhinoDoc doc, Type type, RenderContent parent, string childSlotName)
Constructs a new content of the specified type and attaches it to a document. This function cannot be used to create temporary content that you delete after use. Content created by this function is owned by RDK and appears in the content editor. To create a temporary content which is owned by you, call RenderContentType.NewContentFromTypeId().
doc (RhinoDoc)The Rhino document to attach the new render content to.
type (Type)The type of the content to create.
parent (RenderContent)The parent content. If not null, this must be an RDK-owned content that is attached to the document (either top-level or child). The new content then becomes its child. If null, the new content is added to the top-level document content list instead.
childSlotName (string)ChildSlotName is the unique child identifier to use for the new content when creating it as a child of parent (i.e., when parent is not null)
A new document-resident render content.

Create

#Since v7.9
public static RenderContent Create(RhinoDoc doc, Type type)
Constructs a new content of the specified type and attaches it to a document. This function cannot be used to create temporary content that you delete after use. Content created by this function is owned by RDK and appears in the content editor. To create a temporary content which is owned by you, call RenderContentType.NewContentFromTypeId().
doc (RhinoDoc)The Rhino document to attach the new render content to.
type (Type)The type of the content to create.
A new document-resident render content.

Create

#Since v5.1 Obsolete v7.9
public static RenderContent Create(Type type, RenderContent parent, string childSlotName, ShowContentChooserFlags flags, RhinoDoc doc)
Constructs a new content of the specified type and attaches it to a document. This function cannot be used to create temporary content that you delete after use. Content created by this function is owned by RDK and appears in the content editor. To create a temporary content which is owned by you, call RenderContentType.NewContentFromTypeId().
type (Type)The type of the content to create.
parent (RenderContent)The parent content. If not null, this must be an RDK-owned content that is attached to the document (either top-level or child). The new content then becomes its child. If null, the new content is added to the top-level document content list instead.
childSlotName (string)ChildSlotName is the unique child identifier to use for the new content when creating it as a child of parent (i.e., when parent is not null)
flags (RenderContent.ShowContentChooserFlags)Flags for future use (please always pass ShowContentChooserFlags::None).
doc (RhinoDoc)The Rhino document to attach the new render content to.
A new document-resident render content.

Create

#Since v5.1 Obsolete v7.9
public static RenderContent Create(Type type, ShowContentChooserFlags flags, RhinoDoc doc)
Constructs a new content of the specified type and attaches it to a document. This function cannot be used to create temporary content that you delete after use. Content created by this function is owned by RDK and appears in the content editor. To create a temporary content which is owned by you, call RenderContentType.NewContentFromTypeId().
type (Type)The type of the content to create.
flags (RenderContent.ShowContentChooserFlags)Flags for future use (please always pass ShowContentChooserFlags::None).
doc (RhinoDoc)The Rhino document to attach the new render content to.
A new document-resident render content.

CreateDynamicField

#Since v7.1
public bool CreateDynamicField(string internalName, string localName, string englishName, object value, object minValue, object maxValue, int sectionId)
Create a dynamic field with an initial value and min and max limits.
internalName (string)is the internal name of the field. Not localized.
localName (string)is the localized user-friendly name of the field.
englishName (string)is the English user-friendly name of the field.
value (object)is the initial value of the field.
minValue (object)is the minimum value of the field. Must be the same type as vValue.
maxValue (object)is the maximum value of the field. Must be the same type as vValue.
sectionId (int)is used for filtering fields between sections. Zero if not needed.

DeleteAllChildren

#Since v5.10
public void DeleteAllChildren(ChangeContexts changeContexts)
changeContexts (RenderContent.ChangeContexts)

DeleteChild

#Since v5.10
public bool DeleteChild(string childSlotName, ChangeContexts changeContexts)
childSlotName (string)
changeContexts (RenderContent.ChangeContexts)

Dispose

#Since v5.1
public void Dispose()

Dispose

#
protected virtual void Dispose(bool disposing)
Dispose
disposing (bool)

DynamicIcon

#Since v6.0
public virtual bool DynamicIcon(Size size, out Bitmap bitmap, DynamicIconUsage usage)
size (Size)
bitmap (out Bitmap)
usage (DynamicIconUsage)

Edit

#Since v6.13
public RenderContent Edit()
This method allows a render content hierarchy to be edited using a modal (AKA 'pop-up') editor. If the original render content is in a document, it will remain there, and the edited one will be 'free-floating'. Therefore it is the caller's responsibility to do any replacement in the document if required. The returned new content will be owned by the caller.
Returns an edited version of the content hierarchy if successful, else null. The method always edits the entire hierarchy. It places a copy of the hierarchy in the editor and selects the copied item that corresponds to this one. Therefore, editing a child will return a top-level render content, not a child.

EndChange

#Since v6.0
public void EndChange()
Ends a change or batch of changes. Calls to this method are counted; you must call this method once for every call to BeginChange(RenderContent.ChangeContexts). Note: If BeginChange(RenderContent.ChangeContexts) was called with ChangeContexts.UI, ChangeContexts.Program, ChangeContexts.Drop or ChangeContexts.UI.Tree and Changed() was called between the calls to BeginChange(RenderContent.ChangeContexts) and EndChange(), the last call to EndChange() will raise the ContentChanged event.

EndCreateDynamicFields

#Since v7.1
public void EndCreateDynamicFields()
You must call this after creating dynamic fields. Calls to this method are counted; you must call BeginCreateDynamicFields() once for every call to EndCreateDynamicFields().

Factory

#Since v6.10
public ContentFactory Factory()

FindChild

#Since v5.1
public RenderContent FindChild(string childSlotName)
childSlotName (string)

ForDisplay

#Since v6.9
public RenderContent ForDisplay()
**** This method is for proxies and will be marked obsolete in the future **** The only place a single proxy can be displayed is in the New Content Control main thumbnail. All other attempts to use a single proxy in a UI require it to be replaced with the corresponding multi proxy. Single proxies override this to find the corresponding multi proxy.
The render content.

FromId

#Since v5.7
public static RenderContent FromId(RhinoDoc document, Guid id)
Search for a content object based on its Id
document (RhinoDoc)The Rhino document containing the content.
id (Guid)Id of the content instance to search for.
Returns the content object with the specified Id if it is found otherwise it returns null.

FromXml

#Since v6.4
public static RenderContent FromXml(string xml, RhinoDoc doc)
Creates a new content from the XML data. The resulting content will not be attached to the document.
xml (string)The input XML data.
doc (RhinoDoc)The document that the content will be associated with for units, linear workflow purposes.

FromXml

#Since v6.0 Obsolete v6.4
public static RenderContent FromXml(string xml)
obsoleteUse other FromXml method
xml (string)

GenerateQuickContentPreview

#Since v8.16
public static Bitmap GenerateQuickContentPreview(LinearWorkflow lw, RenderContent c, int width, int height, PreviewSceneServer psc, bool bSuppressLocalMapping, int reason, ref Result result)
Generate a quick render content preview
lw (LinearWorkflow)Linear workflow
c (RenderContent)Render Content
width (int)Image width
height (int)Image height
psc (PreviewSceneServer)PreviewSceneServer
bSuppressLocalMapping (bool)SuppressLocalMapping
reason (int)ContentChanged = 0, ViewChanged = 1, RefreshDisplay = 2, Other = 99
result (ref Result)Rhino.Command.Result value for successfull quick image creation
The Bitmap of the quick render content preview

GenerateQuickContentPreview

#Since v8.9
public static Bitmap GenerateQuickContentPreview(RenderContent c, int width, int height, PreviewSceneServer psc, bool bSuppressLocalMapping, int reason, ref Result result)
Generate a quick render content preview
c (RenderContent)Render Content
width (int)Image width
height (int)Image height
psc (PreviewSceneServer)PreviewSceneServer
bSuppressLocalMapping (bool)SuppressLocalMapping
reason (int)ContentChanged = 0, ViewChanged = 1, RefreshDisplay = 2, Other = 99
result (ref Result)Rhino.Command.Result value for successfull quick image creation
The Bitmap of the quick render content preview

GenerateRenderContentPreview

#Since v8.9
public static Bitmap GenerateRenderContentPreview(LinearWorkflow lwf, RenderContent c, int width, int height, bool bSuppressLocalMapping, PreviewJobSignature pjs, PreviewAppearance pa, ref PreviewRenderResult result)
Generate a render content preview
lwf (LinearWorkflow)Linear Workflow
c (RenderContent)Render Content
width (int)Image width
height (int)Image height
bSuppressLocalMapping (bool)Suppress Local Mapping
pjs (PreviewJobSignature)Preivew Job Signature
pa (PreviewAppearance)Preivew Appearance
result (ref Utilities.PreviewRenderResult)Reference to PreviewRenderResult value
The Bitmap of the render content preview

GetChildSlotParameter

#Since v5.7
public virtual object GetChildSlotParameter(string contentParameterName, string extraRequirementParameter)
Extra requirements are a way of specifying extra functionality on parameters in the automatic UI. Override this function to specify additional functionality for automatic UI sections or the texture summary. See IAutoUIExtraRequirements.h in the C++ RDK SDK for string definitions for the parameter names. Call the base class from your override if you do not support the extra requirement parameter. Please do not call this function. It is only retained for backward compatibility. You should instead call GetExtraRequirementParameter().
contentParameterName (string)The parameter or field internal name to which this query applies.
extraRequirementParameter (string)The extra requirement parameter, as listed in IAutoUIExtraRequirements.h in the C++ RDK SDK.
The value of the requested extra requirement parameter or null if the parameter does not exist. Current supported return values are (int, bool, float, double, string, Guid, Color, Vector3d, Point3d, DateTime).

GetEmbeddedFilesList

#Since v6.0
public string[] GetEmbeddedFilesList()

GetExtraRequirementParameter

#Since v7.9
public object GetExtraRequirementParameter(string contentParameterName, string extraRequirementParameter)
Extra requirements are a way of specifying extra functionality on parameters in the automatic UI. See IAutoUIExtraRequirements.h in the C++ RDK SDK for string definitions for the parameter names.
contentParameterName (string)The parameter or field internal name to which this query applies.
extraRequirementParameter (string)The extra requirement parameter, as listed in IAutoUIExtraRequirements.h in the C++ RDK SDK.
The value of the requested extra requirement parameter or null if the parameter does not exist. Current supported return values are (int, bool, float, double, string, Guid, Color, Vector3d, Point3d, DateTime).

GetParameter

#Since v5.7
[CLSCompliant(false)] public virtual object GetParameter(string parameterName)
Query the content instance for the value of a given named parameter. If you do not support this parameter, call the base class.
parameterName (string)Name of the parameter
IConvertible. Note that you can't directly cast from object, instead you have to use the Convert mechanism.

GetUiHash

#Since v7.1
[CLSCompliant(false)] public virtual ulong GetUiHash()
This allows a content to have more than one UI for the same content type.
Default is zero and is ignored.

GetUnderlyingInstances

#Since v7.0
public bool GetUnderlyingInstances(RenderContentCollection collection)
collection (RenderContentCollection)

Icon

#Since v6.0
public virtual bool Icon(Size size, out Bitmap bitmap)
size (Size)
bitmap (out Bitmap)

Initialize

#Since v6.1 Obsolete v7.2
public bool Initialize()
obsoleteThis method should not be called.

IsCompatible

#Since v6.0
public virtual bool IsCompatible(Guid renderEngineId)
renderEngineId (Guid)

IsContentTypeAcceptableAsChild

#Since v6.0
public virtual bool IsContentTypeAcceptableAsChild(Guid type, string childSlotName)
type (Guid)
childSlotName (string)

IsFactoryProductAcceptableAsChild

#Since v6.1
public virtual bool IsFactoryProductAcceptableAsChild(ContentFactory factory, string childSlotName)
factory (ContentFactory)
childSlotName (string)

IsFactoryProductAcceptableAsChild

#Since v5.11
public virtual bool IsFactoryProductAcceptableAsChild(Guid kindId, string factoryKind, string childSlotName)
Override this method to restrict the type of acceptable child content. The default implementation of this method returns true if the factory kind is 'texture'.
kindId (Guid)
factoryKind (string)
childSlotName (string)
Return true only if content with the specified kindId can be accepted as a child in the specified child slot.

IsOverridden

#
protected internal static bool IsOverridden(MethodInfo method)
Checks if a method is overridden.
method (MethodInfo)

IsReference

#Since v6.9
public bool IsReference()
Query whether or not the content or any of its ancestors is a reference content.
true if the content is a reference, else false

IsRenderHashCached

#Since v6.0 Obsolete v6.0
public bool IsRenderHashCached()
obsoleteThis method is deprecated and no longer called. For more information see CalculateRenderHash
This method is deprecated and no longer called. For more information see CalculateRenderHash(ulong)
bool

LoadFromFile

#Since v5.1
public static RenderContent LoadFromFile(string filename)
Loads content from a library file. Does not add the content to the document. Use RhinoDoc.RenderMaterials.Add or similar.
filename (string)full path to the file to be loaded.
The loaded content or null if an error occurred.

MakeCopy

#Since v6.0
public RenderContent MakeCopy()
Create a copy of the render content. All content is the same, except for the instance Id.
The new RenderContent

MakeGroupInstance

#Since v6.26
public RenderContent MakeGroupInstance()
Create an 'instance' of the content hierarchy and group the new hierarchy with this hierarchy. If the instance is subsequently attached to the same document, the state of all members of the group will be kept synchronized. With the exception of the instance ids, all state is exactly preserved in the new instance hierarchy. \note The grouping will have no effect until the new instance is attached to the same document.
A grouped instance of the content hierarchy.

MatchData

#Since v6.0
public virtual RenderContent.MatchDataResult MatchData(RenderContent oldContent)
Implement to transfer data from another content to this content during creation.
oldContent (RenderContent)An old content object from which the implementation may harvest data.
Information about how much data was matched.

ModifyRenderContentStyles

#
protected void ModifyRenderContentStyles(RenderContentStyles stylesToAdd, RenderContentStyles stylesToRemove)
ModifyRenderContentStyles
stylesToAdd (RenderContentStyles)
stylesToRemove (RenderContentStyles)

NewPreviewSceneServer

#Since v6.0
public PreviewSceneServer NewPreviewSceneServer(SceneServerData ssd)
Gets the PreviewSceneServer of the content
ssd (SceneServerData)SceneServerData

OnAddUserInterfaceSections

#
protected virtual void OnAddUserInterfaceSections()
Override to provide UI sections to display in the editor.

OnGetDefaultsInteractive

#
protected virtual bool OnGetDefaultsInteractive()
Override this method to prompt user for information necessary to create a new content object. For example, if you are created a textured material you may prompt the user for a bitmap file name prior to creating the textured material.
If true is returned the content is created otherwise the creation is aborted.

OnMakeCopy

#
protected virtual void OnMakeCopy(ref RenderContent newContent)
Override this function to supplement the standard copying behavour for your RenderContent.
newContent (ref RenderContent)Is the content that will be returned from MakeCopy.

OpenInEditor

#Since v5.7
public bool OpenInEditor()
Call this method to open the content in the relevant thumbnail editor and select it for editing by the user. The content must be in the document or the call will fail.
Returns true on success or false on error.

OpenInModalEditor

#Since v5.7 Obsolete v6.13
public bool OpenInModalEditor()
obsoleteObsolete, use Edit a version that returns a RenderContent
Call this method to open the content in the a modal version of the editor. The content must be in the document or the call will fail.
Returns true on success or false on error.

ParamNameFromChildSlotName

#Since v5.1
public string ParamNameFromChildSlotName(string childSlotName)
A "child slot" is the specific "slot" that a child (usually a texture) occupies. This is generally the "use" of the child - in other words, the thing the child operates on. Some examples are "color", "transparency".
childSlotName (string)The named of the child slot to receive the parameter name for.
The default behavior for these functions is to return the input string. Sub-classes may (in the future) override these functions to provide different mappings.

RegisterContent

#Since v5.1
public static Type[] RegisterContent(Assembly assembly, Guid pluginId)
Call RegisterContent in your plug-in's OnLoad function in order to register all of the custom RenderContent classes in your assembly.
assembly (Assembly)Assembly where custom content is defined, this may be a plug-in assembly or another assembly referenced by the plug-in.
pluginId (Guid)Parent plug-in for this assembly.
array of render content types registered on success. null on error.

RegisterContent

#Since v5.1
public static Type[] RegisterContent(PlugIn plugin)
Call RegisterContent in your plug-in's OnLoad function in order to register all of the custom RenderContent classes in your assembly.
plugin (PlugIn)
array of render content types registered on success. null on error.

RenderHashExclude

#Since v6.2
[CLSCompliant(false)] public uint RenderHashExclude(CrcRenderHashFlags flags, string excludeParameterNames, LinearWorkflow lw)
As RenderHash, but allows you to specify flags and exclude specific parameters. Use this version of the function to calculate a render hash when you have the linear workflow information and you are not running on the main thread. Access to LinearWorkflow data requires document access. CrcRenderHashFlags.ExcludeLinearWorkflow must be specified.
flags (CrcRenderHashFlags)Flags to finely control the render hash.
excludeParameterNames (string)Semicolon-delimited string of parameter names to exclude.
lw (LinearWorkflow)Linear Workflow to use.
The render hash.

RenderHashExclude

#Since v6.2
[CLSCompliant(false)] public uint RenderHashExclude(CrcRenderHashFlags flags, string excludeParameterNames)
As RenderHash, but allows you to specify flags and exclude specific parameters.
flags (CrcRenderHashFlags)Flags to finely control the render hash.
excludeParameterNames (string)Semicolon-delimited string of parameter names to exclude.
The render hash.

RenderHashExclude

#Since v6.0 Obsolete v8.0
[CLSCompliant(false)] public uint RenderHashExclude(TextureRenderHashFlags flags, string excludeParameterNames)
This method is deprecated in favor of the one that takes CrcRenderHashFlags.
flags (TextureRenderHashFlags)
excludeParameterNames (string)

Replace

#Since v6.13
public bool Replace(RenderContent newcontent)
newcontent (RenderContent)

SaveToFile

#Since v8.6
public bool SaveToFile(string filename, EmbedFilesChoice embedFilesChoice)
Saves content to a file - RMTL, RENV or RTEX.
filename (string)Full path to the file to be saved.
embedFilesChoice (RenderContent.EmbedFilesChoice)
The loaded content or null if an error occurred.

SetChild

#Since v5.10 Obsolete v6.0
public bool SetChild(RenderContent renderContent, string childSlotName, ChangeContexts changeContexts)
obsoleteUse SetChild without ChangeContexts and Begin/EndChange
Set another content as a child of this content. This content may or may not be attached to a document. If this content already has a child with the specified child slot name, that child will be deleted. If this content is not attached to a document, the child will be added without sending any events. If this content is attached to a document, the necessary events will be sent to update the UI. Note: Do not call this method to add children in your constructor. If you want to add default children, you should override Initialize() and add them there.
renderContent (RenderContent)Child content to add to this content. If pChild is NULL, the function will fail. If pChild is already attached to a document, the function will fail. If pChild is already a child of this or another content, the function will fail.
childSlotName (string)The name that will be assigned to this child slot. The child slot name cannot be an empty string. If it is, the function will fail.
changeContexts (RenderContent.ChangeContexts)
Returns true if the content was added or the child slot with this name was modified otherwise; returns false.

SetChild

#Since v6.0
public bool SetChild(RenderContent renderContent, string childSlotName)
Set another content as a child of this content. This content may or may not be attached to a document. If this content already has a child with the specified child slot name, that child will be deleted. If this content is not attached to a document, the child will be added without sending any events. If this content is attached to a document, the necessary events will be sent to update the UI. Note: Do not call this method to add children in your constructor. If you want to add default children, you should override Initialize() and add them there.
renderContent (RenderContent)Child content to add to this content. If renderContent is null, the function will fail. If renderContent is already attached to a document, the function will fail. If renderContent is already a child of this or another content, the function will fail.
childSlotName (string)The name that will be assigned to this child slot. The child slot name cannot be an empty string. If it is, the function will fail.
Returns true if the content was added or the child slot with this name was modified, otherwise returns false.

SetChildSlotAmount

#Since v5.7
public void SetChildSlotAmount(string childSlotName, double amount, ChangeContexts cc)
Sets the amount property for the texture in the specified child slot.
childSlotName (string)The child slot name of the texture.
amount (double)The texture amount. Values are typically from 0.0 to 100.0
cc (RenderContent.ChangeContexts)The context of the change.

SetChildSlotOn

#Since v5.7
public void SetChildSlotOn(string childSlotName, bool bOn, ChangeContexts cc)
Sets the on-ness property for the texture in the specified child slot.
childSlotName (string)The child slot name of the texture.
bOn (bool)Value for the on-ness property.
cc (RenderContent.ChangeContexts)Context of the change

SetChildSlotParameter

#Since v5.7
public virtual bool SetChildSlotParameter(string contentParameterName, string extraRequirementParameter, object value, ExtraRequirementsSetContexts sc)
Extra requirements are a way of specifying extra functionality on parameters in the automatic UI. Override this function to support values being set from automatic UI sections or the texture summary. See IAutoUIExtraRequirements.h in the C++ RDK SDK for string definitions for the parameter names. Call the base class from your override if you do not support the extra requirement parameter. Please do not call this function. It is only retained for backward compatibility. You should instead call SetExtraRequirementParameter().
contentParameterName (string)The parameter or field internal name to which this query applies.
extraRequirementParameter (string)The extra requirement parameter, as listed in IAutoUIExtraRequirements.h in the C++ RDK SDK.
value (object)The value to set this extra requirement parameter. You will typically use System.Convert to convert the value to the type you need.
sc (RenderContent.ExtraRequirementsSetContexts)The context of this operation.
true if successful, else false.

SetExtraRequirementParameter

#Since v7.9
public bool SetExtraRequirementParameter(string contentParameterName, string extraRequirementParameter, object value, ExtraRequirementsSetContexts sc)
Extra requirements are a way of specifying extra functionality on parameters in the automatic UI. See IAutoUIExtraRequirements.h in the C++ RDK SDK for string definitions for the parameter names.
contentParameterName (string)The parameter or field internal name to which this query applies.
extraRequirementParameter (string)The extra requirement parameter, as listed in IAutoUIExtraRequirements.h in the C++ RDK SDK.
value (object)The value to set this extra requirement parameter. You will typically use System.Convert to convert the value to the type you need.
sc (RenderContent.ExtraRequirementsSetContexts)The context of this operation.
true if successful, else false.

SetIsRenderHashRecursive

#Since v7.0
public void SetIsRenderHashRecursive(bool recursive)
By default, RenderHash recurses into children when computing the render hash. However, some applications may require children to be excluded from the render hash calculation. Call this method to enable or disable recursing into children. see RenderHash
recursive (bool)

SetName

#Since v7.0
public void SetName(string name, bool renameEvents, bool ensureNameUnique)
Set instance name for this content
name (string)
renameEvents (bool)
ensureNameUnique (bool)

SetParameter

#Since v5.7 Obsolete v6.0
public virtual bool SetParameter(string parameterName, object value, ChangeContexts changeContext)
obsoleteUse SetParameter without ChangeContexts and Begin/EndChange
Set the named parameter value for this content instance. If you do not support this parameter, call the base class.
parameterName (string)
value (object)
changeContext (RenderContent.ChangeContexts)

SetParameter

#Since v6.0
public virtual bool SetParameter(string parameterName, object value)
Set the named parameter value for this content instance. If you do not support this parameter, call the base class.
parameterName (string)
value (object)

SetRenderHash

#Since v6.0 Obsolete v6.0
[CLSCompliant(false)] public void SetRenderHash(uint hash)
obsoleteThis method is deprecated and no longer called. For more information see CalculateRenderHash
This method is deprecated and no longer called. For more information see CalculateRenderHash(ulong)
hash (uint)

ShowContentInstanceBrowser

#Since v8.15
public static bool ShowContentInstanceBrowser(RhinoDoc doc, ref Guid instance_id, RenderContentKind kinds, ContentInstanceBrowserButtons buttons)
Allows the user to choose a content by displaying the Content Instance Browser dialog. The dialog will have OK, Cancel and Help buttons, and optional New and Edit buttons. Specifies the document to use. Sets the initially selected content and receives the instance id of the chosen content. Specifies the kind(s) of content that should be displayed in the browser. Specifies which optional buttons to display. Returns true if the user chooses a content or false if the dialog is cancelled.
doc (RhinoDoc)
instance_id (ref Guid)
kinds (RenderContentKind)
buttons (RenderContent.ContentInstanceBrowserButtons)

SmartUngroupRecursive

#Since v6.26
public bool SmartUngroupRecursive()
Remove this content and all its children from any instance groups they may be a member of. If any content in the same document is left alone in the group, that content is also ungrouped. Records undo and sends events OnContentChanged and OnContentGroupIdChanged. \note This method is designed to be called from a content UI and is intended for RDK internal use but may be used as an expert user override.
true if a content was ungrouped, \e false if no content or child was part of a group.

Ungroup

#Since v6.26
public bool Ungroup()
Remove this content from any instance group it may be a member of. Does not record undo but does send the OnContentGroupIdChanged event.
true if content was ungrouped, \e false if it was not part of a group.

UngroupRecursive

#Since v6.26
public bool UngroupRecursive()
Remove this content and all its children from any instance groups they may be a member of. Does not record undo but does send the OnContentGroupIdChanged event.
true if a content was ungrouped, \e false if no content or child was part of a group.

Uninitialize

#Since v6.1 Obsolete v7.2
public void Uninitialize()
obsoleteThis method should not be called.

UseCount

#Since v6.9
public int UseCount()
UseCount returns how many times the content is used

VirtualIcon

#Since v6.0
public virtual bool VirtualIcon(Size size, out Bitmap bitmap)
Icon to display in the content browser, this bitmap needs to be valid for the life of this content object, the content object that returns the bitmap is responsible for disposing of the bitmap.
size (Size)Requested icon size
bitmap (out Bitmap)
Return Icon to display in the content browser.

Events

ContentAdded

#Since v5.7
public static event EventHandler<RenderContentEventArgs> ContentAdded
Used to monitor render content addition to the document.

ContentChanged

#Since v5.7
public static event EventHandler<RenderContentChangedEventArgs> ContentChanged
Used to monitor render content modifications.

ContentDeleted

#Since v6.0
public static event EventHandler<RenderContentEventArgs> ContentDeleted
Used to monitor render content deletion from the document.

ContentDeleting

#Since v5.7
public static event EventHandler<RenderContentEventArgs> ContentDeleting
Used to monitor render content deletion from the document.

ContentFieldChanged

#Since v5.11
public static event EventHandler<RenderContentFieldChangedEventArgs> ContentFieldChanged
This event is raised when a field value is modified.

ContentRenamed

#Since v5.7
public static event EventHandler<RenderContentEventArgs> ContentRenamed
Used to monitor render content renaming in the document.

ContentReplaced

#Since v5.7
public static event EventHandler<RenderContentEventArgs> ContentReplaced
Used to monitor render content replacing in the document.

ContentReplacing

#Since v5.7
public static event EventHandler<RenderContentEventArgs> ContentReplacing
Used to monitor render content replacing in the document.

ContentUpdatePreview

#Since v5.7
public static event EventHandler<RenderContentEventArgs> ContentUpdatePreview
Used to monitor render content preview updates.

CurrentEnvironmentChanged

#Since v6.11
public static event EventHandler<RenderContentEventArgs> CurrentEnvironmentChanged
Event fired when changes to current environments have been made. This will be one of Background, Reflection or Skylighting Since 6.11

PreviewRendered

#
public static event EventHandler<PreviewRenderedEventArgs> PreviewRendered
This event is raised when a preview has been rendered