private void HandlesReplaceRhinoObject(object sender, RhinoReplaceObjectEventArgs e) { if (!RhinoOutput.Writing) { ModelObject mObj = LinkedModelObject(e.ObjectId); if (mObj != null) { RC.GeometryBase geometry = e.NewRhinoObject.Geometry; if (mObj is Element) { Element element = (Element)mObj; VertexGeometry vG = FromRC.Convert(geometry); if (vG == null && geometry is RC.Curve) { // If curve not convertable, reduce to straight line: RC.Curve rCrv = (RC.Curve)geometry; vG = new Line(FromRC.Convert(rCrv.PointAtStart), FromRC.Convert(rCrv.PointAtEnd)); } if (vG != null) { _Replacing = true; if (element is LinearElement && vG is Curve) { ((LinearElement)element).ReplaceGeometry((Curve)vG); } else if (element is PanelElement && vG is Surface) { ((PanelElement)element).ReplaceGeometry((Surface)vG); } _Replacing = false; _ReplacedElements.TryAdd(element); } } else if (mObj is Node) { _ReplacedNodesWaitingList[(Node)mObj] = e; /*RC.GeometryBase geometry = e.NewRhinoObject.Geometry; * if (geometry is RC.Point) * { * Node node = (Node)mObj; * node.Position = RCtoFB.Convert(((RC.Point)geometry).Location); * }*/ /*if (_ObjectReplacedWaitTimer == null) * { * _ObjectReplacedWaitTimer = new Timer(100); * _ObjectReplacedWaitTimer.AutoReset = false; * _ObjectReplacedWaitTimer.Elapsed += ProcessObjectReplacedWaitingList; * }*/ //if (!_ObjectReplacedWaitTimer.Enabled) } //if (_ObjectReplacedWaitTimer != null) _ObjectReplacedWaitTimer.Start(); } } _LastReplaced = e.ObjectId; }
void ReplaceRhinoObject(object sender, RhinoReplaceObjectEventArgs args) { //if it is not a rigid transformation avoid this transformation if (!rigidTransf) { rigidTransf = true; RhinoDoc.ActiveDoc.Objects.Replace(args.ObjectId, (Brep)args.OldRhinoObject.Geometry); } }
void RhinoDocReplaceRhinoObject(object sender, RhinoReplaceObjectEventArgs e) { ObjectChanged(e.Document, e.NewRhinoObject); }