protected override Result RunCommand(Rhino.RhinoDoc doc, RunMode mode) { const ObjectType geometryFilter = ObjectType.Mesh; GetObject go = new GetObject(); go.SetCommandPrompt("Select meshes to compute contacts"); go.GeometryFilter = geometryFilter; go.GroupSelect = true; go.SubObjectSelect = false; go.EnableClearObjectsOnEntry(false); go.EnableUnselectObjectsOnExit(false); go.DeselectAllBeforePostSelect = false; GetResult res = go.GetMultiple(1, 0); if (res != GetResult.Object) { return(Result.Cancel); } Rhino.RhinoApp.WriteLine(res.GetType().ToString()) return(Result.Success); }
public static Result MeshVolume(RhinoDoc doc) { var gm = new GetObject(); gm.SetCommandPrompt("Select solid meshes for volume calculation"); gm.GeometryFilter = ObjectType.Mesh; gm.GeometryAttributeFilter = GeometryAttributeFilter.ClosedMesh; gm.SubObjectSelect = false; gm.GroupSelect = true; gm.GetMultiple(1, 0); if (gm.CommandResult() != Result.Success) return gm.CommandResult(); double volume = 0.0; double volume_error = 0.0; foreach (var obj_ref in gm.Objects()) { if (obj_ref.Mesh() != null) { var mass_properties = VolumeMassProperties.Compute(obj_ref.Mesh()); if (mass_properties != null) { volume += mass_properties.Volume; volume_error += mass_properties.VolumeError; } } } RhinoApp.WriteLine("Total volume = {0:f} (+/- {1:f})", volume, volume_error); return Result.Success; }
public static Result MeshVolume(RhinoDoc doc) { var gm = new GetObject(); gm.SetCommandPrompt("Select solid meshes for volume calculation"); gm.GeometryFilter = ObjectType.Mesh; gm.GeometryAttributeFilter = GeometryAttributeFilter.ClosedMesh; gm.SubObjectSelect = false; gm.GroupSelect = true; gm.GetMultiple(1, 0); if (gm.CommandResult() != Result.Success) { return(gm.CommandResult()); } double volume = 0.0; double volume_error = 0.0; foreach (var obj_ref in gm.Objects()) { if (obj_ref.Mesh() != null) { var mass_properties = VolumeMassProperties.Compute(obj_ref.Mesh()); if (mass_properties != null) { volume += mass_properties.Volume; volume_error += mass_properties.VolumeError; } } } RhinoApp.WriteLine("Total volume = {0:f} (+/- {1:f})", volume, volume_error); return(Result.Success); }
public static void LoadLevel(string name) { GetObject.ClearReferences(); Time.timeScale = 1; RPG.LoadLevel(name, false); GameMaster.GamePaused = false; }
protected override Result RunCommand(RhinoDoc doc, RunMode mode) { var go = new GetObject(); go.SetCommandPrompt("Select 2, 3, or 4 open curves"); go.GeometryFilter = ObjectType.Curve; go.GeometryAttributeFilter = GeometryAttributeFilter.OpenCurve; go.GetMultiple(2, 4); if (go.CommandResult() != Result.Success) { return(go.CommandResult()); } var curves = go.Objects().Select(o => o.Curve()); var brep = Brep.CreateEdgeSurface(curves); if (brep != null) { doc.Objects.AddBrep(brep); doc.Views.Redraw(); } return(Result.Success); }
protected override Result RunCommand(RhinoDoc doc, RunMode mode) { // TODO: complete command. RhinoApp.WriteLine("The {0} command is under construction.", EnglishName); GetObject gbrep = new GetObject(); gbrep.SetCommandPrompt("get the brep"); gbrep.GeometryFilter = Rhino.DocObjects.ObjectType.Brep; gbrep.SubObjectSelect = false; gbrep.Get(); if (gbrep.CommandResult() != Rhino.Commands.Result.Success) { return(gbrep.CommandResult()); } Rhino.DocObjects.ObjRef my_objref = gbrep.Object(0); Rhino.DocObjects.RhinoObject my_obj = my_objref.Object(); if (my_obj == null) { return(Rhino.Commands.Result.Failure); } Brep brep = my_objref.Brep(); if (brep == null) { return(Result.Failure); } my_obj.Select(false); RhinoApp.WriteLine("the name of the object is {0}", brep.UserDictionary.GetString("name")); return(Result.Success); }
public static void LoadLevel(int index) { GetObject.ClearReferences(); Time.timeScale = 1; SceneManager.LoadScene(index); GameMaster.GamePaused = false; }
public GH_GetterResult LoadFromSelection(out PointCloud pc) { var go = new GetObject(); go.GeometryFilter = Rhino.DocObjects.ObjectType.Point | Rhino.DocObjects.ObjectType.PointSet; if (go.GetMultiple(1, 0) == Rhino.Input.GetResult.Cancel) { pc = null; return(GH_GetterResult.cancel); } pc = new PointCloud(); for (int i = 0; i < go.ObjectCount; i++) { var obj = go.Object(i); var rhObj = obj.Object(); if (rhObj.ObjectType == ObjectType.Point) { var pt = obj.Point().Location; var col = rhObj.Attributes.ObjectColor; pc.Add(pt, col); } else if (rhObj.ObjectType == ObjectType.PointSet) { using (PointCloud cloud = obj.PointCloud()) { foreach (var item in cloud.AsEnumerable()) { pc.Add(item.Location, item.Normal, item.Color); } } } } return(GH_GetterResult.success); }
/// <summary> /// Add objects to list with a GetObject /// </summary> /// <param name="go">Setup the GetObject, i.e. prompt, geometry filter, allow pre/post select /// before passing it as an argument.</param> /// <param name="allowGrips">Specifically allow grips to be selected. if true, grips must also be included in geometry filter /// of the GetObject in order to be selected.</param> /// <returns>Number of objects selected.</returns> /// <since>6.0</since> public int AddObjects(GetObject go, bool allowGrips) { IntPtr const_ptr_getobj = go.ConstPointer(); IntPtr ptr_this = NonConstPointer(); return(UnsafeNativeMethods.CRhinoXformObjectList_AddObjects(ptr_this, const_ptr_getobj, allowGrips)); }
protected override Result RunCommand(RhinoDoc doc, RunMode mode) { var go = new GetObject(); go.SetCommandPrompt("Select polygon meshes to unweld"); go.GeometryFilter = ObjectType.Mesh; go.GetMultiple(1, 0); if (go.CommandResult() != Result.Success) { return(go.CommandResult()); } foreach (var obj_ref in go.Objects()) { var old_mesh = obj_ref.Mesh(); if (null != old_mesh) { var new_mesh = UnweldMesh(old_mesh); if (null != new_mesh && new_mesh.IsValid) { doc.Objects.Replace(go.Object(0), new_mesh); } } } doc.Views.Redraw(); return(Result.Success); }
protected override Result RunCommand(RhinoDoc doc, RunMode mode) { // TODO: complete command. GetObject gpath = new GetObject(); gpath.SetCommandPrompt("get the pathp"); gpath.GeometryFilter = Rhino.DocObjects.ObjectType.Curve; gpath.SubObjectSelect = false; gpath.Get(); if (gpath.CommandResult() != Rhino.Commands.Result.Success) { return(gpath.CommandResult()); } Rhino.DocObjects.ObjRef my_objref = gpath.Object(0); Rhino.DocObjects.RhinoObject my_obj = my_objref.Object(); if (my_obj == null) { return(Rhino.Commands.Result.Failure); } int path_number = my_obj.Geometry.UserDictionary.Getint("path_number", -1); RhinoApp.WriteLine("the number of the object is {0}", path_number); return(Result.Success); }
protected override Result RunCommand(Rhino.RhinoDoc doc, RunMode mode) { GetObject go = Selection.GetValidExportObjects("Select objects to export."); var dialog = GetSaveFileDialog(); var fileSelected = dialog.ShowSaveDialog(); if (!fileSelected) { return(Result.Cancel); } bool binary = GlTFUtils.IsFileGltfBinary(dialog.FileName); if (!GetExportOptions(mode, out glTFExportOptions opts)) { return(Result.Cancel); } Rhino.DocObjects.RhinoObject[] rhinoObjects = go.Objects().Select(o => o.Object()).ToArray(); if (!DoExport(dialog.FileName, opts, binary, doc, rhinoObjects, doc.RenderSettings.LinearWorkflow)) { return(Result.Failure); } return(Result.Success); }
protected override Result RunCommand(RhinoDoc doc, RunMode mode) { var go = new GetObject(); go.SetCommandPrompt("Select curves to extract min/max radius points"); go.GeometryFilter = ObjectType.Curve; go.GetMultiple(1, 0); if (go.CommandResult() != Result.Success) { return(go.CommandResult()); } for (var i = 0; i < go.ObjectCount; i++) { var curve = go.Object(i).Curve(); if (null != curve) { var points = new List <Point3d>(); if (GetMinMaxRadiusPoints(curve, points)) { doc.Objects.AddPoints(points); } } } doc.Views.Redraw(); return(Result.Success); }
protected override Result RunCommand(RhinoDoc doc, RunMode mode) { var go = new GetObject(); go.SetCommandPrompt("Select mesh"); go.GeometryFilter = ObjectType.Mesh; go.Get(); if (go.CommandResult() != Result.Success) return go.CommandResult(); var mesh = go.Object(0).Mesh(); if (null == mesh) return Result.Failure; var unwelded_count = 0; for (var topei = 0; topei < mesh.TopologyEdges.Count; topei++) { if (IsUweldedMeshEdge(mesh, topei)) { RhinoApp.WriteLine("Edge({0}) is unwelded", topei); unwelded_count++; } } RhinoApp.WriteLine("Unwelded edge count = {0}", unwelded_count); return Result.Success; }
public static Result ProjectPointsToBreps(RhinoDoc doc) { var gs = new GetObject(); gs.SetCommandPrompt("select surface"); gs.GeometryFilter = ObjectType.Surface | ObjectType.PolysrfFilter; gs.DisablePreSelect(); gs.SubObjectSelect = false; gs.Get(); if (gs.CommandResult() != Result.Success) return gs.CommandResult(); var brep = gs.Object(0).Brep(); if (brep == null) return Result.Failure; var points = Intersection.ProjectPointsToBreps( new List<Brep> {brep}, // brep on which to project new List<Point3d> {new Point3d(0, 0, 0), new Point3d(3,0,3), new Point3d(-2,0,-2)}, // some random points to project new Vector3d(0, 1, 0), // project on Y axis doc.ModelAbsoluteTolerance); if (points != null && points.Length > 0) { foreach (var point in points) { doc.Objects.AddPoint(point); } } doc.Views.Redraw(); return Result.Success; }
protected override Result RunCommand(RhinoDoc doc, RunMode mode) { var gm = new GetObject(); gm.SetCommandPrompt("Select open mesh"); gm.GeometryFilter = ObjectType.Mesh; gm.GeometryAttributeFilter = GeometryAttributeFilter.OpenMesh; gm.Get(); if (gm.CommandResult() != Result.Success) { return(gm.CommandResult()); } var mesh = gm.Object(0).Mesh(); if (mesh == null) { return(Result.Failure); } var polylines = mesh.GetNakedEdges(); foreach (var polyline in polylines) { doc.Objects.AddPolyline(polyline); } return(Result.Success); }
public static Result DupMeshBoundary(RhinoDoc doc) { var gm = new GetObject(); gm.SetCommandPrompt("Select open mesh"); gm.GeometryFilter = ObjectType.Mesh; gm.GeometryAttributeFilter = GeometryAttributeFilter.OpenMesh; gm.Get(); if (gm.CommandResult() != Result.Success) { return(gm.CommandResult()); } var mesh = gm.Object(0).Mesh(); if (mesh == null) { return(Result.Failure); } var polylines = mesh.GetNakedEdges(); foreach (var polyline in polylines) { doc.Objects.AddPolyline(polyline); } return(Result.Success); }
public static Result PickPoint(RhinoDoc doc) { // this creates a point where the mouse is clicked. var gp = new GetPoint(); gp.SetCommandPrompt("Click for new point"); gp.Get(); if (gp.CommandResult() != Result.Success) return gp.CommandResult(); var point3d = gp.Point(); doc.Objects.AddPoint(point3d); doc.Views.Redraw(); // selects a point that already exists ObjRef obj_ref; var rc = RhinoGet.GetOneObject("Select point", false, ObjectType.Point, out obj_ref); if (rc != Result.Success) return rc; var point = obj_ref.Point(); RhinoApp.WriteLine("Point: x:{0}, y:{1}, z:{2}", point.Location.X, point.Location.Y, point.Location.Z); doc.Objects.UnselectAll(); // selects multiple points that already exist ObjRef[] obj_refs; rc = RhinoGet.GetMultipleObjects("Select point", false, ObjectType.Point, out obj_refs); if (rc != Result.Success) return rc; foreach (var o_ref in obj_refs) { point = o_ref.Point(); RhinoApp.WriteLine("Point: x:{0}, y:{1}, z:{2}", point.Location.X, point.Location.Y, point.Location.Z); } doc.Objects.UnselectAll(); // also selects a point that already exists. // Used when RhinoGet doesn't provide enough control var go = new GetObject(); go.SetCommandPrompt("Select point"); go.GeometryFilter = ObjectType.Point; go.GetMultiple(1, 0); if (go.CommandResult() != Result.Success) return go.CommandResult(); foreach (var o_ref in go.Objects()) { point = o_ref.Point(); if (point != null) RhinoApp.WriteLine("Point: x:{0}, y:{1}, z:{2}", point.Location.X, point.Location.Y, point.Location.Z); } doc.Views.Redraw(); return Result.Success; }
protected override Result RunCommand(RhinoDoc doc, RunMode mode) { using (var go = new GetObject()) { go.SetCommandPrompt("Please select planer shade surfaces"); go.GeometryFilter = ObjectType.Surface | ObjectType.Brep; go.GroupSelect = false; go.SubObjectSelect = false; go.GetMultiple(1, 0); if (go.CommandResult() != Result.Success) { return(go.CommandResult()); } if (go.Objects().Count() == 0) { return(Result.Failure); } var SelectedObjs = go.Objects(); //prepare BrepObjects var shades = SelectedObjs.ToList(); //add shades to model ConvertToShades(doc, shades); return(Result.Success); } }
protected override Result RunCommand(RhinoDoc doc, RunMode mode) { var go = new GetObject(); go.SetCommandPrompt("Select objects"); go.GroupSelect = true; go.GetMultiple(1, 0); if (go.CommandResult() != Result.Success) { return(go.CommandResult()); } for (var i = 0; i < go.ObjectCount; i++) { var obj_ref = go.Object(i); var obj = obj_ref.Object(); if (null != obj) { var value = obj.Attributes.GetUserString(SampleCsUserStringData.Key); if (!string.IsNullOrEmpty(value)) { RhinoApp.WriteLine(string.Format("<{0}> {1}", SampleCsUserStringData.Key, value)); } } } return(Result.Success); }
public override PanelElementCollection EnterPanelElements(string prompt = "Enter panel elements") { GetObject gO = new GetObject(); gO.SetCustomGeometryFilter(new GetObjectGeometryFilter(FilterHandles)); gO.GeometryFilter = ObjectType.Surface | ObjectType.Mesh; gO.SetCommandPrompt(prompt); if (gO.GetMultiple(1, 0) == GetResult.Cancel) { throw new OperationCanceledException("Operation cancelled by user"); } foreach (ObjRef rObj in gO.Objects()) { var result = new PanelElementCollection(); if (Host.Instance.Handles.Links.ContainsSecond(rObj.ObjectId)) { Guid guid = Host.Instance.Handles.Links.GetFirst(rObj.ObjectId); Element element = Core.Instance.ActiveDocument?.Model?.Elements[guid]; if (element != null && element is PanelElement) { result.Add((PanelElement)element); } } return(result); } return(null); }
protected override Result RunCommand(RhinoDoc doc, RunMode mode) { GetObject go = new GetObject(); go.SetCommandPrompt("Select surfaces, polysurfaces, or meshes"); go.GroupSelect = true; go.SubObjectSelect = false; go.EnableClearObjectsOnEntry(false); go.EnableUnselectObjectsOnExit(false); go.DeselectAllBeforePostSelect = false; bool bHavePreselectedObjects = false; for (; ;) { GetResult res = go.GetMultiple(1, 0); if (res == GetResult.Option) { go.EnablePreSelect(false, true); continue; } else if (res != GetResult.Object) { return(Result.Cancel); } if (go.ObjectsWerePreselected) { bHavePreselectedObjects = true; go.EnablePreSelect(false, true); continue; } break; } BoundingBox box = BoundingBox.Empty; for (int i = 0; i < go.ObjectCount; i++) { RhinoObject rhinoObject = go.Object(i).Object(); if (null != rhinoObject) { box.Union(rhinoObject.Geometry.GetBoundingBox(true)); } rhinoObject.Select(false); } if (box.IsValid) { RFContext.ClippingBox = new Box(box); //RFContext.Clip = true; return(Result.Success); } return(Result.Nothing); }
private bool m_Isdownitemab; //是否在下载AB /// <summary> /// 实时更新下载状态 /// </summary> private void DownLoadListItemAB() { if (m_Isdownitemab) { if (GetObject.GetDownLoadState() == DownLoadState.DOWNLOADING) { if (m_Downloadabitem == null) { return; } m_Downloadabitem.OnABDownloading(); } if (GetObject.GetDownLoadState() == DownLoadState.DOWNLOADCOMPLETE) { if (m_Downloadabitem == null) { return; } m_Downloadabitem.OnABDownloadComplete(); m_Downloadabitem = null; m_Isdownitemab = false; } } }
protected override Result RunCommand(RhinoDoc doc, RunMode mode) { var go = new GetObject(); //GetObject is more general, and allows you to select any type of object. go.GeometryFilter = Rhino.DocObjects.ObjectType.Point; //user can only select points go.GetMultiple(1, 0); if (go.CommandResult() ! = Result.Success) { return(go.CommandResult()); } // if statement above is just a check to tell us what to do if the command is a success/failure var points = new List <Point>(go.ObjectCount); // now we have a list, we just have to save them. Let's use a different type of array using // the System.Collections namespace. The size of the array will be the size of the ObjectCount list. for (var i = 0; i < go.ObjectCount; i++) { var point = go.Object(i).Point(); if (null != point) { } } RhinoApp.WriteLine("The user selected {0} points successfully", points.Count.ToString()); return(Result.Success); }
private UI.FrixelReferenceData MainWindow_ReferenceFromClient(double xSize, double ySize) { // Tell user to select objects from doc var go = new GetObject(); go.SetCommandPrompt("Select a closed curve"); go.GeometryFilter = ObjectType.Curve; go.GeometryAttributeFilter = GeometryAttributeFilter.ClosedCurve; go.Get(); var curves = go.Objects().Select(o => o.Curve()); if (curves.Count() == 0) { return(null); } this._lastReffedCurve = curves.First(); this._xSize = xSize; this._ySize = ySize; this._spine = GetSpine(); if (this._lastReffedCurve != null && this._spine != null) { return(Regenerate()); } else { return(null); } }
protected override Result RunCommand(RhinoDoc doc, RunMode mode) { var go = new GetObject(); go.SetCommandPrompt("Select closed, planar curves for containment test"); go.GeometryFilter = ObjectType.Curve; go.GeometryAttributeFilter = GeometryAttributeFilter.ClosedCurve; go.GetMultiple(2, 2); if (go.CommandResult() != Result.Success) { return(go.CommandResult()); } var plane = go.View().ActiveViewport.ConstructionPlane(); var tol = doc.ModelAbsoluteTolerance; var crvs = new Curve[2]; for (var i = 0; i < 2; i++) { var rh_ref = go.Object(i); var rh_obj = rh_ref.Object(); crvs[i] = rh_ref.Curve(); if (null == rh_obj || null == crvs[i]) { return(Result.Failure); } if (!crvs[i].IsPlanar(tol)) { RhinoApp.WriteLine("Curve is not planar"); rh_obj.Select(true); doc.Views.Redraw(); return(Result.Failure); } } var result = Curve.PlanarClosedCurveRelationship(crvs[0], crvs[1], plane, tol); switch (result) { case RegionContainment.Disjoint: RhinoApp.WriteLine("There is no common area between the two regions."); break; case RegionContainment.MutualIntersection: RhinoApp.WriteLine("The two curves intersect. There is therefore no full containment relationship either way."); break; case RegionContainment.AInsideB: RhinoApp.WriteLine("The region bounded by the first curve is inside of the second curve."); break; case RegionContainment.BInsideA: RhinoApp.WriteLine("The region bounded by the second curve is inside of the second first."); break; } return(Result.Success); }
protected override Result RunCommand(RhinoDoc doc, RunMode mode) { // TODO: start here modifying the behaviour of your command. //Select objects try { GetObject go = new GetObject(); go.EnablePreSelect(true, true); go.EnablePostSelect(true); go.SetCommandPrompt("Super Intersection | Advanced Boolean Intersection:"); go.GetMultiple(1, 0); if (go.ObjectCount > 0) { RhinoApp.RunScript("_BooleanIntersection", true); RhinoApp.RunScript("_SelLast", true); RhinoApp.RunScript("_MergeAllFaces", true); RhinoApp.RunScript("_ShrinkTrimmedSrf", true); } return(Result.Success); } catch { return(Result.Failure); } }
public override NodeCollection EnterNodes(string prompt = "Enter nodes") { GetObject gO = new GetObject(); gO.SetCustomGeometryFilter(new GetObjectGeometryFilter(FilterHandles)); gO.GeometryFilter = ObjectType.Point; gO.SetCommandPrompt(prompt); if (gO.GetMultiple(1, 0) == GetResult.Cancel) { throw new OperationCanceledException("Operation cancelled by user"); } var result = new NodeCollection(); foreach (ObjRef rObj in gO.Objects()) { if (Host.Instance.Handles.Links.ContainsSecond(rObj.ObjectId)) { Guid guid = Host.Instance.Handles.Links.GetFirst(rObj.ObjectId); Node node = Core.Instance.ActiveDocument?.Model?.Nodes[guid]; if (node != null && node is Node) { result.Add(node); } } } return(result); }
public static Result Create(int packId) { var pack = GetObject.GetById <Pack>(packId); if (string.IsNullOrEmpty(pack.Code)) { return(new Result("系统中不包含箱体,ID:" + packId)); } var content = Common.PACK_DETAILS_WEB_SITE_URL.Replace("[pack_code]", pack.Code); var result = Arthur.Core.Coder.QRCoder.Create(content, 5, 4, AppDomain.CurrentDomain.BaseDirectory + "Images\\gmcc_logo_4_qrcode.png", 36); if (result.IsFailed) { return(result); } var bimg = (Bitmap)result.Data; var dirPath = GetSaveQRCodeDirPath(pack.SortResult); if (!Directory.Exists(dirPath)) { Directory.CreateDirectory(dirPath); } return(Arthur.Core.Coder.QRCoder.SaveQRCode(bimg, dirPath + string.Format("\\{0}.png", pack.Code))); }
public override ElementCollection EnterElements(string prompt = "Enter elements") { GetObject gO = new GetObject(); gO.SetCustomGeometryFilter(new GetObjectGeometryFilter(FilterHandles)); //gO.GeometryFilter = ObjectType.Curve; gO.SetCommandPrompt(prompt); if (gO.GetMultiple(1, 0) == GetResult.Cancel) { throw new OperationCanceledException("Operation cancelled by user"); } var result = new ElementCollection(); foreach (ObjRef rObj in gO.Objects()) { if (Host.Instance.Handles.Links.ContainsSecond(rObj.ObjectId)) { Guid guid = Host.Instance.Handles.Links.GetFirst(rObj.ObjectId); ElementTable elementTable = Core.Instance.ActiveDocument?.Model?.Elements; if (elementTable != null && elementTable.Contains(guid)) { Element element = Core.Instance.ActiveDocument?.Model?.Elements[guid]; if (element != null) { result.Add(element); } } } } return(result); }
public static Result DrawMesh(RhinoDoc doc) { var gs = new GetObject(); gs.SetCommandPrompt("select sphere"); gs.GeometryFilter = ObjectType.Surface; gs.DisablePreSelect(); gs.SubObjectSelect = false; gs.Get(); if (gs.CommandResult() != Result.Success) return gs.CommandResult(); Sphere sphere; gs.Object(0).Surface().TryGetSphere(out sphere); if (sphere.IsValid) { var mesh = Mesh.CreateFromSphere(sphere, 10, 10); if (mesh == null) return Result.Failure; var conduit = new DrawBlueMeshConduit(mesh) {Enabled = true}; doc.Views.Redraw(); var in_str = ""; Rhino.Input.RhinoGet.GetString("press <Enter> to continue", true, ref in_str); conduit.Enabled = false; doc.Views.Redraw(); return Result.Success; } else return Result.Failure; }
/// <summary> /// This function selects points /// </summary> /// <param name="message"></param> /// <param name="pointer"></param> public static void XSelectPoints(string message, out Point3dList pointer) { // variables are: // string message // out Point3dList points - the out won't be recognized unless you have Rhino.Collections and the 'out parameters // have to be filled in the function. // don't need a doc because we won't write anything to the document table, only reading. pointer = new Point3dList(); var go = new GetObject(); go.GeometryFilter = Rhino.DocObjects.ObjectType.Point; go.SetCommandPrompt(message); go.GetMultiple(1, 0); if (go.CommandResult() != Result.Success) { return; } for (var i = 0; i < go.ObjectCount; i++) { var point = go.Object(i).Point(); if (null != point) { pointer.Add(point.Location); } } }
/// <summary> /// This function selects breps /// </summary> /// /// public static bool XSelectBreps(string message, out RhinoList <Brep> breps) { breps = new RhinoList <Brep>(); int i; var gc = new GetObject(); gc.SetCommandPrompt("Select some Breps"); gc.EnablePreSelect(true, true); gc.GeometryFilter = Rhino.DocObjects.ObjectType.Brep; gc.GetMultiple(1, 0); //we do our double check to make sure the user selected something if (gc.CommandResult() != Result.Success) { return(false); } for (i = 0; i < gc.ObjectCount; i++) { var brep = gc.Object(i).Brep(); if (null != brep) { breps.Add(brep); } } return(true); }
/// <summary> /// This function selects some curves /// </summary> /// /// public static bool XSelectCurves(string message, out CurveList curves) { curves = new CurveList(); var gc = new GetObject(); gc.SetCommandPrompt(message); gc.GeometryFilter = Rhino.DocObjects.ObjectType.Curve; gc.GetMultiple(1, 0); if (gc.CommandResult() != Result.Success) { return(false); } for (var i = 0; i < gc.ObjectCount; i++) { var curve = gc.Object(i).Curve(); if (null != curve) { curves.Add(curve); } } return(true); }
public static Result FilletCurves(RhinoDoc doc) { var gc1 = new GetObject(); gc1.DisablePreSelect(); gc1.SetCommandPrompt("Select first curve to fillet (close to the end you want to fillet)"); gc1.GeometryFilter = ObjectType.Curve; gc1.GeometryAttributeFilter = GeometryAttributeFilter.OpenCurve; gc1.Get(); if (gc1.CommandResult() != Result.Success) return gc1.CommandResult(); var curve1_obj_ref = gc1.Object(0); var curve1 = curve1_obj_ref.Curve(); if (curve1 == null) return Result.Failure; var curve1_point_near_end = curve1_obj_ref.SelectionPoint(); if (curve1_point_near_end == Point3d.Unset) return Result.Failure; var gc2 = new GetObject(); gc2.DisablePreSelect(); gc2.SetCommandPrompt("Select second curve to fillet (close to the end you want to fillet)"); gc2.GeometryFilter = ObjectType.Curve; gc2.GeometryAttributeFilter = GeometryAttributeFilter.OpenCurve; gc2.Get(); if (gc2.CommandResult() != Result.Success) return gc2.CommandResult(); var curve2_obj_ref = gc2.Object(0); var curve2 = curve2_obj_ref.Curve(); if (curve2 == null) return Result.Failure; var curve2_point_near_end = curve2_obj_ref.SelectionPoint(); if (curve2_point_near_end == Point3d.Unset) return Result.Failure; double radius = 0; var rc = RhinoGet.GetNumber("fillet radius", false, ref radius); if (rc != Result.Success) return rc; var join = false; var trim = true; var arc_extension = true; var fillet_curves = Curve.CreateFilletCurves(curve1, curve1_point_near_end, curve2, curve2_point_near_end, radius, join, trim, arc_extension, doc.ModelAbsoluteTolerance, doc.ModelAngleToleranceDegrees); if (fillet_curves == null /*|| fillet_curves.Length != 3*/) return Result.Failure; foreach(var fillet_curve in fillet_curves) doc.Objects.AddCurve(fillet_curve); doc.Views.Redraw(); return rc; }
public static Result CustomGeometryFilter(RhinoDoc doc) { m_tolerance = doc.ModelAbsoluteTolerance; // only use a custom geometry filter if no simpler filter does the job // only curves var gc = new GetObject(); gc.SetCommandPrompt("select curve"); gc.GeometryFilter = ObjectType.Curve; gc.DisablePreSelect(); gc.SubObjectSelect = false; gc.Get(); if (gc.CommandResult() != Result.Success) return gc.CommandResult(); if (null == gc.Object(0).Curve()) return Result.Failure; Rhino.RhinoApp.WriteLine("curve was selected"); // only closed curves var gcc = new GetObject(); gcc.SetCommandPrompt("select closed curve"); gcc.GeometryFilter = ObjectType.Curve; gcc.GeometryAttributeFilter = GeometryAttributeFilter.ClosedCurve; gcc.DisablePreSelect(); gcc.SubObjectSelect = false; gcc.Get(); if (gcc.CommandResult() != Result.Success) return gcc.CommandResult(); if (null == gcc.Object(0).Curve()) return Result.Failure; Rhino.RhinoApp.WriteLine("closed curve was selected"); // only circles with a radius of 10 var gcc10 = new GetObject(); gcc10.SetCommandPrompt("select circle with radius of 10"); gc.GeometryFilter = ObjectType.Curve; gcc10.SetCustomGeometryFilter(CircleWithRadiusOf10GeometryFilter); // custom geometry filter gcc10.DisablePreSelect(); gcc10.SubObjectSelect = false; gcc10.Get(); if (gcc10.CommandResult() != Result.Success) return gcc10.CommandResult(); if (null == gcc10.Object(0).Curve()) return Result.Failure; RhinoApp.WriteLine("circle with radius of 10 was selected"); return Result.Success; }
public static Result ReadDimensionText(RhinoDoc doc) { var go = new GetObject(); go.SetCommandPrompt("Select annotation"); go.GeometryFilter = ObjectType.Annotation; go.Get(); if (go.CommandResult() != Result.Success) return Result.Failure; var annotation = go.Object(0).Object() as AnnotationObjectBase; if (annotation == null) return Result.Failure; RhinoApp.WriteLine("Annotation text = {0}", annotation.DisplayText); return Result.Success; }
public static Result CurveSurfaceIntersect(RhinoDoc doc) { var gs = new GetObject(); gs.SetCommandPrompt("select brep"); gs.GeometryFilter = ObjectType.Brep; gs.DisablePreSelect(); gs.SubObjectSelect = false; gs.Get(); if (gs.CommandResult() != Result.Success) return gs.CommandResult(); var brep = gs.Object(0).Brep(); var gc = new GetObject(); gc.SetCommandPrompt("select curve"); gc.GeometryFilter = ObjectType.Curve; gc.DisablePreSelect(); gc.SubObjectSelect = false; gc.Get(); if (gc.CommandResult() != Result.Success) return gc.CommandResult(); var curve = gc.Object(0).Curve(); if (brep == null || curve == null) return Result.Failure; var tolerance = doc.ModelAbsoluteTolerance; Point3d[] intersection_points; Curve[] overlap_curves; if (!Intersection.CurveBrep(curve, brep, tolerance, out overlap_curves, out intersection_points)) { RhinoApp.WriteLine("curve brep intersection failed"); return Result.Nothing; } foreach (var overlap_curve in overlap_curves) doc.Objects.AddCurve(overlap_curve); foreach (var intersection_point in intersection_points) doc.Objects.AddPoint(intersection_point); RhinoApp.WriteLine("{0} overlap curves, and {1} intersection points", overlap_curves.Length, intersection_points.Length); doc.Views.Redraw(); return Result.Success; }
public static Result FurthestZOnSurfaceGivenXY(RhinoDoc doc) { #region user input // select a surface var gs = new GetObject(); gs.SetCommandPrompt("select surface"); gs.GeometryFilter = ObjectType.Surface; gs.DisablePreSelect(); gs.SubObjectSelect = false; gs.Get(); if (gs.CommandResult() != Result.Success) return gs.CommandResult(); // get the brep var brep = gs.Object(0).Brep(); if (brep == null) return Result.Failure; // get X and Y double x = 0.0, y = 0.0; var rc = RhinoGet.GetNumber("value of X coordinate", true, ref x); if (rc != Result.Success) return rc; rc = RhinoGet.GetNumber("value of Y coordinate", true, ref y); if (rc != Result.Success) return rc; #endregion // an earlier version of this sample used a curve-brep intersection to find Z //var maxZ = maxZIntersectionMethod(brep, x, y, doc.ModelAbsoluteTolerance); // projecting points is another way to find Z var max_z = MaxZProjectionMethod(brep, x, y, doc.ModelAbsoluteTolerance); if (max_z != null) { RhinoApp.WriteLine("Maximum surface Z coordinate at X={0}, Y={1} is {2}", x, y, max_z); doc.Objects.AddPoint(new Point3d(x, y, max_z.Value)); doc.Views.Redraw(); } else RhinoApp.WriteLine("no maximum surface Z coordinate at X={0}, Y={1} found.", x, y); return Result.Success; }
public static Result ExtendCurve(RhinoDoc doc) { ObjRef[] boundary_obj_refs; var rc = RhinoGet.GetMultipleObjects("Select boundary objects", false, ObjectType.AnyObject, out boundary_obj_refs); if (rc != Result.Success) return rc; if (boundary_obj_refs == null || boundary_obj_refs.Length == 0) return Result.Nothing; var gc = new GetObject(); gc.SetCommandPrompt("Select curve to extend"); gc.GeometryFilter = ObjectType.Curve; gc.GeometryAttributeFilter = GeometryAttributeFilter.OpenCurve; gc.DisablePreSelect (); gc.Get(); if (gc.CommandResult() != Result.Success) return gc.CommandResult(); var curve_obj_ref = gc.Object(0); var curve = curve_obj_ref.Curve(); if (curve == null) return Result.Failure; double t; if (!curve.ClosestPoint(curve_obj_ref.SelectionPoint(), out t)) return Result.Failure; var curve_end = t <= curve.Domain.Mid ? CurveEnd.Start : CurveEnd.End; var geometry = boundary_obj_refs.Select(obj=> obj.Geometry()); var extended_curve = curve.Extend(curve_end, CurveExtensionStyle.Line, geometry); if (extended_curve != null && extended_curve.IsValid) { if (!doc.Objects.Replace(curve_obj_ref.ObjectId, extended_curve)) return Result.Failure; doc.Views.Redraw(); } else { RhinoApp.WriteLine("No boundary object was intersected so curve not extended"); return Result.Nothing; } return Result.Success; }
public static Result Loft(RhinoDoc doc) { // select curves to loft var gs = new GetObject(); gs.SetCommandPrompt("select curves to loft"); gs.GeometryFilter = ObjectType.Curve; gs.DisablePreSelect(); gs.SubObjectSelect = false; gs.GetMultiple(2, 0); if (gs.CommandResult() != Result.Success) return gs.CommandResult(); var curves = gs.Objects().Select(obj => obj.Curve()).ToList(); var breps = Brep.CreateFromLoft(curves, Point3d.Unset, Point3d.Unset, LoftType.Tight, false); foreach (var brep in breps) doc.Objects.AddBrep(brep); doc.Views.Redraw(); return Result.Success; }
public static Result DetermineNormalDirectionOfBrepFace(RhinoDoc doc) { // select a surface var gs = new GetObject(); gs.SetCommandPrompt("select surface"); gs.GeometryFilter = ObjectType.Surface; gs.DisablePreSelect(); gs.SubObjectSelect = false; gs.Get(); if (gs.CommandResult() != Result.Success) return gs.CommandResult(); // get the selected face var face = gs.Object(0).Face(); if (face == null) return Result.Failure; // pick a point on the surface. Constain // picking to the face. var gp = new GetPoint(); gp.SetCommandPrompt("select point on surface"); gp.Constrain(face, false); gp.Get(); if (gp.CommandResult() != Result.Success) return gp.CommandResult(); // get the parameters of the point on the // surface that is clesest to gp.Point() double u, v; if (face.ClosestPoint(gp.Point(), out u, out v)) { var direction = face.NormalAt(u, v); if (face.OrientationIsReversed) direction.Reverse(); RhinoApp.WriteLine( string.Format( "Surface normal at uv({0:f},{1:f}) = ({2:f},{3:f},{4:f})", u, v, direction.X, direction.Y, direction.Z)); } return Result.Success; }
public static Result EdgeSrf(RhinoDoc doc) { var go = new GetObject(); go.SetCommandPrompt("Select 2, 3, or 4 open curves"); go.GeometryFilter = ObjectType.Curve; go.GeometryAttributeFilter = GeometryAttributeFilter.OpenCurve; go.GetMultiple(2, 4); if (go.CommandResult() != Result.Success) return go.CommandResult(); var curves = go.Objects().Select(o => o.Curve()); var brep = Brep.CreateEdgeSurface(curves); if (brep != null) { doc.Objects.AddBrep(brep); doc.Views.Redraw(); } return Result.Success; }
public GetObjectResponse GetObject(GetObjectRequest request) { EnsureAbsoluteUri(request); var command = new GetObject(_userId, _secret, _builder, _authenticator) { Parameters = request }; return (GetObjectResponse)((ICommandExecutor) this).Execute(command); }
private void getJsonItems(string filename) { URLLookup uRLLookupChoreo = new URLLookup(session); // Set inputs uRLLookupChoreo.setAccessToken(accessToken); uRLLookupChoreo.setIDs(pageURL); // Execute Choreo URLLookupResultSet uRLLookupResults = uRLLookupChoreo.execute(); // Print results //Console.WriteLine(uRLLookupResults.Response); string s_lookup = uRLLookupResults.Response; JObject json_lookup = JObject.Parse(s_lookup); string page_id = (string)json_lookup[pageURL]["id"]; Console.WriteLine("page ID = " + page_id); GetObject getObjectChoreo = new GetObject(session); // Set inputs getObjectChoreo.setAccessToken(accessToken); getObjectChoreo.setFields("insights"); getObjectChoreo.setObjectID(page_id); // Execute Choreo GetObjectResultSet getObjectResults = getObjectChoreo.execute(); string search_it = getObjectResults.Response; JObject j_search_it = JObject.Parse(search_it); System.IO.StreamWriter file = new System.IO.StreamWriter(filename); int i = 0; string name_token = (string)j_search_it["insights"]["data"][0]["name"]; while (name_token != null) { file.WriteLine("name: " + (string)j_search_it["insights"]["data"][i]["name"]); file.WriteLine("title: " + (string)j_search_it["insights"]["data"][i]["title"]); file.WriteLine("description: " + (string)j_search_it["insights"]["data"][i]["description"]); file.WriteLine(""); i++; try { name_token = (string)j_search_it["insights"]["data"][i]["name"]; } catch { name_token = null; } } file.Close(); }