WPF - XDL Tutorial

XDL MilmapView È°¿ë ¼¼ ¹ø°

(piXoneer XDL Tutorial)

 

 

 

 

 

Pixoneer.NXDL.NSCENEÀÇ ´Ù¾çÇÑ scene °´Ã¼¸¦ »ý¼º/ÆíÁýÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº¸°í,

 NXMilmapLayerSceneEditor¿Í NXMilmapLayerSceneDisplay ·¹À̾ ÀÌ¿ëÇÏ¿©

MilmapView¿¡¼­ scene °´Ã¼¸¦ ´Ù·ç´Â ¹æ¹ýÀ» ±¸ÇöÇØ º¸µµ·Ï ÇÕ´Ï´Ù

 

2019. 04.

 

 

¸ñÂ÷

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

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

1.1    XDL ¿£Áø... 3

2    NXMilmapView¸¦ ÀÌ¿ëÇÑ ¿¹Á¦ ÇÁ·Î±×·¥ ¸¸µé±â... 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     NXMilmapView¸¦ ÀÌ¿ëÇÑ ¿¹Á¦ ÇÁ·Î±×·¥ ¸¸µé±â

l  º» ¿¹Á¦ ÇÁ·Î±×·¥Àº Pixoneer.NXDL.NSCENEÀÇ Scene °´Ã¼ »ý¼º ¹× ÆíÁý µîÀ» ¾Ë¾Æº¸°í MilmapView¿¡¼­ÀÇ scene °´Ã¼¸¦ ´Ù·ç´Â NXMilmapLayerSceneEditor¿Í NXMilmapLayerSceneDisplay¸¦ »ìÆ캸µµ·Ï ÇÑ´Ù.

l  µÎ °³ÀÇ NXMilmapView·Î ±¸¼ºÇÏ¿© ÇϳªÀÇ View¿¡´Â NXMilmapLayerSceneEditor¸¦ Ãß°¡ÇÏ°í ³ª¸ÓÁö View¿¡´Â NXMilmapLayerSceneDisplay¸¦ Ãß°¡ÇÑ´Ù. NXMilmapLayerSceneEditor°¡ Ãß°¡µÈ MilmapView À§¿¡¼­ Scene °´Ã¼¸¦ Ãß°¡ÇÏ°í ÆíÁýÇÑ µÚ ÆÄÀÏ·Î ÀúÀåÇÏ°í À̸¦ NXMilmapLayerSceneDisplay¿¡ ·ÎµùÇÏ¿© µµ½ÃÇÏ´Â ±â´ÉÀ» ±¸ÇöÇØ º¸µµ·Ï ÇÑ´Ù.

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

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

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

 

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

 

 

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

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

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

 

 

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

 

 

2.2.1     (1)¿¡ ToolBar¿Í Button ÄÁÆ®·ÑÀ» »ç¿ëÇÏ¿© ¸Þ´º¸¦ ±¸¼ºÇÑ´Ù. MainWindow.xaml â¿¡¼­ ±âº»À¸·Î »ý¼ºµÈ Grid ·¹À̾ƿô¿¡ Grid.RowDefinitionÀ» ÀÌ¿ëÇÏ¿© µÎ °³ÀÇ RowÀ» »ý¼ºÇÑ´Ù. ù ¹ø° Row¿¡´Â Toolbar¸¦ ¹èÄ¡ÇÑ´Ù(1). µÎ ¹ø° Row¿¡¼­´Â ¼¼ °³ÀÇ ColumnÀ¸·Î ³ª´©¾î µÎ °³ÀÇ NXMilmapView ÄÁÆ®·Ñ(3), (4)°ú ÇÑ °³ÀÇ GridSplitter(2)À» ¹èÄ¡ÇÒ °ÍÀÌ´Ù.

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

 

Name

Content

Function

pointToolBarButton

Point

Á¡ °´Ã¼ Ãß°¡

polylineToolBarButton

Polyline

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

polygonToolBarButton

Polygon

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

cricleToolBarButton

Circle

¿ø °´Ã¼ Ãß°¡

symbolToolBarButton

Symbol

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

saveToFileToolBarButton

Save to File

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

loadFileToolBarButton

Load into MilmapView2

ÆÄÀÏÀ» ÀÐ¾î °´Ã¼¸¦ ´Ù¸¥ Milmap ºä¿¡ µµ½Ã

 

¸Þ´º¸¦ µðÀÚÀÎÇÏ¸é ´ÙÀ½°ú °°Àº XAML Äڵ尡 »ý¼ºµÇ´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù.

 

<Grid>
 <Grid.RowDefinitions>
      <RowDefinition Height="30"/>
      <RowDefinition Height="*"/>
 </Grid.RowDefinitions>
<ToolBar Grid.Row="0">
 <Button Content="SceneEditor "/>
 <Button Content="Point" x:Name="pointToolBarButton"/>
 <Button Content="Polyline" x:Name="polylineToolBarButton"/>
 <Button Content="Polygon" x:Name="polygonToolBarButton"/>
 <Button Content="Circle" x:Name="cricleToolBarButton"/>
 <Button Content="Symbol" x:Name="symbolToolBarButton"/>
       <Separator/>
 <Button Content="File : "/>
 <Button Content="Save to File" x:Name="saveToFileToolBarButton"/>
<Button Content="Load into MilmapView2" x:Name="loadFileToolBarButton"/>
</ToolBar>
</Grid>

 

2.2.2     µÎ ¹ø° Grid¸¦ ¼¼ °³ÀÇ ColumnÀ¸·Î ³ª´« µÚ ù ¹ø° Column¿¡´Â MilmapView ÄÁÆ®·ÑÀ» ¿Ã¸®°í À̸§À» nxMilmapView1¶ó°í ¸í¸íÇÑ´Ù(3). µÎ ¹ø° Column¿¡ GridSplitterÀ» ¹èÄ¡ÇÑ´Ù(2). ¼¼ ¹ø° Column¿¡´Â MilmapView ÄÁÆ®·ÑÀ» ¿Ã¸®°í À̸§À» nxMilmapView2¶ó°í Á¤ÀÇÇÑ´Ù(4).

 

<Grid Grid.Row="1">
     <Grid.ColumnDefinitions>
       <ColumnDefinition Width="*"/>
       <ColumnDefinition Width="5"/>
       <ColumnDefinition Width="*"/>
     </Grid.ColumnDefinitions>
          <WindowsFormsHost Grid.Column="0">
            <nxMilmap:NXMilmapView x:Name="nxMilmapView1"/>
          </WindowsFormsHost>
     <GridSplitter Grid.Column="1"/>
          <WindowsFormsHost Grid.Column="2">
            <nxMilmap:NXMilmapView x:Name="nxMilmapView2"/>
          </WindowsFormsHost>
</Grid>

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

2.3.1     MainWindow.xaml.cs¿¡ NXMilmapLayerSceneDisplay nxSceneLayerDisplay, NXMilmapLayerSceneEditor nxSceneLayerEditor¸¦ »ý¼ºÇÑ´Ù.

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

 

// MainWindow.xaml.cs

private Pixoneer.NXDL.NSCENE.NXMilmapLayerSceneEditor nxSceneLayerEditor;
private Pixoneer.NXDL.NSCENE.NXMilmapLayerSceneDisplay nxSceneLayerDisplay;

¡¦

// MainWindow.xaml.cs

private Pixoneer.NXDL.NSCENE.NXMilmapLayerSceneEditor nxSceneLayerEditor;
private Pixoneer.NXDL.NSCENE.NXMilmapLayerSceneDisplay nxSceneLayerDisplay;

¡¦

 

// MainWindow.xaml.cs

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

public partial class MainWindow : Window
{
    private Pixoneer.NXDL.NSCENE.NXMilmapLayerSceneEditor nxSceneLayerEditor;
private Pixoneer.NXDL.NSCENE.NXMilmapLayerSceneDisplay nxSceneLayerDisplay;
    public MainWindow()
{
         InitializeComponent();
         nxSceneLayerDisplay = new NXMilmapLayerSceneDisplay();
         nxSceneLayerEditor = new NXMilmapLayerSceneEditor();
         nxSceneLayerEditor.OnObjectCreated += new 
NXSCEditEvent(nxSceneLayerEditor_OnObjectCreated);
}

¡¦

 

2.3.2     WindowÀÇ Loaded À̺¥Æ® ÇÔ¼ö¿¡ nxSceneLayerDisplay°ú nxMilmapView1À» ÀÔ·ÂÇÑ´Ù. ±×¸®°í nxSceneLayerEditor¿Í nxMilmapView2µµ Ãß°¡ÇÏ°í È­¸é Áß½ÉÀ» ¼³Á¤ÇÑ´Ù. º» ¿¹Á¦¿¡¼­´Â nxMilmapView1¿¡¼­´Â Degree Çü½ÄÀÇ grid°¡ µµ½ÃµÇµµ·Ï ¼³Á¤ÇÑ´Ù.

 

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

    // XMilmapConfig.xmlÀ» ÀÌ¿ëÇÏ¿© ±º»çÁöµµ¸¦ À§ÇÑ 
// NXMilmapView ¹× NXMilmapEngineÀ» ÃʱâÈ­ÇÑ´Ù.
    if (!NXMilmapView.m_MapEngine.InitFromXML("c:\\Pixoneer\\Xdl1.2\\Config\\XMilmapConfig.xml"))
    {
        return;
    }

    // ¸¶¿ì½º ÈÙÀ» ²ø°í ´ç±â´Â °ÍÀ» È®´ë/Ãà¼Ò ¿äÀÎÀ¸·Î °è»êÇÏ¿© È­¸éÀ» È®´ë/Ãà¼ÒÇÑ´Ù.
    // ÀÌ ¶§, °è»êµÈ °ø°£ ÇØ»óµµ¿Í °¡±î¿î Ãàô(scale)ÀÌ ÀÖ´Â °æ¿ì 
// ÀÚµ¿ÀûÀ¸·Î ÇØ´ç ÃàôÀ¸·Î ¹Ù²î¸é¼­ µµ½ÃµÈ´Ù.
    // ¸¶¿ì½º ÈÙÀ» ²ø°í ´ç±â´Â °ÍÀ¸·Î È­¸éÀÇ ÃàôÀ» º¯°æÇÏ·Á¸é,
// NXMilmapView.eWheelZoomAction.ByScaleIndexÀ¸·Î ¼³Á¤
    nxMilmapView1.WheelZoomAction = 
NXMilmapView.eWheelZoomAction.ByZoomFactor;
    nxMilmapView1.SetGeoToCenter(0, new XVertex2d(127.0, 36.0));

    nxMilmapView2.WheelZoomAction = 
NXMilmapView.eWheelZoomAction.ByZoomFactor;
    nxMilmapView2.SetGeoToCenter(0, new XVertex2d(127.0, 36.0));

    nxMilmapView1.ShowGrid = true;
    nxMilmapView1.GridType = NXMilmapView.eGridType.GridDegrees;
}

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

 

 

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

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

 

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

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

 

 

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

NXMilmapLayerSceneEditorÀÇ 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 cricleToolBarButton_Click(object sender, RoutedEventArgs e)
{
      nxSceneLayerEditor.CreateNewOBJ("XscCircle");
}

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

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 cricleToolBarButton_Click(object sender, RoutedEventArgs e)
{
      nxSceneLayerEditor.CreateNewOBJ("XscCircle");
}

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

 

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

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

 

 

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

 

 

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

±âº»°ªÀ¸·Î ÇÏ¿© »ý¼ºµÈ´Ù.

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

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

 

namespace XDL_MilmapView3
{
 public partial class MainWindow : Window
    {

private Pixoneer.NXDL.NSCENE.NXMilmapLayerSceneEditor nxSceneLayerEditor;
        private Pixoneer.NXDL.NSCENE.NXMilmapLayerSceneDisplay nxSceneLayerDisplay;

        public MainWindow()
        {
            InitializeComponent();

            nxSceneLayerDisplay = new NXMilmapLayerSceneDisplay();
            nxSceneLayerEditor = new NXMilmapLayerSceneEditor();
            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();
       }

           nxMilmapView1.RefreshScreen();
           return default(bool);
}

 

 

2.3.8      nxMilmapView1¿¡ »ý¼ºÇÑ 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("MilmapViewÀÇ scene °´Ã¼¸¦ ÆÄÀÏ·Î ÀúÀåÇÏ¿´½À´Ï´Ù.");
     }
     else
     {
           MessageBox.Show("MilmapViewÀÇ scene °´Ã¼¸¦ ÆÄÀÏ·Î ÀúÀåÇÏÁö 
¸øÇß½À´Ï´Ù.");
     }
}

 

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

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

 

 

SML ÆÄÀÏÀ» NXMilmapLayerSceneDispalyÀÇ Open ÇÔ¼ö ÀÌ¿ëÇÏ¿© ·ÎµùÇϸé NXMilmapLayerSceneDisplayÀÇ scene µ¥ÀÌÅÍ°¡ ÆÄÀÏÀÇ ³»¿ëÀ¸·Î °»½ÅµÈ´Ù. º» ¿¹Á¦¿¡¼­´Â NXMilmapLayerSceneDisplay º¯¼öÀÎ 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();
         // XSene °´Ã¼ µµ½Ã ¹æ¹ýÀ» Ãß°¡µÇ´Â ¼ø¼­´ë·Î µµ½ÃÇϵµ·Ï ¼³Á¤ÇÑ´Ù.
         // ±âº»°ªÀº XScene.eDisplayOrder.OrderNoneÀÌ´Ù.
         scene.DisplayOrder = XScene.eDisplayOrder.OrderByAddSequence;

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

 

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

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