示例#1
0
        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;
        }
示例#2
0
 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);
     }
 }
示例#3
0
 void RhinoDocReplaceRhinoObject(object sender, RhinoReplaceObjectEventArgs e)
 {
     ObjectChanged(e.Document, e.NewRhinoObject);
 }