Ejemplo n.º 1
0
 public bool ExecuteCommand()
 {
     if (VoiceController.IsEnabled && VoiceController.RecognizedText != "")
     {
         RhinoApp.SendKeystrokes(VoiceController.RecognizedText, true);
         VoiceController.RecognizedText = "";
     }
     else
     {
         if (this._selectedToolGroup == null)
         {
             return(false);
         }
         for (int index = 0; index < this._selectedToolGroup.Length; ++index)
         {
             if (this._selectedToolGroup[index].IconBound.Contains(RiftViewportConduit.CursorInLeftViewport))
             {
                 RhinoApp.SendKeystrokes(this._selectedToolGroup[index].EnglishName, true);
             }
         }
     }
     this._selectedToolGroup = (RhinoTool[])null;
     this._voiceOn           = true;
     VoiceController.StopVoice();
     return(true);
 }
        public List <Point3d> GetRoadPoints()
        {
            ButtonStateCheck(ButtonState.None);
            RhinoApp.SendKeystrokes("Cancel", true);
            RhinoApp.Wait();
            bool           newPoint  = true;
            List <Point3d> newpoints = new List <Point3d>();
            List <Rhino.DocObjects.PointObject> newpointobjects = new List <Rhino.DocObjects.PointObject>();

            while (newPoint)
            {
                newPoint = RhinoApp.RunScript("Point", false);
                var guid = RhinoDoc.ActiveDoc.Objects.ElementAt(0).Id;

                Rhino.DocObjects.PointObject pointobject = RhinoDoc.ActiveDoc.Objects.Find(guid) as Rhino.DocObjects.PointObject;

                newpointobjects.Add(pointobject);

                Rhino.Geometry.Point point = pointobject.PointGeometry;
                Point3d point3d            = point.Location;
                newpoints.Add(point3d);



                if (!newPoint)
                {
                    var result = MessageBox.Show("Yes = 끝내기  No = 이전 취소  Cancle = 취소", "도로 선택 완료", MessageBoxButton.YesNoCancel);

                    if (result == MessageBoxResult.Cancel)
                    {
                        foreach (var pobj in newpointobjects)
                        {
                            Rhino.RhinoDoc.ActiveDoc.Objects.Delete(pobj, true);
                        }

                        Rhino.RhinoDoc.ActiveDoc.Views.Redraw();
                    }

                    else if (result == MessageBoxResult.No)
                    {
                        var lastguid = RhinoDoc.ActiveDoc.Objects.ElementAt(0).Id;
                        RhinoDoc.ActiveDoc.Objects.Delete(lastguid, true);

                        Rhino.RhinoDoc.ActiveDoc.Views.Redraw();

                        newPoint = true;
                    }
                }

                ////show/hide작업
            }

            return(newpoints);
        }
Ejemplo n.º 3
0
        public static void CreateMiniViewports()
        {
            DisplayModeDescription displayModeDescription = (DisplayModeDescription)null;

            foreach (DisplayModeDescription displayMode in VR_PANEL.DisplayModes)
            {
                if (displayMode.EnglishName == "VrForModeling")
                {
                    displayModeDescription = displayMode;
                }
            }
            for (int index = 0; index < 3; ++index)
            {
                if (Viewports._miniViews[index] == null)
                {
                    Viewports._miniViews[index] = RhinoDocument.ActiveDoc.Views.Find(Viewports._miniViewportTitles[index], false);
                    if (index < 2)
                    {
                        if (Viewports._miniViews[index] == null)
                        {
                            Viewports._miniViews[index] = RhinoDocument.ActiveDoc.Views.Add(Viewports._miniViewportTitles[index], (DefinedViewportProjection)7, new Rectangle(new System.Drawing.Point(Viewports._eyeScreenX + (Viewports._riftHor / 2 - Viewports._miniHor) / 2 + Viewports._riftHor / 2 * index, Viewports._eyeScreenY + (Viewports._riftVer - Viewports._miniVer) / 2), new Size(Viewports._miniHor, Viewports._miniVer)), true);
                        }
                    }
                    else if (Viewports._miniViews[index] == null)
                    {
                        Viewports._miniViews[index] = RhinoDocument.ActiveDoc.Views.Add(Viewports._miniViewportTitles[index], (DefinedViewportProjection)7, new Rectangle(new System.Drawing.Point((Viewports._riftHor / 2 - Viewports._miniHor) / 2, (Viewports._riftVer - Viewports._miniVer) / 2), new Size(Viewports._miniHor, Viewports._miniVer)), true);
                    }
                    Viewports._miniViews[index].TitleVisible = (false);
                    Viewports._miniViews[index].MainViewport.WorldAxesVisible = (true);
                    Viewports._miniViews[index].MainViewport.DisplayMode      = (displayModeDescription);
                    Viewports._miniViewportInfo[index] = new ViewportInfo(Viewports._miniViews[index].MainViewport);
                }
            }
            if (!Viewports._miniViews[2].MainViewport.ZoomExtentsSelected())
            {
                Viewports._miniViews[2].MainViewport.ZoomExtents();
            }
            else
            {
                Viewports._objLocked = true;
                RhinoApp.SendKeystrokes("_invert _lock", true);
            }
        }
Ejemplo n.º 4
0
 public static void CloseMiniViewports()
 {
     for (int index = 0; index < 3; ++index)
     {
         if (Viewports._miniViews[index] != null)
         {
             if (Viewports._miniViews[index].Document != null)
             {
                 Viewports._miniViews[index].Close();
             }
             if (Viewports._objLocked)
             {
                 RhinoApp.SendKeystrokes("unlock", true);
                 Viewports._objLocked = false;
             }
             Viewports._miniViewportInfo[index].Dispose();
             Viewports._miniViewportInfo[index] = (ViewportInfo)null;
             Viewports._miniViews[index]        = (RhinoView)null;
         }
     }
 }
        private void ButtonStateCheck(ButtonState after)
        {
            string before = buttonstate.ToString();
            string afters = after.ToString();

            switch (buttonstate)
            {
            case ButtonState.GetWidth:
            case ButtonState.GetHeight:
                RhinoApp.SendKeystrokes("!Cancel", true);
                buttonstate = after;
                //RhinoApp.WriteLine(before + "에서" + afters);
                break;

            case ButtonState.None:
            default:
                buttonstate = after;
                //RhinoApp.WriteLine(before + "에서" + afters);
                break;
            }
        }
        private void Btn_SetWidth_Click(object sender, RoutedEventArgs e)
        {
            ButtonStateCheck(ButtonState.GetWidth);
            RhinoApp.SendKeystrokes("Cancel", true);

            RhinoApp.Wait();

            UIManager.getInstance().SnapSetter(UIManager.SnapMode.OffAll);



            if (TuringAndCorbusierPlugIn.InstanceClass.plot == null)
            {
                MessageBox.Show("먼저 커브를 선택하세요");

                return;
            }

            if (TuringAndCorbusierPlugIn.InstanceClass.plot.Boundary.ClosedCurveOrientation(Plane.WorldXY) == CurveOrientation.Clockwise)
            {
                TuringAndCorbusierPlugIn.InstanceClass.plot.Boundary.Reverse();
            }

            List <Curve>       inputList       = TuringAndCorbusierPlugIn.InstanceClass.plot.Boundary.DuplicateSegments().ToList();
            List <ConduitLine> tempConduitLine = new List <ConduitLine>();

            if (inputList.Count == TuringAndCorbusierPlugIn.InstanceClass.plot.Surroundings.Length)
            {
                foreach (Curve i in inputList)
                {
                    Rhino.Geometry.Line tempLine            = new Rhino.Geometry.Line(i.PointAt(i.Domain.T0), i.PointAt(i.Domain.T1));
                    ConduitLine         tempTempConduitLine = new ConduitLine(tempLine, TuringAndCorbusierPlugIn.InstanceClass.plot.Surroundings[inputList.IndexOf(i)]);

                    tempConduitLine.Add(tempTempConduitLine);
                }
            }
            else
            {
                TuringAndCorbusierPlugIn.InstanceClass.plot.Surroundings = new int[inputList.Count];

                foreach (Curve i in inputList)
                {
                    Rhino.Geometry.Line tempLine            = new Rhino.Geometry.Line(i.PointAt(i.Domain.T0), i.PointAt(i.Domain.T1));
                    ConduitLine         tempTempConduitLine = new ConduitLine(tempLine);
                    TuringAndCorbusierPlugIn.InstanceClass.plot.Surroundings[inputList.IndexOf(i)] = 4;

                    tempConduitLine.Add(tempTempConduitLine);
                }
            }

            Corbusier.conduitLines.Clear();
            Corbusier.conduitLines = tempConduitLine;

            Corbusier.conduitLineDisplay         = new LinesConduit(Corbusier.conduitLines);
            Corbusier.conduitLineDisplay.Enabled = true;
            RhinoDoc.ActiveDoc.Views.Redraw();

            var gcl = new GetConduitLine(Corbusier.conduitLines);

            RhinoApp.WriteLine("늘리거나 줄일 도로 선택 ( 클릭 = 늘리기 , Ctrl + 클릭 = 줄이기 , Shift + 클릭 = 전체 늘리기 , Shift + Ctrl + 클릭 = 전체 줄이기 , ESC = 마침");

            while (!endWhileLoop)
            {
                gcl.AcceptNothing(true);
                gcl.Get(true);
                RhinoDoc.ActiveDoc.Views.Redraw();

                if (gcl.CommandResult() != Rhino.Commands.Result.Success)
                {
                    break;
                }
            }


            if (TuringAndCorbusierPlugIn.InstanceClass.kdgInfoSet.boundary.ClosedCurveOrientation(Plane.WorldXY) == CurveOrientation.CounterClockwise)
            {
                TuringAndCorbusierPlugIn.InstanceClass.kdgInfoSet.boundary.Reverse();
            }



            Curve[] boundarysegs = TuringAndCorbusierPlugIn.InstanceClass.kdgInfoSet.boundary.DuplicateSegments();


            /////대지경계선후퇴적용
            //for (int i = 0; i < Corbusier.RoadWidth.Count; i++)
            //{

            //    if (Corbusier.RoadWidth[i] < 4 && Corbusier.RoadWidth[i] >= 0)
            //    {

            //        Vector3d curvev = boundarysegs[i].PointAtEnd - boundarysegs[i].PointAtStart;
            //        curvev.Rotate(RhinoMath.ToRadians(-90), Vector3d.ZAxis);
            //        curvev.Unitize();

            //        boundarysegs[i].Translate(curvev * ((Corbusier.RoadWidth[i] - 4) * 500));
            //        boundarysegs[i].Extend(CurveEnd.Both, 1000, CurveExtensionStyle.Line);

            //        LoadManager.getInstance().DrawObjectWithSpecificLayer(boundarysegs[i], LoadManager.NamedLayer.Guide);


            //    }
            //}

            //for (int i = 0; i < boundarysegs.Length; i++)
            //{
            //    int i2 = (i + 1) % boundarysegs.Length;
            //    var intersection = Rhino.Geometry.Intersect.Intersection.CurveCurve(boundarysegs[i], boundarysegs[i2], 0, 0);
            //    foreach (var x in intersection)
            //    {
            //        if (x.ParameterA != 1)
            //            boundarysegs[i] = boundarysegs[i].Split(x.ParameterA)[0];

            //        if (x.ParameterB != 1)
            //            boundarysegs[i2] = boundarysegs[i2].Split(x.ParameterB)[1];
            //    }

            //}


            //List<Curve> tojoin = new List<Curve>();

            //for (int i = 0; i < boundarysegs.Length; i++)
            //{


            //}

            //Curve[] joined = Curve.JoinCurves(boundarysegs);



            //TuringAndCorbusierPlugIn.InstanceClass.kdgInfoSet.setbackBoundary = joined[0];
            //대지경계선후퇴 끝
            //kdginfoset 의 setbackBoundary에 저장.

            //LoadManager.getInstance().DrawObjectWithSpecificLayer(TuringAndCorbusierPlugIn.InstanceClass.kdgInfoSet.setbackBoundary, LoadManager.NamedLayer.Model);

            Corbusier.conduitLineDisplay.Enabled = false;
            TuringAndCorbusierPlugIn.InstanceClass.plot.Surroundings = Corbusier.conduitLines.Select(n => n.RoadWidth * 1000).ToArray();      //    .RoadWidth.Select(n=>n*1000).ToArray();
            TuringAndCorbusierPlugIn.InstanceClass.plot.UpdateSimplifiedSurroundings();
            //TuringAndCorbusierPlugIn.InstanceClass.plot.Adjust();
            UIManager.getInstance().SnapSetter(UIManager.SnapMode.Current);
            ButtonStateCheck(ButtonState.None);
            RhinoDoc.ActiveDoc.Views.Redraw();
        }