Rhino3 C Plus Plus Plug Ins
Last changed: dale@mcneel.com-204.177.179.125

.

Rhino 3.0 C++ Plug-In Development

The Rhino 3.0 Software Development Kit (SDK) provides the tools to develop native C++ plug-ins for Rhino 3.0.

(Rhino 4.0 C++ Plug-In development pages can be found here )

Downloads

Rhino 3.0 SDK - requires Microsoft Visual C++ 6.0.

Plug-in AppWizard Update - Get this after installing the above SDK.

Getting Started

What is a Rhino Plug-in?

Questions

Post questions or read other people's questions/answers on the plug-ins newsgroup

Rhino 3.0 SDK Articles (sorted by last modified)

Problem Calculating the Lengths of NURBS Curves Discusses a problem when trying to calculate the length of a NURBS curve using the Rhino SDK.
Finding Points on Curves at Arc Length Distances Demonstrates how to find points that are a specified distance from the start of curves using the Rhino SDK.
How To: Run a Rhino Command from a Plug-in Command Discusses the proper techniques to use when running Rhino command from within the context of a plug-in command.
Adding command line options Demonstrates how to add a different type of command line options to a custom command.
Splitting a Curve into Multiple Curve Segments Demonstrates how to split a curve into multiple curve segments using the Rhino SDK.
Creating Sublayers Demonstrates how to create sublayers using the Rhino SDK.
Replacing a Hatch Object's Pattern Demonstrates how to replace a Hatch Object's pattern using the Rhino SDK.
Loading Plug-ins at Startup Discusses how to configure plug-ins to load at startup.
How To: Display MFC Dialogs How to display both an MFC modal dialog and an MFC modeless dialog from a Rhino plug-in.
Extracting Isoparametric Curves from Surfaces Demonstrates how to extract isoparametric curves from surfaces using the Rhino SDK.
How To: Iterate through Rhino's Geometry Table. Demonstrates how to use the CRhinoObjectIterator class to iterate through the document.
How To: Pre-Pick and Post-Pick Objects Demonstrates how to both pre-pick and post-pick objects using a single CRhinoGetObject object.
How To: Pick Point Objects Demonstrates how to use CRhinoGetObject to pick point objects.
How To: Create a Custom CRhinoGetObject Class Demonstrates how to derive a class from CRhinoGetObject to handle special case object picking.
Reading/Writing plug-in user data to a Rhino .3dm file Demonstrates how to save a restore document data
How To: Dynamically Draw Geometry when Picking Points Demonstrates how to derive a new class from CRhinoGetPoint to dynamically draw geometry during a point picking operation.
How To: Determine Rhino's Language Setting How to determine Rhino's current language setting when developing localized plug-ins.
How To: Dynamically Drawing a Polyline Demonstrates how to derive a new class from CRhinoGetPoint to dynamically draw a polyline.
Info: What is a Rhino Plug-in? Overview of Rhino plug-ins and how to get started in plug-in development.
How To: Visual Studio IntelliSense Discuss how to enable Visual Studio's IntelliSense feature with the Rhino SDK.
How To: Display a Toolbar in a Workspace File Demonstrates how to display a toolbar in a toolbar collection, or workspace, file.
Add a Custom Menu to Rhino's Menu Demonstrates how to add a custom menu to Rhino's menu using the Rhino SDK.
Using CRhinoGetFileDialog to Preview Bitmaps Demonstrates how to use the CRhinoGetFileDialog class to preview bitmap images.
How To: Add a Brep Box Rhino Demonstrates how to add a Brep Box from a Rhino plug-in.
Project Curves onto Breps Demonstrates how to project a curve onto a brep using the Rhino SDK.
How To: Mesh Objects using RhinoMeshObjects Demonstrates how to mesh surface and polysurface objects using the RhinoMeshObjects SDK function.
Info: Modeless Dialog Box in Plug-In Does Not Process TAB Key Information on how to make the TAB key work from modeless dialog boxes.
Info: Creating Your First Plug-in Overview of creating plug-ins with the Rhino SDK's plug-in wizard.
Intersecting Line Curves Demonstrates how to intersect line curves using the Rhino SDK.
Calculating Curve Intersections Demonstrates how to calculate the intersection of two curves.
Determining the Normal Direction of a Brep Face Discusses how to determine the normal direction of a brep face using the Rhino SDK.
Determine the Maximum Z Coordinate Value of a Surface Demonstrates how determine the maximum Z coordinate of a surface using the Rhino SDK.
Dynamically Drawing Text Strings Demonstrates how to dynamically draw text strings using the Rhino SDK.
Changing the Display Precision Demonstrates how to change the unit's display precision of the current document using the Rhino SDK.
Determine the Deviation between two Curves Demonstrates how to determine the deviation between two curves using the RhinoGetOverlapDistance() SDK function.
Calculate the angle between two vectors Demonstrates how to calculate the angle between two 3-D vectors using the Rhino SDK.
Comparing Planar Surfaces and Planes Demonstrates how to see if a planar surface lies in a specific plane.
Info: Defining New Plug-in Commands How to add new command classes to Rhino plug-ins.
How To: Get an Object's UUID Demonstrates how to get an object's UUID using the Rhino SDK.
Info: Registering Plug-ins Step-by-step instructions for registering your plug-in.
Shading Individual Objects Demonstrates how to shade individual objects using the Rhino SDK.
Info: Loading Wizard-Generated Plug-ins Information on what version of Rhino to use to test your wizard-generated plug-ins.
Rotate Objects Around Center Demonstrates how rotate objects around the center point of their bounding box using the Rhino SDK.
How To: Add a Mesh Object to Rhino Demonstrates how to add a simple mesh object to Rhino.
Split a Brep Demonstrates how split a brep with another brep using the Rhino SDK.
Canceling Long Processes with the ESC Key Demonstrates how to cancel a long process by detecting the ESC key using the Rhino SDK.
How To: Add a Linear Dimension to Rhino Demonstrates how to add a linear dimension object to Rhino.
How To: Select Objects How to interactively select objects from a Rhino plug-in.
Info: Attaching User Data to Brep Components Demonstrates how to attach object user data to components of a Brep.
Displaying Toolbars in Rhino 4.0 Demonstrates how to open a toolbar collection and display a toolbar in Rhino 4.0.
How To: Create Contour Curves Demonstrates how to create contour curves through surfaces, breps, and meshes using the MakeRhinoContours() SDK function.
Retrieving Rhino Data from the Clipboard How to access Rhino data from the Windows Clipboard.
How To: Modify an Object's Color Discuss how to modify an object's color with the Rhino SDK.
How To: Add a Custom Menu to Rhino How to add a custom popup menu to Rhino's main menu from a Rhino plug-in.
How To: Select All Objects on a Layer. Demonstrates how to select all of the objects on a specified layer.
How To: Synchronize a Layer's Rendering Color Demonstrates how to synchronize the basic material color of a layer with the layer's color.
How To: Synchronize an Object's Rendering Color Demonstrates how to synchronize the basic material color of an object with the object's display color.
How To: Dump Debug Information to a Log File Discusses the use of the ON_TextLog class for debugging plug-ins.
Transforming Brep Objects Demonstrates how to transform brep, or boundary representation, objects using the Rhino SDK.
How To: Retrieve the Unit System of the Active Document Demonstrates how to determine the current unit system of the current document using the Rhino SDK.
How To: Set a View's Construction Plane Demonstrates how to set a view's construction plane.
How To: Show All Hidden Objects Demonstrates how to iterate throught the geometry table an unhide hidden objects.
How To: Get and Set the Active View Demonstrates how to get and set the active view using the Rhino SDK.
How To: Reparameterize a Curve Demonstrates how to reparameterize a curve objeect.
How To: Rename a Layer Discusses how to rename a layer using the Rhino SDK.
How To: Create a Plane Surface Demonstrates how to create a plane surface using the Rhino SDK.
How To: Modify an Object's Name Demonstrates how to modify an object's user-defined name.
How To: Determine an Object's Layer Name Demonstrates how to determine a selected object's layer name using the Rhino SDK.
How To: Maximize a View Demonstrates how to maximize a view using the Rhino SDK.
How To: Interactively Pick an Angle Demonstrates how to use the CRhinoGetAngle class to pick an angle.
How To: Extend a Surface Demonstrates how to use RhinoExtendSurface() to extend a surface object.
How To: Extend a Curve Object Demonstrates how to extend a curve by a line, arc or smooth extension until it intersects a collection of objects.
How To: Create a Surface from Edge Curves Demonstrates how to create a surface object from four edge curves.
How To: Copy a CRhinoObject Object Demonstrates how to make a copy of a CRhinoObject-derived object.
Duplicate the Borders of Surfaces Demonstrates how to duplicate the borders of surfaces and polysurfaces.
How To: Divide a Curve by Segments Demonstrates how to divide a curve object by a specified number of segments.
How To: Divide a Curve by Length Demonstrates how to divide a curve object by a specified length.
How To: Find the Parameter of a Curve at a Point Demonstrates how to find the parameter of a curve at a given 3D point.
Info: Using the sizeof operator with TCHAR and wchar_t Discusses the sizeof operator and UNICODE strings.
How To: Convert an Arc curve to a NURBS curve Demonstrates how to convert an ON_ArcCurve object to an ON_NurbsCurve object.
How To: Clear Rhino's Undo and Redo Lists Demonstrates how to clear Rhino's Undo and Redo lists.
How To: Add a Truncated Cone to Rhino Demonstrates how to create a truncated cone ON_BrepRevSurface and add it to Rhino.
How To: Add a Torus to Rhino Demonstrates how to create a torus using ON_BrepTorus and add it to Rhino.
How To: Add Objects to a Group Demonstrates how to add selected objects to an object group.
How To: Add a Line Curve Object Demonstrates how to add a line curve to Rhino using the Rhino SDK.
How To: Add a New Layer Demonstrates how to add a new layer to Rhino.
How To: Add a Cylinder to Rhino Demonstrates how to create a cylinder using ON_BrepCylinder and add it to Rhino.
Update for Rhino Plug-In AppWizard Update to the Rhino Plug-in AppWizard for Visual C++ 6.0 included with the Rhino SDK.
How To: Move Objects to the Current Layer Discusses how to iterate through the Rhino geometry table and modify the layer of selected objects.
How To: Move a Construction Plane Demonstrates how to move the origin of a construction plane.
How To: Test if an Object is a Circle Demonstrates how to test if an object looks like a circle.
CreatingInstallationIndependentProjects How to set up DevStudio and Rhino projects to be independent of user SDK installation choices.
How To: Create a NURBS Circle Demonstrates how to use ON_NurbsCurve to create a circle.
How To: Set a CPlane to a View Demonstrates how to set the construction plane in the active viewport parallel to the view.
How To: Modify a Light's Color How to modify the diffuse color of an exising CRhinoLight object.
How To: Insert a Block Demonstrates how to insert a block instance at a user specified location.
How To: Add Text to Rhino Demonstrates how to use ON_TextEntity2 to add text to Rhino.
How To: Add a Spherical Surface to Rhino Demonstrates how to create a sphere using ON_RevSurface and add it to Rhino.
How To: Pull a Curve to a Surface Demonstrates how to use ON_Surface::Pullback() to pull a curve object to a surface object.
Showing Objects Transforming Dynamically Demonstrates how to dynamically draw transforming objects.

Rhino 3.0 C++ SDK Samples

AnnotateCurveEndPoints - add text dots at the end points of a selected curve.

ChangeObjectColor - change the color of selected objects.

ChangeOrder - change the order, or degree, of a surface or polysurface.

ClientList - read a Microsoft Access database from a plug-in.

CommandWatcher - event watcher class to monitor commands.

DockExample - create a dockable container from a plug-in.

ExampleCommands - More examples of Rhino commands.

ExampleCommands2 - even more examples of Rhino commands.

ExampleMeshTools - mesh manipulation tools.

ExportVRML - create a file export plug-in to export VRML files.

FalseColor - false color demonstration.

import_OFF - create a file import plug-in to import Geomview .OFF files.

ImportPoints - create a file import plug-in to import a comma-delimited points file.

MakeTwistedCube - how to "roll your own" brep.

MenuTest - add menus to Rhino's main menu.

MyRhinoView - add a new view to Rhino 3.0.

MyUserData - how to attach object user data.

OcclusionView - occlusion view demonstration.

OpenGLDemo - OpenGL demonstration.

OrientOnCrv - orient objects on a curve.

OrientPerpToCrvEx - orient objects perpendicular to a curve.

PhantomBBox - phantom bounding box demonstration.

RandomMeshColor - use a draw callback to draw false color meshes.

ResetDefaultRenderer - reset Rhino's default rendering plug-in.

Sample3DPrinter - display a menu item on the File->Print 3D menu.

SelectObjectWatcher - using an event watcher to watch for object selection.

TestAnimator - transform objects using a dialog slider.

TestAutomation - interface with RhinoScript from a plug-in.

TestCustomMaterial - add user data to ON_Material objects.

TestDocumentData - read and write document user data.

TestDrawBoundingBox - use a draw callback to draw a bounding box.

TestFlexGrid - how to use Microsoft's FlexGrid control in a plug-in.

TestMSWord - interface a Rhino plug-in with Microsoft Word.

TestObjectPropertiesPage - add a property page to Rhino's object properties dialog.

TestPopupMenu - how to popup a menu anywhere.

TestPreview - display a thumbnail preview image in an MFC dialog.

TestPropPage - add a propery page to Rhino's options dialog.

TestOfnKing - How to use and customize the Explorer-style CFileDialog by using the MSDN OfnKing sample. For more information, see MSDN for OfnKing

TestRotateMove - move and rotate objects.

TestSecurity - use Rhino's built-in peer-to-peer network license checking mechanism.

TestStackedDialog - create a stacked dialog page.

TestUserData - how two plug-ins can share user data.