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 )
Rhino 3.0 SDK - requires Microsoft Visual C++ 6.0.
Plug-in AppWizard Update - Get this after installing the above SDK.
Post questions or read other people's questions/answers on the plug-ins newsgroup
| 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. |
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.