Tesserae
Free, open-source dashboard server for e-ink displays. Compose dashboards in a browser, render dithered frames, and push them over MQTT or REST to e-ink panels. Self-hosted, AGPL-3.0, no tracking.
Utilities to use types from Euclid in Rhino3d
Translation pending
Developer toolsF#GitHub @goswinrOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗This package is for using the Euclid geometry library in Rhino3D.
It provides extension members for drawing Euclid geometry in Rhino.
And for converting Rhino geometry to Euclid geometry. And vice versa.
The version number of Euclid.Rhino is aligned with the referenced version of Euclid.
Drawing requires an active document inside Rhino. Use net48 for Rhino 7 or net8.0 for Rhino 8 running .NET 8.
Reference RhinoCommon separately in your project, or use the reference provided by your Rhino scripting host.
After referencing the package Euclid.Rhino in your project or F# script
just open the Euclid namespace:
open Euclid
This will auto-open the modules AutoOpenRhinoTypeExtensions and AutoOpenEuclidExtensions.
You will get access to all the extension methods for Rhino integration.
See goswinr.github.io/Euclid.Rhino for the full documentation. For the main functions you can also look at main.fs .
open Euclid
open Rhino.Geometry
// Rhino → Euclid (via extension properties)
let rhinoPoint = Point3d(1.0, 2.0, 3.0)
let euclidPnt : Pnt = rhinoPoint.Pnt // 3D point
let euclidPt : Pt = rhinoPoint.Pt // 2D point (Z ignored)
let rhinoVec = Vector3d(1.0, 0.0, 0.0)
let euclidVec : Vec = rhinoVec.Vec // 3D vector
let euclidVc : Vc = rhinoVec.Vc // 2D vector (Z ignored)
// Euclid → Rhino (via .Rh* properties)
let pnt = Pnt(1.0, 2.0, 3.0)
let rhPoint : Point3d = pnt.RhPt
let vec = Vec(1.0, 0.0, 0.0)
let rhVec : Vector3d = vec.RhVec
let line = Line3D(Pnt.Origin, Pnt(10.0, 5.0, 0.0))
let rhLine : Line = line.RhLine
open Euclid
// Draw on current layer
let pt = Pnt(5.0, 10.0, 0.0)
pt.Draw()
// Draw on a specific layer (auto-created if missing)
pt.Draw("MyLayer")
// Draw with layer and object name
pt.Draw("MyLayer", "object name xyz")
// Draw with labeled dot
pt.DrawDot("Start")
// Functional style for piping
let points = [Pnt(0,0,0); Pnt(1,0,0); Pnt(1,1,0)]
points |> List.iter (Pnt.draw >> ignore)
// Draw lines and polylines
let ln = Line3D(Pnt.Origin, Pnt(10.0, 10.0, 0.0))
ln.Draw("layer name")
let poly = Polyline3D.createFromPts points
poly |> Polyline3D.draw |> ignore
// Draw a polyline on a specific layer
Debug3D.drawPolyLineLayer(points, "layer name")
see CHANGELOG.md
Just run dotnet build in the root directory.
The core geometry library was originally written by hand. AI tools have also been used for code review, fixes, tests and documentation.