Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

SketchUp C# API - A C++/CLI API Wrapper for the Trimble(R) SketchUp(R) C API

License

Notifications You must be signed in to change notification settings

moethu/SketchUpNET

Open more actions menu

Repository files navigation

SketchUpNET

C++/CLI API Wrapper for the Trimble(R) SketchUp(R) C API. http://www.sketchup.com/intl/en/developer/api-terms-of-service.pdf

This library adds .NET support to the existing SketchUp C-API. It makes most SketchUp C-API features available in .NET and therefore accessible in C# or VB applications. You can download a pre-built release of the library or build it yourself from scratch.

Code-Examples

This Repo contains three sample projects using SketchUpNET in C#.NET:

  • SketchUpForDynamo: An Autodesk's(R) Dynamo Node Package allowing you to read/write SketchUp files from Dynamo.
  • SketchUpForGrasshopper: A Set of Components for McNeel's(R) Grasshopper(R) allowing you to read/write SketchUp files from GH.
  • SketchUpNETConsole: A sample C# console application using SketchUpNET.

If you want to build your own application using the SketchUp API take the following steps:

Loading a Model

SketchUpNET.SketchUp skp = new SketchUp();
skp.LoadModel("myfile.skp", true);
foreach (var srf in skp.Surfaces) {
  // do something with your surfaces
}

Saving a Model

skp.WriteNewModel("filename.skp");

Converting a Model

SketchUpNET.SketchUp skp = new SketchUp();
skp.SaveAs("old-file.skp", SKPVersion.V2020, "new-file.skp");

Writing a Surface to a File

SketchUpNET.SketchUp skp = new SketchUpNET.SketchUp();
skp.Layers = new List<Layer>() { new Layer("Layer0") };
skp.Surfaces = new List<Surface>();
skp.Curves = new List<Curve>();
skp.Edges = new List<Edge>();
List<SketchUpNET.Vertex> Verticies = new List<SketchUpNET.Vertex>();

SketchUpNET.Loop OuterEdges = new SketchUpNET.Loop();
OuterEdges.Edges = new List<Edge>();
{
  OuterEdges.Edges.Add(new SketchUpNET.Edge(new Vertex(0, 0, 0), new Vertex(500, 0, 0), "Layer0"));
  OuterEdges.Edges.Add(new SketchUpNET.Edge(new Vertex(500, 0, 0), new Vertex(500, 500, 0), "Layer0"));
  OuterEdges.Edges.Add(new SketchUpNET.Edge(new Vertex(500, 500, 0), new Vertex(0, 500, 0), "Layer0"));
  OuterEdges.Edges.Add(new SketchUpNET.Edge(new Vertex(0, 500, 0), new Vertex(0, 0, 0), "Layer0"));
}

List<Loop> InnerLoops = new List<Loop>();
{
  SketchUpNET.Loop InnerEdges = new SketchUpNET.Loop();
  InnerEdges.Edges = new List<Edge>();
  InnerEdges.Edges.Add(new SketchUpNET.Edge(new Vertex(100, 100, 0), new Vertex(400, 100, 0), "Layer0"));
  InnerEdges.Edges.Add(new SketchUpNET.Edge(new Vertex(400, 100, 0), new Vertex(400, 400, 0), "Layer0"));
  InnerEdges.Edges.Add(new SketchUpNET.Edge(new Vertex(400, 400, 0), new Vertex(100, 400, 0), "Layer0"));
  InnerEdges.Edges.Add(new SketchUpNET.Edge(new Vertex(100, 400, 0), new Vertex(100, 100, 0), "Layer0"));
  InnerLoops.Add(InnerEdges);
}

SketchUpNET.Surface s = new SketchUpNET.Surface(OuterEdges, InnerLoops);
skp.Surfaces.Add(s);

skp.WriteNewModel(@"TempModel.skp");

Requirements

If not installed you might requires Visual C++ Redistributable Packages for Visual Studio https://www.microsoft.com/en-sg/download/details.aspx?id=40784

The library requires the SketchUp C API which is part of the package.

nuget Binaries

SketchUpNET is available as a precompiled binary on nuget: https://www.nuget.org/packages/SketchUpNET/

About

SketchUp C# API - A C++/CLI API Wrapper for the Trimble(R) SketchUp(R) C API

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  
Morty Proxy This is a proxified and sanitized view of the page, visit original site.