WPF - XDL Tutorial

XDL PlanetView È°¿ë ¼¼¹ø°

(piXoneer XDL Tutorial)

 

 

 

 

 

 

Pixoneer.NXDL.NSCENEÀÇ ´Ù¾çÇÑ scene °´Ã¼¸¦ »ý¼º/ÆíÁý µîÀ» ¾Ë¾Æº¸°í, NXPlanetLayerSceneEditor¿Í NXPlanetLayerSceneDisplay ·¹À̾ ÀÌ¿ëÇÏ¿©

Planet 2D/3D ȯ°æ¿¡¼­ scene °´Ã¼¸¦ ´Ù·ç´Â ¹æ¹ýÀ» ±¸ÇöÇØ º¸µµ·Ï ÇÕ´Ï´Ù

 

 2019. 04.

 

 

¸ñÂ÷

XDL PlanetView È°¿ë ¼¼¹ø°... 1

1    »ç¿ëÇϱâ... 3

1.1    XDL ¿£Áø... 3

2    NXPlanetView¸¦ ÀÌ¿ëÇÑ ¿¹Á¦ ÇÁ·Î±×·¥ ¸¸µé±â... 3

2.1    ±âº» ÇÁ·Î±×·¥ ÀÛ¼º... 3

2.2    ÇÁ·Î±×·¥ µðÀÚÀÎ... 5

2.3    ±â´É ¹× À̺¥Æ® Ãß°¡... 8

 

 

 

 

1     »ç¿ëÇϱâ

 

1.1    XDL ¿£Áø

¼³Ä¡ ÇÁ·Î±×·¥À¸·Î ¹èÆ÷µÇ´Â XDL ¿£ÁøÀº Visual Studio 2010 x86 Release ¹öÀüÀ¸·Î, Visual Studio 2010 ÀÌ»óÀÇ ¹öÀü¿¡¼­ »ç¿ë °¡´ÉÇÏ´Ù.

¾Æ·¡ÀÇ ¼³¸íÀº Visual Studio 2015¸¦ ±âÁØÀ¸·Î ÇÏ°Ú´Ù.

2     NXPlanetView¸¦ ÀÌ¿ëÇÑ ¿¹Á¦ ÇÁ·Î±×·¥ ¸¸µé±â

l  º» ¿¹Á¦ ÇÁ·Î±×·¥Àº Pixoneer.NXDL.NSCENEÀÇ Scene °´Ã¼ »ý¼º ¹× ÆíÁý µîÀ» ¾Ë¾Æº¸°í PlanetView¿¡¼­ÀÇ scene °´Ã¼¸¦ ´Ù·ç´Â NXPlanetLayerSceneDisplay¿Í NXPlanetLayerSceneEditor¸¦ »ìÆ캸µµ·Ï ÇÑ´Ù. PlanetView2D¿¡ NXPlanetLayerSceneEditor¸¦ Ãß°¡ÇÏ°í, PlanetView3D¿¡ NXPlanetLayerSceneDisplay¸¦ Ãß°¡ÇÑ µÚ, PlanetView2D¿¡¼­ Scene °´Ã¼¸¦ Ãß°¡ÇÏ°í ÆíÁýÇÑ µÚ ÆÄÀÏ·Î ÀúÀåÇÏ°í, À̸¦ PlanetView3D¿¡ ·ÎµùÇÏ¿© µµ½ÃÇÏ´Â ±â´ÉÀ» ±¸ÇöÇϵµ·Ï ÇÑ´Ù.

l  NXPlanetLayerSceneEditor´Â PlanetViewÀÇ 2D ¸ðµå¿¡¼­¸¸ »ç¿ë °¡´ÉÇÏ´Ù.

2.1    ±âº» ÇÁ·Î±×·¥ ÀÛ¼º

2.1.1     Visual Studio 2015À» ÀÌ¿ëÇÏ¿© ¿¹Á¦ ¡°XDL_PlanetView2¡±ÀÇ ¡°±âº» ÇÁ·Î±×·¥ ÀÛ¼º¡± ¹æ¹ýÀ» Âü°í·Î ±âº» ÇÁ·ÎÁ§Æ®¸¦ »ý¼ºÇÑ´Ù.

ÇÁ·ÎÁ§Æ® À̸§Àº ¡°XDL_PlanetView3¡±·Î ÇÑ´Ù.

 

2.1.2     Pixoneer.NXDL.NCC¿Í Pixoneer.NXDL.NCENEÀ» ÀÌ¿ëÇϱâ À§Çؼ­ ¡°NXDLcc.dll¡±, ¡°NXDLscene.dll¡±À» ÇÁ·ÎÁ§Æ®ÀÇ ÂüÁ¶·Î Ãß°¡ÇÑ´Ù.

 

 

2.1.3     Scene °´Ã¼ Ãß°¡/ÆíÁý µî scene °´Ã¼¸¦ ´Ù·ç±â À§Çؼ­ ½ÇÇàÆú´õ¿¡ CC Driver¸¦ º¹»çÇÑ´Ù.

º» ¿¹Á¦ ÇÁ·Î±×·¥Àº XScene °´Ã¼ÀÇ ÁÂÇ¥°è Á¤º¸°¡ ÀÖ´Â XSpatialReference¸¦ ÀÌ¿ëÇϱ⠶§¹®¿¡ À̸¦ À§ÇØ CCDrivers Æú´õ¸¦ ½ÇÇàÆú´õ¿¡ º¹»çÇØ ÁÖ¾î¾ß ÇÑ´Ù.

XDL ¶óÀ̺귯¸®°¡ ¼³Ä¡µÈ °æ·Î(c:\Pixoneer\XDL1.2\bin)·Î À̵¿ÇÏ¿© ¡°CCDrivers¡± Æú´õ¸¦ º¹»çÇÏ¿© º» ¿¹Á¦ ÇÁ·Î±×·¥ÀÇ ½ÇÇà Æú´õ(.\XDL_PlanetView3\bin\Debug\)¿¡ º¹»çÇÏ¿© ³Ö´Â´Ù.

 

 

2.2    ÇÁ·Î±×·¥ µðÀÚÀÎ

 

 

Number

Name

Control type

¨ç

toolBar

ToolBar

¨è

gridSplitter1

GridSplitter

¨é

nxPlanetView2D

NXPlanetView

¨ê

nxPlanetView3D

NXPlanetView

 

2.2.1     MainWindow.xaml â¿¡¼­ ±âº»À¸·Î »ý¼ºµÈ Grid ·¹À̾ƿô¿¡ Grid.RowDefinitionÀ» ÀÌ¿ëÇÏ¿© Grid¸¦ µÎ °³·Î ³ª´©¾î »ý¼ºÇÑ´Ù. ù ¹ø° Grid¿¡ Toolbar¸¦ ¹èÄ¡ÇÏ°í µµ±¸»óÀÚÀÇ Button ControlÀ» »ç¿ëÇÏ¿© ¸Þ´º¸¦ ±¸¼ºÇÑ´Ù.

º» ¿¹Á¦ ÇÁ·Î±×·¥ÀÇ ToolBar ±¸¼ºÀº ¾Æ·¡¿Í °°´Ù.

 

Control type

Name

Header

Function

Button

pointToolBarButton

Point

Á¡ °´Ã¼ Ãß°¡

Button

polylineToolBarButton

Polyline

Æú¸®¶óÀÎ °´Ã¼ Ãß°¡

Button

polygonToolBarButton

Polygon

Æú¸®°ï °´Ã¼ Ãß°¡

Button

circleToolBarButton

Circle

¿ø °´Ã¼ Ãß°¡

Button

symbolToolBarButton

Symbol

½Éº¼ °´Ã¼ Ãß°¡

Button

saveToFileToolBarButton

Save to File

Ãß°¡µÈ °´Ã¼¸¦ ÆÄÀÏ·Î ÀúÀå

Button

loadFileToolBarButton

Load into 3D View

ÆÄÀÏÀ» ÀÐ¾î °´Ã¼¸¦ Planet 3D ºä¿¡ µµ½Ã

 

2.3    ±â´É ¹× À̺¥Æ® Ãß°¡

2.3.1     MainWindow.xaml.cs.¿¡ lanetSceneDisplay nxSceneLayerDisplay, NXPlanetSceneEditor nxSceneLayerEditor¸¦ Ãß°¡ÇÏ°í MainWindow »ý¼ºÀÚ¿¡¼­ ÃʱâÈ­ÇÑ´Ù.

µÎ ¸â¹ö º¯¼ö´Â MainWindow.xaml.cs¿¡ Ãß°¡Çϵµ·Ï ÇÏ°Ú´Ù. ÄÚµå´Â ¾Æ·¡¿Í °°´Ù.

 

// MainWindow.xaml.cs

public partial class MainWindow : Window
{
  private Pixoneer.NXDL.NSCENE.NXPlanetLayerSceneEditor nxSceneLayerEditor;
private Pixoneer.NXDL.NSCENE.NXPlanetLayerSceneDisplay nxSceneLayerDisplay;

¡¦

 

// MainWindow.xaml.cs

using Pixoneer.NXDL;
using Pixoneer.NXDL.NSCENE;


namespace XDL_PlanetView3
{
    
 public partial class MainWindow : Window
{
  private Pixoneer.NXDL.NSCENE.NXPlanetLayerSceneEditor nxSceneLayerEditor;
  private Pixoneer.NXDL.NSCENE.NXPlanetLayerSceneDisplay nxSceneLayerDisplay;

     public MainWindow()
     {
        InitializeComponent();

        nxSceneLayerDisplay = new NXPlanetLayerSceneDisplay();
        nxSceneLayerEditor = new NXPlanetLayerSceneEditor();

¡¦

2.3.2     WindowÀÇ Loaded À̺¥Æ® ÇÔ¼ö¿¡¼­ nxSceneLayerEditor°ú nxPlanetView2D¸¦ Ãß°¡ÇÑ´Ù. À̾ nxSceneLayerDisplay¿Í nxPlanetView3D¿¡ °¢°¢ Ãß°¡ÇÏ°í Ä«¸Þ¶ó¸¦ ¼³Á¤ÇÑ´Ù. º» ¿¹Á¦¿¡¼­´Â nxPlanetView2DÀÇ RotatableÀº false·Î, ShowGridµµ false·Î ¼³Á¤ÇÑ´Ù.

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    nxSceneLayerEditor.AttachTo(nxPlanetView2D);
    nxSceneLayerDisplay.AttachTo(nxPlanetView3D);

    XGeoPoint gpEye = XGeoPoint.FromDegree(127.4, 38.0, 1500000);
    // Planet2D ¸ðµåÀÇ camera À§Ä¡ ¼³Á¤
    nxPlanetView2D.SetCameraPosition(gpEye, XAngle.FromDegree(0.0));
    // Planet3D ¸ðµåÀÇ camera À§Ä¡ ¼³Á¤
    nxPlanetView3D.SetCameraPosition(gpEye, XAngle.FromDegree(0.0),
 XAngle.FromDegree(-90.0), XAngle.FromDegree(0.0));

    nxPlanetView2D.Rotatable = false;
    nxPlanetView2D.ShowGrid = false;

    nxPlanetView2D.RefreshScreen();
    nxPlanetView3D.RefreshScreen();
}

2.3.3     WindowÀÇ Closed À̺¥Æ®(Window_Closed) ÇÔ¼ö¸¦ »ý¼ºÇÏ¿© scene °´Ã¼ ¸Þ¸ð¸® ÇØÁö¸¦ À§ÇØ Äڵ带 Ãß°¡ÇÑ´Ù.

 

 

private void Window_Closed(object sender, EventArgs e)
{
      Xfn.Close();
}

 

2.3.4     Scene °´Ã¼¸¦ Ãß°¡Çϱâ À§Çؼ­ [Point], [Polyline], [Polygon], [Circle], [Symbol] ¹öÆ°À» °¢°¢ ¼±ÅÃÇÑ µÚ [¼Ó¼º]â¿¡¼­ ´õºí Ŭ¸¯ÇÏ¿© Click À̺¥Æ® ÇÔ¼ö¸¦ Ãß°¡ÇÑ´Ù.

[Point]ÀÇ °æ¿ì ¾Æ·¡ ±×¸²°ú °°ÀÌ pointToolBarButton_Click ÇÔ¼ö°¡ Ãß°¡µÈ´Ù.

 

 

2.3.5     Scene °´Ã¼ Ãß°¡ À̺¥Æ® ÇÔ¼ö¿¡ nxSceneLayerEditor¿¡ »õ·Î¿î scene °´Ã¼¸¦ »ý¼ºÇϵµ·Ï ¿äûÇÏ´Â Äڵ带 ±¸ÇöÇÑ´Ù.

NXPlanetLayerSceneEditorÀÇ CreateNewOBJ¸¦ ÅëÇØ ¸Å°³º¯¼ö¿¡ µû¸¥ scene °´Ã¼¸¦ »ý¼ºÇÏ¿© Ãß°¡ ¹× ÆíÁý °úÁ¤À» ÁøÇàÇÑ´Ù. CreatNewOBJ¿¡ ÀԷ°ªÀº scene °´Ã¼ÀÇ Å¬·¡½º À̸§ÀÌ´Ù. [Point], [Polyline], [Polygon], [Circle], [Symbol]ÀÇ °´Ã¼ Ãß°¡ ÄÚµå´Â ¾Æ·¡¿Í °°´Ù.

 

private void pointToolBarButton_Click(object sender, RoutedEventArgs e)
{
       nxSceneLayerEditor.CreateNewOBJ("XscPoint");
}

private void polylineToolBarButton_Click(object sender, RoutedEventArgs e)
{
       nxSceneLayerEditor.CreateNewOBJ("XscPolyLine");
}

private void polygonToolBarButton_Click(object sender, RoutedEventArgs e)
{
       nxSceneLayerEditor.CreateNewOBJ("XscPolygon");
}

private void circleToolBarButton_Click(object sender, RoutedEventArgs e)
{
       nxSceneLayerEditor.CreateNewOBJ("XscCircle");
}

private void symbolToolBarButon_Click(object sender, RoutedEventArgs e)
{
       nxSceneLayerEditor.CreateNewOBJ("XscSymbol");
}

 

2.3.6     ¼Ö·ç¼ÇÀ» ºôµåÇÏ°í ½ÇÇàÇÑ´Ù.

[Polyline]À» ¼±ÅÃÇÑ ÈÄ ÇÁ·Î±×·¥ÀÇ 2D PlanetView¿¡¼­ ¸¶¿ì½º ¿ÞÂÊ ¹öÆ°À» Ŭ¸¯ÇÏ°í ¸¶¿ì½º¸¦ ¿òÁ÷ÀÌ¸é »ý¼ºµÈ ¡°Polyline¡±À» È®ÀÎÇÒ ¼ö ÀÖÀ¸¸ç 2Á¡ ÀÌ»óÀÌ µÇ¸é ¡°No named XscPolyLine¡± À̶ó´Â À̸§°ú ÇÔ²² µµ½ÃµÇ´Â °ÍÀ» º¼ ¼ö ÀÖ´Ù.

 

 

Á¤Á¡À» Ãß°¡ÇÏ´Â °ÍÀº ¸¶¿ì½º ¿ÞÂÊ ¹öÆ°À» Ŭ¸¯ÇÏ¸é µÇ°í, »ý¼º ÀÛ¾÷À» Á¾·áÇÏ·Á¸é ¸¶¿ì½º ¿ÞÂÊ ¹öÆ°À» ´õºí Ŭ¸¯ÇÏ¸é µÈ´Ù. »ý¼ºÀÛ¾÷À» Á¾·áÇÏ¸é ¾Æ·¡¿Í °°ÀÌ °´Ã¼ÀÇ Á¤Á¡ À§Ä¡ Á¶Á¤, Å©±â Á¶Á¤À» ÇÒ ¼ö ÀÖ´Â ÄÁÆ®·ÑµéÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù.

 

 

°¢ °´Ã¼´Â ±âº» µµ½Ã ¼Ó¼ºÁ¤º¸¸¦ ÀÌ¿ëÇÏ¿© »ý¼ºµÈ´Ù. SymbolÀÇ °æ¿ì, À» ±âº»°ªÀ¸·Î ÇÏ¿© »ý¼ºµÈ´Ù.

2.3.7     nxSceneLayerEditor¿¡ OnObjectCreated À̺¥Æ®¸¦ Ãß°¡ÇÏ¿© XDL ¿£Áø ³»ºÎ¿¡¼­ °´Ã¼ »ý¼º ¿Ï·á ½ÃÁ¡¿¡ °¢ °´Ã¼¿¡ ´ëÇÑ µµ½Ã ¼Ó¼ºÀ» º¯°æÇØ º»´Ù.

nxSceneLayerEditor »ý¼ºÀÚ ´ÙÀ½¿¡ ¾Æ·¡¿Í °°ÀÌ OnObjectCreated À̺¥Æ®¸¦ Ãß°¡ÇÑ´Ù.

 

namespace XDL_PlanetView3
{
 public partial class MainWindow : Window
 {
  private Pixoneer.NXDL.NSCENE.NXPlanetLayerSceneEditor nxSceneLayerEditor;
  private Pixoneer.NXDL.NSCENE.NXPlanetLayerSceneDisplay nxSceneLayerDisplay;

    public MainWindow()
    {
         InitializeComponent();

         nxSceneLayerDisplay = new NXPlanetLayerSceneDisplay();
         nxSceneLayerEditor = new NXPlanetLayerSceneEditor();
         nxSceneLayerEditor.OnObjectCreated += new
NXSCEditEvent(nxSceneLayerEditor_OnObjectCreated);
    }
¡¦

 

nxSceneLayerEditor_OnObjectCreated ÇÔ¼ö¿¡ ¾Æ·¡¿Í °°ÀÌ µµ½Ã ¼Ó¼º Äڵ带 Ãß°¡ÇÑ´Ù.

bool nxSceneLayerEditor_OnObjectCreated(XscObj pObj)
{
       if (pObj == null) return false;

       // Scene °´Ã¼ÀÇ Å¬·¡½º À̸§ °¡Á®¿À±â
       string typeName = pObj.GetTypeName();
       if (typeName == "XscPoint")
       {
            XscPoint objPoint = (XscPoint)pObj;
            objPoint.LineColor = System.Drawing.Color.Yellow;
            // PointÀÇ Å©±â
            objPoint.LineWidth = 10;
            // PointTypeÀ¸·Î´Â Cross, Dot, Triangle, Rect, X°¡ ÀÖ´Ù.
            objPoint.PointType = XscPoint.ePointType.Rect;
            objPoint.Name = "Point #" + objPoint.ObjID.ToString();
        }
        else if (typeName == "XscPolyLine")
        {
            XscPolyLine objPolyLine = (XscPolyLine)pObj;
            objPolyLine.LineColor = System.Drawing.Color.LightGreen;
            objPolyLine.LinePattern = XscLinePattern.eLinePatternType.DashDot;
            objPolyLine.LineWidth = 3;
            objPolyLine.Name = "Polyline #" + objPolyLine.ObjID.ToString();
        }
        else if (typeName == "XscPolygon")
        {
           XscPolygon objPolygon = (XscPolygon)pObj;
           objPolygon.BorderColor = System.Drawing.Color.Blue;
           objPolygon.BorderSize = 3;
           objPolygon.LinePattern = XscLinePattern.eLinePatternType.DashDotDot;
           objPolygon.FillColor = System.Drawing.Color.Cyan;
           // FillPatternÀÌ Solid°¡ ¾Æ´Ñ °æ¿ì¿¡´Â ¹è°æ»öÀÌ Åõ¸íÇÏ°Ô Ã³¸®µÈ´Ù.
           objPolygon.FillPattern = XscFillPattern.eFillPatternType.Cross;
           objPolygon.Name = "Polygon #" + objPolygon.ObjID.ToString();
         }
         else if (typeName == "XscCircle")
         {
            XscCircle objCircle = (XscCircle)pObj;
            objCircle.LineColor = System.Drawing.Color.Coral;
            objCircle.LineWidth = 2;
            objCircle.FillColor = System.Drawing.Color.GreenYellow;
            objCircle.FillPattern = XscFillPattern.eFillPatternType.Vertical;
            objCircle.Name = "Circle #" + objCircle.ObjID.ToString();
         }
         else if (typeName == "XscSymbol")
         {
            XscSymbol objSymbol = (XscSymbol)pObj;
           // DefaultSymbolNameÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀº Apartment, Image, Model,
// Public, Stadium, TextChart°¡ ÀÖ´Ù.
           // ÀÌ´Â XDL ¿£Áø ¼³Ä¡ Æú´õ Áß Resource\Scenes\Icons¿¡ ÀúÀåµÇ¾î ÀÖ´Ù.
           // »ç¿ëÀÚ Á¤ÀÇÀÇ ½Éº¼À» ·ÎµùÇÏ°íÀÚ ÇÑ´Ù¸é, DefaultSymbolName ´ë½Å 
// UserSymbolPath ¼Ó¼ºÀ¸·Î °æ·Î¸¦ ¼³Á¤ÇÑ´Ù.
           objSymbol.DefaultSymbolName = "Apartment";
           objSymbol.UpdateSymbol();
           objSymbol.Name = "Symbol #" + objSymbol.ObjID.ToString();
          }
           nxPlanetView2D.RefreshScreen();

           return default(bool);

}

 

 

2.3.8      nxPlanetView2D¿¡ »ý¼ºÇÑ scene °´Ã¼¸¦ ÆÄÀÏ·Î ÀúÀåÇϱâ À§ÇØ [Save To File] ¹öÆ°À» ¼±ÅÃÇÑ µÚ [¼Ó¼º]â¿¡¼­ ´õºí Ŭ¸¯ÇÏ¿© À̺¥Æ®ÇÔ¼ö¸¦ Ãß°¡ÇÏ°í Äڵ带 ±¸ÇöÇÑ´Ù.

¸¶¿ì½º·Î ´õºí Ŭ¸¯ÇÏ¸é ¡°Click¡±¿¡ ´ëÇÑ À̺¥Æ® ÇÔ¼ö°¡ ÀÚµ¿ Ãß°¡µÈ´Ù.

 

 

nxSceneEditorÀÇ XScene °´Ã¼¸¦ ¾ò¾î ÆÄÀÏ·Î ÀúÀåÇÑ´Ù. XDL ¿£ÁøÀÇ Scene ÆÄÀÏÀº SMLÀ» È®ÀåÀÚ·Î ÇÏ´Â XML ÆÄÀÏÀÌ´Ù. ÄÚµå´Â ¾Æ·¡¿Í °°´Ù.

 

private void saveToFileToolBarButton_Click(object sender, RoutedEventArgs e)
{
       // »ý¼ºÇÑ scene °´Ã¼¸¦ °¡Áö°í ÀÖ´Â ÃÖ»óÀ§ XScene °´Ã¼¸¦ ¾ò¾î¿Â´Ù.
       XScene sceneRoot = nxSceneLayerEditor.GetScene();
       if (sceneRoot == null) return;

       // ÀúÀåÀ» À§ÇÑ FileDialog »ý¼º
       SaveFileDialog saveDlg = new SaveFileDialog();
       saveDlg.Filter = "XDL Scene file(*.sml)|*.sml;||";
       Nullable<bool> result = saveDlg.ShowDialog();
       if (result != true) return;

        // ÆÄÀÏ°æ·Î¿¡ XScene °´Ã¼ÀÇ µ¥ÀÌÅ͸¦ XML ÇüÅ·ΠÀúÀåÇÑ´Ù.
        // ¼¼ ¹ø° ¸Å°³º¯¼öÀÎ XSpatialReference´Â Ãâ·Â ÁÂÇ¥°è Á¤º¸¸¦ ¼³Á¤ÇÏ´Â °ÍÀ¸·Î¼­,
// ¿©±â¿¡¼­´Â XScene °´Ã¼ÀÇ ÁÂÇ¥°è Á¤º¸·Î ÇÏ°Ú´Ù.
        if (XScene.SaveScene(sceneRoot, saveDlg.FileName, sceneRoot.SR))
        {
           MessageBox.Show("PlanetView 2DÀÇ scene °´Ã¼¸¦ ÆÄÀÏ·Î ÀúÀåÇÏ¿´½À´Ï´Ù.");
        }
        else
        {
           MessageBox.Show("PlanetView 2DÀÇ scene °´Ã¼¸¦ ÆÄÀÏ·Î ÀúÀåÇÏÁö
 ¸øÇß½À´Ï´Ù.");
        }
}

 

2.3.9     Scene ÆÄÀÏÀÎ SML ÆÄÀÏÀ» ¼±ÅÃÇÏ¿© Planet 3D ȯ°æ¿¡ µµ½ÃÇϵµ·Ï ÇÑ´Ù. À̸¦ À§Çؼ­ [Load into 3D View]À» ¼±ÅÃÇÑ´Ù. [¼Ó¼º]â¿¡¼­ ClickÀ» ´õºí Ŭ¸¯ÇÏ¿© Click À̺¥Æ®ÇÔ¼ö¸¦ Ãß°¡ÇÏ°í ÆÄÀÏÀ» ·ÎµùÇÏ´Â Äڵ带 Ãß°¡ÇÑ´Ù.

¸¶¿ì½º·Î ´õºí Ŭ¸¯ÇÏ¸é ¡°Click¡±¿¡ ´ëÇÑ À̺¥Æ® ÇÔ¼ö°¡ ÀÚµ¿ Ãß°¡µÈ´Ù.

 

 

SML ÆÄÀÏÀ» NXPlayetLayerSceneDispalyÀÇ Open ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© ·ÎµùÇϸé NXPlanetLayerSceneDisplayÀÇ scene µ¥ÀÌÅÍ°¡ ÆÄÀÏÀÇ ³»¿ëÀ¸·Î °»½ÅµÈ´Ù. º» ¿¹Á¦¿¡¼­´Â NXPlanetLayerSceneDisplay º¯¼öÀÎ nxSceneLayerDisplayÀÇ Open ÇÔ¼ö¸¦ ÅëÇØ SML ÆÄÀÏÀ» ·ÎµùÇÑ ÈÄ XScene °´Ã¼¸¦ ¾ò¾î¼­ µµ½Ã ¼ø¼­¸¦ ¼³Á¤ÇÑ´Ù. XScene¿¡ Ãß°¡µÈ scene °´Ã¼¸¦ Ãß°¡µÈ ¼ø¼­´ë·Î µµ½ÃÇÏ°íÀÚ Çϸé, XScene °´Ã¼¸¦ ¾ò¾î DisplayOrder¸¦ OrderByAddSequence·Î ¼öÁ¤ÇÑ´Ù. XSceneÀÇ DisplayOrder ±âº»°ªÀº OrderNoneÀ¸·Î, OrderNone, OrderByAddSequence, OrderByUserSequence°¡ ÀÖ´Ù. ÄÚµå´Â ¾Æ·¡¿Í °°´Ù.

 

private void loadFileToolBarButton_Click(object sender, RoutedEventArgs e)
{
        // ÆÄÀÏÀ» ¼±ÅÃÇϱâ À§Çؼ­ FileDialog »ý¼º
        OpenFileDialog openDlg = new OpenFileDialog();
        openDlg.Filter = "XDL Scene file(*.sml)|*.sml;||";
        Nullable<bool> result = openDlg.ShowDialog();
        if (result != true) return;

        // NXPlanetLayerSceneDisplayÀÇ Open ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© scene °´Ã¼ ·Îµù
        if (nxSceneLayerDisplay.Open(openDlg.FileName))
        {
            XScene scene = nxSceneLayerDisplay.GetScene();
            // Scene °´Ã¼ µµ½Ã ¹æ¹ýÀ» Ãß°¡µÇ´Â ¼ø¼­´ë·Î µµ½ÃÇϵµ·Ï ¼³Á¤ÇÑ´Ù.
            // ±âº»°ªÀº XScene.eDisplayOrder.OrderNoneÀÌ´Ù.
            scene.DisplayOrder = XScene.eDisplayOrder.OrderByAddSequence;

            MessageBox.Show("PlanetView 3DÀÇ scene °´Ã¼¸¦ °»½ÅÇÏ°Ú½À´Ï´Ù");
            nxPlanetView3D.RefreshScreen();
        }
        else
        {
            MessageBox.Show("scene ÆÄÀÏÀ» ·ÎµùÇÒ ¼ö ¾ø½À´Ï´Ù.");
        }
}

 

2.3.10   ¼Ö·ç¼ÇÀ» ºôµåÇÏ°í ½ÇÇàÇÑ´Ù.

»ùÇà ÇÁ·ÎÁ§Æ®¿Í ÇÔ²² ¹èÆ÷µÈ ÆÄÀÏÀÎ test.sml ÆÄÀÏÀ» ·ÎµùÇØ º»´Ù.