developer:dotnetplugins


Rhino .NET Framework SDK

NOTE: A new SDK is being constructed for Rhino 5. Information can be found at RhinoCommon

.NET Framework Plug-In Development (Rhino 4.0 and 5.0)

Rhino ships with the necessary components to enable Rhino.NET plug-ins on users computers. Plug-ins can be created with a compiler that compiles assemblies using .NET 2.0, including:

  • Microsoft Visual C# and Microsoft Visual VB.NET 2005 and 2008 (including Microsoft Visual Studio Express editions)
  • Microsoft Visual C# and Microsoft Visual VB.NET 2010 are supported on Rhino 5.0
  • SharpDevelop 2.0 and above

Downloads

  • Rhino .NET SDK : Project wizards, XML comments, and SDK help CHM file (~20Meg)

What is .NET?

The term .NET can be confusing because it is used in several different contexts. With respect to Rhino, we are talking about the Microsoft .NET framework. This is a programming model that exposes Windows and its related services through an object oriented interface. The model is language neutral i.e any programming language that compiles to .NET intermediate language can use the .NET framework. Complete information on .NET is at: http://www.microsoft.com/net/

What is the Rhino.NET SDK?

Rhino.Net SDK helps developers to extend Rhino's functionality using 'Rhino plug-ins'. The Rhino.NET SDK provides the tools to develop Rhino plug-ins using a .NET programming language. This means that Rhino plug-ins can now be developed using VB.NET, C#, C++.NET, Delphi.NET (and the list goes on).

The Rhino.NET SDK is actually a wrapper around the Rhino C++ SDK. Most of the classes and methods provided by the C++ SDK are available through .NET.

Where is the Rhino.NET SDK?

The Rhino.NET SDK is composed of a rhino plug-in named RhinoDotNetManager.rhp and an assembly named Rhino_DotNET.dll located in the Rhino system directory. The Rhino_DotNET.dll assembly is what all Rhino.NET plug-ins reference to get exported classes and functions from Rhino. These files are installed with Rhino and are not a separate download.

What can I do with the Rhino.NET SDK?

The Rhino.NET SDK is designed to allow .NET developers to create Rhino plug-ins with the same capabilities as C++ developers.

Learning Resources

VB.NET School - Covers all you need to know to start programming in VB.NET.

C# School - Covers all you need to know to start programming in C#.

Questions

Post questions or read other people's questions/answers on the plug-ins newsgroup or email McNeel Developer Support.

Some of your questions may be answered by the DotNET Essentials page

Rhino.NET Articles

Add a Cylinder to Rhino 2010/01/12 09:49  
Add a Knot to a NURBS Curve 2010/10/11 13:37 Dale Fugier
Add a Spherical Surface to Rhino 2010/01/12 09:46  
Adding Arrowheads to Curves 2007/10/11 08:41  
Adding Background Bitmaps to Viewports 2007/05/23 17:02  
Adding Objects to a Group 2010/01/12 09:49  
Adding Textures to Objects 2010/01/12 09:49  
Adding command line options 2009/06/04 16:54  
Adjusting Clipping Planes from a Conduit 2007/11/05 13:13  
Adjusting Surface Isocurve Density 2009/03/17 09:54  
Applying Non-Uniform Transformations to Objects 2009/09/22 08:21  
Attaching Custom Data to Objects 2010/04/20 14:49 Dale Fugier
Block Definition Geometry 2010/01/12 09:49  
Bounding Box of a Curve Object 2008/08/17 09:03  
Calculate Curve Intersections 2010/01/12 09:49  
Calculate Surface Curvature 2009/08/03 12:41  
Calculate angle between two vectors 2008/12/01 09:15  
Calculating Tight Bounding Boxes for Breps 2010/08/31 10:35 Dale Fugier
Calculating the Volume Centroid of Solid Objects 2007/10/15 09:24  
Calculating the Volumes of Mesh Objects 2007/11/13 09:09  
Calculating the Volumes of Solid Objects 2008/09/12 08:43  
Changing Display Precision 2007/05/11 09:48  
Class Prefixes in the Rhino .NET SDK 2010/01/12 09:46  
Command Prompt Window Moves when Setting Language 2007/10/23 11:09  
Comparing Planar Surfaces and Planes 2007/08/31 09:39  
Convert an Arc Curve to a NURBS Curve 2006/12/12 08:40  
Create Meshes from Breps 2010/09/14 16:24 Dale Fugier
Create Surfaces From Corner Points 2009/07/01 11:49  
Create a Bounding Polyline of a Mesh Object 2007/11/08 13:30  
Create a NURBS Circle 2008/08/06 15:52  
Create a NURBS Curve from Control Points 2008/10/19 09:16  
Create a NURBS Surface 2010/08/24 10:07 Dale Fugier
Create a box from a curve's bounding box 2012/03/05 10:39 Dale Fugier
Create or Modify an Instance Definition 2011/09/27 10:27 Dale Fugier
Creating Aligned Dimensions 2008/10/08 11:55  
Creating Blocks 2007/07/19 09:35  
Creating NURBS Surfaces 2008/12/08 08:39  
Creating Radial Dimensions 2008/10/08 14:52  
Creating Sublayers 2008/04/29 08:54  
Creating a Leader 2010/01/12 09:49  
Curve-Surface Intersection 2005/08/28 16:17  
Dealing with commas and periods 2009/03/27 09:54  
Deleting Blocks 2011/07/13 09:27 Dale Fugier
Detecting Custom Texture Mapping 2007/10/17 14:34  
Determine the Deviation between two Curves 2007/11/06 16:30  
Determine the Maximum Z Coordinate Value of a Surface 2009/01/20 09:29  
Determining if a Brep is a Box 2010/01/12 09:49  
Determining the Normal Direction of a Brep Face 2010/01/12 09:49  
Display Conduit Introduction for .NET 2010/01/12 09:46  
Displaying Toolbars in Rhino 4.0 2007/01/09 10:49  
Divide a curve using equi-distance points. 2008/05/29 23:36  
Divide a curve using equi-distance points. 2010/01/12 09:46  
DotNET Plug-in: base surface from a trimmed one 2010/01/12 09:46  
DotNET Plug-in: base surface from a trimmed one 2010/01/12 09:46  
Drawing Arrowheads in a Display Conduit 2011/07/12 09:54 Dale Fugier
Drawing Meshes 2010/01/20 11:49  
Duplicate the Borders of Surfaces 2007/01/05 16:05  
Duplicating Objects with Group 2011/10/31 09:43 Dale Fugier
Dynamically Drawing Text Strings 2007/11/08 11:52  
Enabling Orthogonal Mode 2007/10/17 08:49  
Event Watchers 2010/01/12 09:46  
Extract Thumbnail Preview Image 2009/08/10 11:12  
Extracting Isoparametric Curves from Surfaces 2008/04/04 12:47  
FPU Issues 2009/07/15 10:20  
Finding the Centers of Circles 2010/01/12 09:46  
Finding the Centers of Circles 2010/01/12 09:46  
Get Surface Curvature Statistics 2010/09/30 08:45 Dale Fugier
Get the point at the current cursor position 2010/03/08 08:53 Dale Fugier
Getting Brep Faces from Edges 2011/07/12 09:03 Dale Fugier
Hatching Boundaries 2009/05/20 08:52  
How To: Add Text to Rhino 2007/01/04 13:54  
How To: Add a Brep Box Rhino 2010/01/12 09:49  
How To: Add a Custom Menu to Rhino 2005/06/23 11:49  
How To: Add a Line Curve Object 2010/01/12 09:49  
How To: Add a Linear Dimension to Rhino 2010/01/12 09:49  
How To: Add a Mesh Object to Rhino 2010/01/12 09:49  
How To: Add a New Layer 2010/01/12 09:49  
How To: Add a Torus to Rhino 2010/01/12 09:49  
How To: Add a Truncated Cone to Rhino 2010/01/12 09:49  
How To: Add a named view 2010/01/12 09:49  
How To: Boolean Difference 2010/01/12 09:49  
How To: Clear Rhino's Undo and Redo Lists 2006/01/12 08:53  
How To: Copy a CRhinoObject Object 2007/01/05 16:24  
How To: Create Contour Curves 2007/01/09 10:16  
How To: Create a Custom CRhinoGetObject Class 2006/01/18 11:03  
How To: Create a Plane Surface 2007/01/07 22:12  
How To: Create a Surface from Edge Curves 2007/01/05 16:57  
How To: Determine Rhino's Language Setting 2005/05/25 13:07  
How To: Determine an Object's Layer Name 2007/01/07 13:56  
How To: Divide a Curve by Length 2005/10/07 11:28  
How To: Divide a Curve by Segments 2005/10/07 11:32  
How To: Dump Debug Information to a Log File 2007/01/08 09:52  
How To: Dynamically Draw Geometry when Picking Points 2008/03/03 08:30  
How To: Extend a Curve Object 2007/01/07 09:56  
How To: Extend a Surface 2007/01/07 10:19  
How To: Find the Parameter of a Curve at a Point 2005/10/07 09:42  
How To: Get an Object's UUID 2005/08/16 10:15  
How To: Get and Set the Active View 2008/11/25 09:01  
How To: Interactively Pick an Angle 2007/01/07 10:42  
How To: Iterate through Rhino's Geometry Table. 2008/03/13 08:34  
How To: Loft Surfaces using RhinoSdkLoftSurface 2010/01/12 09:49  
How To: Maximize a View 2007/01/07 13:41  
How To: Mesh Objects using RhinoMeshObjects 2008/09/03 00:30  
How To: Mesh Objects using RhinoMeshObjects 2008/01/09 15:37  
How To: Mesh Objects using RhinoMeshObjects 2009/06/26 08:24  
How To: Modify a Light's Color 2008/11/05 09:47  
How To: Modify an Object's Color 2007/01/08 16:03  
How To: Modify an Object's Color 2010/01/12 09:46  
How To: Modify an Object's Name 2009/01/16 08:41  
How To: Modify the Weight of a Grip Object 2007/01/08 11:03  
How To: Move Objects to the Current Layer 2007/01/05 10:47  
How To: Move Objects to the Current Layer 2010/01/12 09:46  
How To: Move a Construction Plane 2007/01/05 10:44  
How To: Pick Point Objects 2008/03/13 08:30  
How To: Pre-Pick and Post-Pick Objects 2008/03/13 08:31  
How To: Rename a Layer 2007/01/07 22:35  
How To: Replace Rhino's Color Picking Dialog 2007/01/07 22:44  
How To: Retrieve the Unit System of the Active Document 2007/01/07 22:56  
How To: Select All Objects on a Layer. 2007/01/08 11:09  
How To: Select Objects 2007/02/07 12:31  
How To: Set a CPlane to a View 2005/07/28 09:35  
How To: Set a CPlane to a View 2010/01/12 09:46  
How To: Set a View's Construction Plane 2007/01/07 22:55  
How To: Set a View's Construction Plane 2010/01/12 09:49  
How To: Show All Hidden Objects 2007/01/07 22:54  
How To: Show All Hidden Objects 2010/01/12 09:49  
How To: Simplify polylines 2007/04/16 05:34  
How To: Simplify polylines 2010/01/12 09:46  
How To: Sweeping Surfaces using RhinoSweep1 2009/01/28 21:36  
How To: Sweeping Surfaces using RhinoSweep2 2009/02/04 08:40  
How To: Synchronize a Layer's Rendering Color 2008/08/07 14:03  
How To: Synchronize an Object's Rendering Color 2007/01/08 10:02  
How To: Test if an Object is a Circle 2010/01/12 09:46  
How To: Test if an Object is a Circle 2010/01/12 09:46  
How to extend RhinoScript with a .NET plug-in 2008/12/04 10:18  
How to run a Rhino command from a plug-in command 2010/01/12 09:49  
How to use RhinoScript from a Rhino.NET plug-in 2007/01/10 11:15  
How to: Document Data commands in a Rhino.NET plug-in. 2008/09/11 14:23  
How to: Document Data commands in a Rhino.NET plug-in. 2010/01/12 09:46  
Identifying Curve Shapes 2008/09/11 14:37  
Inflection point plugin 2007/12/20 04:43  
Inflection point plugin 2010/01/12 09:46  
Info: Attaching User Data to Brep Components 2010/01/12 09:49  
Info: Defining New Plug-in Commands 2005/06/23 10:15  
Info: Defining New Plug-in Commands 2010/01/12 09:46  
Info: Plug-in Loading 2007/12/18 14:43  
Info: Rhino 4.0 SDK: Textures and Mappings 2010/01/12 09:46  
Info: What is a Rhino Plug-in? 2010/01/12 09:49  
Intersecting Line Curves 2010/01/12 09:49  
Intersecting a Line with a Circle 2010/09/07 11:13 Dale Fugier
Justifying Text Entities 2011/09/20 08:07 Dale Fugier
Loading failure of DotNET plugins 2010/01/12 09:46  
Locating Rhino's Linetype File 2011/11/15 08:20 Dale Fugier
Lock a Layer 2010/10/28 08:38 Dale Fugier
Lofting Surfaces that Maintain Tangency 2007/05/23 13:21  
Making your .NET Plug-in compatible with the Rhino Installer Engine 2010/02/10 20:22 Brian Gillespie
Mesh Types 2009/06/23 10:23  
Modifying Advanced Display Settings 2010/01/12 09:49  
Modifying Texture Intensity 2009/12/11 09:37  
Modifying an Annotation Object's Dimension Style 2007/12/03 13:36  
Moving Point Objects 2008/04/16 08:52  
Moving Point Objects 2010/01/12 09:46  
Non-Interactive Object Selection 2011/04/18 10:21 Dale Fugier
Obtaining the Insertion Point of a Block 2009/03/19 08:51  
Obtaining the Resolution of a Viewport 2011/07/15 11:12 Dale Fugier
Offset a Curve 2008/01/06 16:39  
Orienting Objects on a Surface 2007/07/20 09:10  
Passing Arrays from .NET to RhinoScript 2010/01/12 09:46  
Passing Arrays from RhinoScript to .NET 2010/01/12 09:46  
Passing data from a .NET plug-in to RhinoScript 2010/01/12 09:46  
Picking Objects without CRhinoGetObject 2009/06/05 10:27  
Picking Text Dots with CRhinoGetObject 2007/07/25 10:56  
Projecting Points to Breps 2009/06/22 08:41  
Reading/Writing plug-in user data to a Rhino .3dm file 2008/03/05 16:30  
Reading/Writing plug-in user data to a Rhino .3dm file 2008/03/05 16:30  
Region Select Sample 2008/12/09 11:51  
Registering Plug-ins 2010/01/12 09:46  
Rename an Instance Definition Object 2011/08/15 10:10 Dale Fugier
Reparameterize a Curve 2007/01/07 22:44  
Replacing a Hatch Object's Pattern 2008/04/29 08:40  
Retrieving Annotation Text 2007/12/11 08:58  
Reversing the Direction of Curves 2008/03/14 12:58  
Rhino 3.0 .NET Framework SDK 2010/01/12 09:46  
Rhino SDK Textures and Mappings 2007/01/09 17:11  
Rhino4.NET Project and Command Wizards 2008/07/16 20:19  
RhinoCommon 2010/03/02 11:23 Steve Baer
Sample: Circle Packing Plugin (VB.NET) 2010/01/12 09:46  
Sample: Molecular modeling plugin (VB.NET) 2007/01/05 10:06  
Screen Capture a Viewport 2009/07/06 09:46  
Selecting Objects that are in a Group 2008/04/23 09:10  
Setting Backface Colors in Advanced Display Settings 2011/07/12 09:12 Dale Fugier
Setting a Viewport's Title 2008/09/18 10:54  
Shading Viewports 2008/10/03 08:42  
Show Surface Direction 2011/10/11 10:50 Dale Fugier
Showing Dynamic Object Transformations 2009/01/12 11:29  
Simple VB.NET Plug-In 2010/01/12 09:49  
Simplifying a Curve 2008/01/07 10:38  
Sorting 3-D Points 2009/03/16 12:07  
Split a set of BReps with a plane 2008/05/29 23:40  
Subscribing to the Developer Support Newsgroup 2010/03/04 09:00 Dale Fugier
Sweeping Surfaces Using Dynamically Created Curves 2012/02/08 08:50 Dale Fugier
The Rhino Installer Engine (Beta) 2010/02/11 16:30 Brian Gillespie
Transforming Brep Objects 2007/01/08 09:41  
Using Express Editions of VB.NET and C# 2010/01/12 09:46  
VB.NET plugin for Molecular modeling 2010/01/12 09:46  
View and Screen Capture 2007/11/17 20:32  
Zoom to an Object 2009/09/28 16:28  
实现extractPt 2008/09/04 00:59  
뷰와 화면 캡처 2007/11/18 20:55  

Rhino 4.0 .NET SDK Samples

Batch Render with VB - creates a console application that will batch render a folder of 3dm files. Demonstrates how to access RhinoScript from an external .NET application.

BrepSamples - demonstrates how to create a planar face with hole, and how to create a trimmed planar face in C#.

Docking Dialog with VB - creates a custom user control in VB.NET that works as a dockable dialog in Rhino.

Docking Dialog with C# - creates a custom user control in C# that works as a dockable dialog in Rhino.

Tagging objects with C# - tags objects with estimating data using C#.

Event Watcher with VB - create a class that is notified when changes occur in Rhino.

Extend Object Properties with C# - demonstrates how to extend Rhino's Object Properties window.

Object Manager in C# - creates a docking dialog of object uuids that responds to selection events.

Read Points from a Text File in C# - Uses System.IO.StreamReader to read from a text file.

TestExternalAccess - demonstrates how to access COM visible objects in a .NET plug-in from an external application.

Visual Analysis Mode - demonstrates how to create your own false color analysis mode in with C#.


developer/dotnetplugins.txt · Last modified: 2012/02/16 14:48 by dale Driven by DokuWiki Recent changes RSS feed

 © 1997-2012 

McNeel North America Europe Latin AmericaAsia