Rhino C++ API  7.20
Public Types | Public Member Functions | List of all members
CRhinoFileExportPlugIn Class Referenceabstract

#include <rhinoSdkPlugIn.h>

Inheritance diagram for CRhinoFileExportPlugIn:
CRhinoPlugIn ON_Object

Public Types

enum  file_export_plug_in_proc_message_id { file_export_plug_in_force_32bit = 0xFFFFFFFF }
- Public Types inherited from CRhinoPlugIn
enum  license_capabilities {
  no_capabilities = 0x0, can_be_purchased = 0x1, can_be_specified = 0x2, can_be_evaluated = 0x4,
  evaluation_is_expired = 0x8, supports_rhino_accounts = 0x10, supports_standalone = 0x20, supports_zoo_per_user = 0x40,
  supports_zoo_per_core = 0x80, supports_license_discovery = 0x100, license_dialog_buttons_force_32bit = 0xFFFFFFFF
enum  plug_in_proc_message_id { plug_in_force_32bit = 0xFFFFFFFF }
enum  plugin_load_time {
  load_plugin_disabled = 0, load_plugin_when_needed = 2, load_plugin_at_startup = 1, load_plugin_when_needed_ignore_docked = 6,
  load_plugin_when_needed_or_optionsdlg = 10, load_plugin_when_needed_or_tabbed_dockbar = 18, plugin_load_time_force_32bit = 0xFFFFFFFF
enum  plugin_type : unsigned int {
  unknown_plugin_type = 0, render_plugin = 0x01, file_export_plugin = 0x02, file_import_plugin = 0x04,
  digitizer_plugin = 0x08, utility_plugin = 0x10, display_pipeline_plugin = 0x20, display_engine_plugin = 0x40
- Public Types inherited from ON_Object
enum  UserDataConflictResolution : unsigned char {
  UserDataConflictResolution::destination_object = 0, UserDataConflictResolution::source_object = 1, UserDataConflictResolution::source_copycount_gt = 2, UserDataConflictResolution::source_copycount_ge = 3,
  UserDataConflictResolution::destination_copycount_gt = 4, UserDataConflictResolution::destination_copycount_ge = 5, UserDataConflictResolution::delete_item = 6

Public Member Functions

 CRhinoFileExportPlugIn ()
 ~CRhinoFileExportPlugIn ()
virtual void AddFileType (ON_ClassArray< CRhinoFileType > &ext_list, const CRhinoFileWriteOptions &options)=0
virtual void DisplayOptionsDialog (HWND parent, const CRhinoFileType &fileType)
virtual LRESULT FileExportPlugInProc (UINT message, WPARAM wParam, LPARAM lParam)
 This will be used to extend this class without breaking the SDK. More...
virtual BOOL GetFileDialogPreviewImageAndNotes (const wchar_t *lpsFileName, class CRhinoDib &dib, class CRhinoUiRichEditCtrl &ctrlNotes)
virtual BOOL OnPaintFileDialogPreviewImage (const wchar_t *lpsFileName, HWND hWnd)
plugin_type PlugInType () const override
virtual int WriteFile (const wchar_t *lpsFileName, int index, CRhinoDoc &doc, const CRhinoFileWriteOptions &options)=0
- Public Member Functions inherited from CRhinoPlugIn
 CRhinoPlugIn ()
virtual ~CRhinoPlugIn ()
virtual void AddPagesToDocumentPropertiesDialog (CRhinoOptionsPageCollection &collection)
virtual void AddPagesToObjectPropertiesDialog (CRhinoPropertiesPanelPageCollection &collection)
virtual void AddPagesToOptionsDialog (CRhinoOptionsPageCollection &collection)
virtual BOOL AddToPlugInHelpMenu () const
virtual BOOL CallWriteDocument (const CRhinoFileWriteOptions &options)
const ON_SimpleArray< CRhinoCommand * > & CommandList () const
bool DisplayPlugInErrorDialog (const wchar_t *message) const
const ON_UUID GetLicenseId ()
virtual void GetMenuMessageString (HMENU hMenu, UINT nID, ON_wString &wMessage) const
BOOL GetPlugInFileName (ON_wString &result) const
BOOL GetPlugInFolder (ON_wString &result) const
virtual LPUNKNOWN GetPlugInObjectInterface (const ON_UUID &iid)
BOOL GetPlugInRegistryKey (ON_wString &result) const
class CRhPlugInPrivate * GetPrivateData ()
 Get extended data from plug-in. More...
BOOL InsertPlugInItemToRhinoMenu (HMENU hTargetMenu, UINT index, MENUITEMINFO *pMi)
BOOL InsertPlugInMenuToRhinoMenu (HMENU hmenu, int index)
BOOL InsertPlugInMenuToRhinoMenu (HMENU hmenu, LPCTSTR title)
bool IsRhinoCommonPlugIn () const
virtual void LoadProfile (LPCTSTR lpszSection, CRhinoProfileContext &pc)
virtual const wchar_t * LocalPlugInDescription () const
virtual const wchar_t * LocalPlugInName () const
virtual BOOL OnDisplayPlugInHelp (HWND hWnd) const
virtual void OnInitPlugInMenuPopups (WPARAM wparam, LPARAM lparam)
virtual int OnLoadPlugIn ()
virtual bool OnLoadPlugInErrorString (ON_wString &msg)
virtual BOOL OnPlugInMenuCommand (WPARAM wparam)
virtual void OnRegisterPlugIn (bool bDone)
virtual void OnSaveAllSettings ()
virtual void OnUnloadPlugIn ()
virtual const wchar_t * PlugInDescription () const
const wchar_t * PlugInFileName () const
virtual HICON PlugInIcon (const ON_2iSize &size)
virtual GUID PlugInID () const =0
HINSTANCE PlugInInstance () const
virtual plugin_load_time PlugInLoadTime ()
AFX_MODULE_STATE * PlugInModuleState () const
virtual const wchar_t * PlugInName () const =0
virtual LRESULT PlugInProc (UINT message, WPARAM wParam, LPARAM lParam)
 This will be used to extend this class without breaking the SDK. More...
void PlugInTypeString (ON_wString &wResult) const
virtual const wchar_t * PlugInVersion () const =0
virtual BOOL ReadDocument (CRhinoDoc &doc, ON_BinaryArchive &archive, const CRhinoFileReadOptions &options)
virtual void RemoveDocumentPropertiesDialogTabs (CRhinoDocumentPropertiesTabs &tab_manager)
BOOL RemovePlugInMenuFromRhino (HMENU hTargetMenu)
virtual void ResetMessageBoxes ()
virtual bool SaveAsV3 (const CRhinoFileWriteOptions &options)
virtual void SaveProfile (LPCTSTR lpszSection, CRhinoProfileContext &pc)
void SaveSettings ()
CRhinoSettingsSettings ()
virtual BOOL WriteDocument (CRhinoDoc &doc, ON_BinaryArchive &archive, const CRhinoFileWriteOptions &options)
- Public Member Functions inherited from ON_Object
 ON_Object (const ON_Object &)
virtual ~ON_Object ()
virtual ON_AggregateComponentStatus AggregateComponentStatus () const
bool AttachUserData (class ON_UserData *pUserData)
unsigned int ClearAllComponentStates () const
virtual unsigned int ClearComponentStates (ON_COMPONENT_INDEX component_index, ON_ComponentStatus states_to_clear) const
virtual unsigned int ClearComponentStates (ON_ComponentStatus states_to_clear) const
void CopyUserData (const ON_Object &source_object)
unsigned int CopyUserData (const ON_Object &source_object, ON_UUID source_userdata_item_id, ON_Object::UserDataConflictResolution userdata_conflict_resolution)
virtual ON__UINT32 DataCRC (ON__UINT32 current_remainder) const
virtual bool DeleteComponents (const ON_COMPONENT_INDEX *ci_list, size_t ci_count)
virtual void DestroyRuntimeCache (bool bDelete=true)
bool DetachUserData (class ON_UserData *pUserData)
virtual void Dump (ON_TextLog &) const
void EmergencyDestroy ()
class ON_UserDataFirstUserData () const
virtual unsigned int GetComponentsWithSetStates (ON_ComponentStatus states_filter, bool bAllEqualStates, ON_SimpleArray< ON_COMPONENT_INDEX > &components) const
class ON_UserDataGetUserData (const ON_UUID &userdata_uuid) const
bool GetUserString (const wchar_t *key, ON_wString &string_value) const
int GetUserStringKeys (ON_ClassArray< ON_wString > &user_string_keys) const
int GetUserStrings (ON_ClassArray< ON_UserString > &user_strings) const
bool IsCorrupt (bool bRepair, bool bSilentError, class ON_TextLog *text_log) const
bool IsKindOf (const ON_ClassId *pClassId) const
virtual void MarkAggregateComponentStatusAsNotCurrent () const
virtual void MemoryRelocate ()
virtual ON_UUID ModelObjectId () const
void MoveUserData (ON_Object &source_object)
unsigned int MoveUserData (ON_Object &source_object, ON_UUID source_userdata_item_id, ON_Object::UserDataConflictResolution userdata_conflict_resolution, bool bDeleteAllSourceItems)
virtual ON::object_type ObjectType () const
ON_Objectoperator= (const ON_Object &)
void PurgeUserData ()
virtual bool Read (ON_BinaryArchive &binary_archive)
virtual unsigned int SetComponentStates (ON_COMPONENT_INDEX component_index, ON_ComponentStatus states_to_set) const
virtual unsigned int SetComponentStatus (ON_COMPONENT_INDEX component_index, ON_ComponentStatus status_to_copy) const
bool SetUserString (const wchar_t *key, const wchar_t *string_value)
int SetUserStrings (int count, const ON_UserString *user_strings, bool bReplace)
virtual unsigned int SizeOf () const
bool ThisIsNullptr (bool bSilentError) const
void TransformUserData (const class ON_Xform &xform)
virtual bool UpdateReferencedComponents (const class ON_ComponentManifest &source_manifest, const class ON_ComponentManifest &destination_manifest, const class ON_ManifestMap &manifest_map)
int UserStringCount () const
virtual bool Write (ON_BinaryArchive &binary_archive) const

Additional Inherited Members

- Static Public Member Functions inherited from CRhinoPlugIn
static class CRhinoPlugInRecordGetLoadedPlugIn (ON_UUID uuid)
static class CRhinoPlugInRecordGetPlugIn (const wchar_t *lpsFileName)
static class CRhinoPlugInRecordGetPlugIn (int nIndex)
static class CRhinoPlugInRecordGetPlugIn (ON_UUID uuid)
static bool GetPlugInList (class ON_ClassArray< CRhinoPlugInRecord > &result, int nPlugInTypes=0xFFFFFFFF)
static int LoadPlugIn (const ON_UUID &uuid, bool bQuietly, bool ignore_load_failed)
static bool PlugInConstructionPermitted ()
static int PlugInCount ()
static const wchar_t * PlugInTypeString (int type)
static bool SaveLoadProtectionToRegistry (ON_UUID plugin_uuid, int load_protection)
- Protected Member Functions inherited from CRhinoPlugIn
bool GetLicense ()
bool GetLicense (unsigned int capabilities, const wchar_t *text_mask)
bool GetLicenseOwner (ON_wString &registeredOwner, ON_wString &registeredOrganization)
bool IsValid (ON_TextLog *text_log=nullptr) const override
bool ReturnLicense ()
void SetLicenseCapabilities (const wchar_t *format_string, CRhinoPlugIn::license_capabilities capabilities, ON_UUID licenseId)
- Protected Attributes inherited from CRhinoPlugIn
bool m_is_rhino_common_plug_in

Detailed Description

class CRhinoFileExportPlugIn

Description: Derive plug-in control object from this class to create a file export plug-in. This class provides interfaces for extending the Rhino file save dialog, drawing custom preview images and writing files.

Member Enumeration Documentation

◆ file_export_plug_in_proc_message_id


for internal use only, this allows adding additional values without breaking the SDK in the future

Constructor & Destructor Documentation

◆ CRhinoFileExportPlugIn()

CRhinoFileExportPlugIn::CRhinoFileExportPlugIn ( )

◆ ~CRhinoFileExportPlugIn()

CRhinoFileExportPlugIn::~CRhinoFileExportPlugIn ( )

Member Function Documentation

◆ AddFileType()

virtual void CRhinoFileExportPlugIn::AddFileType ( ON_ClassArray< CRhinoFileType > &  ext_list,
const CRhinoFileWriteOptions options 
pure virtual

Description: When Rhino gets ready to display the save file dialog, it calls AddFileType() once for each loaded CMyGeometryExportPlugIn.

Parameters: ON_ClassArray<CRhinoFileType>& ext_list = Append your supported file types to this list const CRhinoFileWriteOptions& opts = File write options,

Example: If your file import plug-in writes "My Geometry Files" that have a ".mygeo" extension, then your AddToFileType(....) would look like

CMyGeometryExportPlugIn::AddToFileType( ON_ClassArray<CRhinoFileType>& ft_list, const CRhinoFileWriteOptions& opts) { CRhinoFileType ft( PlugInID(), L"My Geometry Files (*.mygeo)", L"mygeo"); ft_list.Append( ft); }

◆ DisplayOptionsDialog()

virtual void CRhinoFileExportPlugIn::DisplayOptionsDialog ( HWND  parent,
const CRhinoFileType fileType 

Description: Called when AddFileType was called, a CRhinoFileType was added passing a true as the includeOptionsButtonInFileDialog constructor parameter and the file type is selected in the file save dialog.

Parameters: parent = File dialog box handle to be used as the parent for the plug-in provided options dialog box. const wchar_t* lpsFileName = Name of file int nFileTypeIndex = Index of file extension added to list in AddToFileType() callback. const CRhinoFileReadOptions& options = File read options

Remarks: The plug-in is responsible for opening lpsFile, reading it and creating document geometry.

◆ FileExportPlugInProc()

virtual LRESULT CRhinoFileExportPlugIn::FileExportPlugInProc ( UINT  message,
WPARAM  wParam,
LPARAM  lParam 

This will be used to extend this class without breaking the SDK.

◆ GetFileDialogPreviewImageAndNotes()

virtual BOOL CRhinoFileExportPlugIn::GetFileDialogPreviewImageAndNotes ( const wchar_t *  lpsFileName,
class CRhinoDib dib,
class CRhinoUiRichEditCtrl ctrlNotes 

Description: When a user single clicks on a file in the file open dialog, Rhino displays a preview image of the file's contents and notes associated with the file. If you want to paint a preview image or modify the notes control then override this method and return true. If this method returns false Rhino will clear the preview image.

Returns: true = This plug-in painted preview and/or updated the notes false = This plug-in did not paint, let file dialog paint.

Parameters: lpsFileName = File name (full path) dib = 24 bit DIB which is the size of the preview image window. ctrlNotes = Read-only rich edit control to display file information in

◆ OnPaintFileDialogPreviewImage()

virtual BOOL CRhinoFileExportPlugIn::OnPaintFileDialogPreviewImage ( const wchar_t *  lpsFileName,
HWND  hWnd 

Description: OBSOLETE - See GetFileDialogPreviewImageAndNotes

When a user single clicks on a file in the file open dialog, Rhino displays a preview image of the file's contents. If you want to paint a preview image then override OnPaintFileDialogPreviewImage() and return true. If OnPaintFileDialogPreviewImage() returns false, then Rhino will clear the preview image. This method is only called if calling OnPaintFileDialogPreviewImageAndNotes() returns false.

Returns: true = This plug-in painted preview. false = This plug-in did not paint, let file dialog paint.

Parameters: const wchar_t* lpsFileName = File name (full path) HWND hWnd = Handle to preview window.

see GetFileDialogPreviewImageAndNotes

◆ PlugInType()

plugin_type CRhinoFileExportPlugIn::PlugInType ( ) const

Description: Identifies the type of plug-in. Returns: Codes described above. Remarks: Rhino will attempt to cast the one and only plug-in derived object when loading a plug-in. If it does not cast correctly then the plug-in will not be allowed to load.

Implements CRhinoPlugIn.

◆ WriteFile()

virtual int CRhinoFileExportPlugIn::WriteFile ( const wchar_t *  lpsFileName,
int  index,
CRhinoDoc doc,
const CRhinoFileWriteOptions options 
pure virtual

Description: Rhino calls WriteFile() to create document geometry.

Parameters: const wchar_t* lpsFileName = Name of file to write int nFileTypeIndex = Index of file extension added to list in AddToFileType() callback. CRhinoDoc& doc = Empty document containing nothing but a Default layer. const CRhinoFileWriteOptions& options = File read options

Returns: > 0 = File was successfully written 0 = Not able to write file for some reason < 0 = File writing canceled

Remarks: The plug-in is responsible for opening lpsFile and writing document data to it.