¼³Ä¡
ÇÁ·Î±×·¥À¸·Î ¹èÆ÷µÇ´Â XDL ¿£ÁøÀº Visual Studio
2010 x86 Release ¹öÀüÀ¸·Î, Visual Studio 2010 ÀÌ»óÀÇ ¹öÀü¿¡¼
»ç¿ë°¡´ÉÇÏ´Ù.
¾Æ·¡ÀÇ ¼³¸íÀº Visual Studio 2010À» ±âÁØÀ¸·Î ÇÏ°Ú´Ù.
2
NXPlanetView¸¦ ÀÌ¿ëÇÑ ¿¹Á¦ ÇÁ·Î±×·¥ ¸¸µé±â
l º» ¿¹Á¦ ÇÁ·Î±×·¥Àº NXPlanetViewÀÇ ±âº» ÃøÁ¤ ¸ðµå¸¦ ¼³Á¤ÇÏ¿© ±æÀÌ, ¸éÀû
µîÀ» ÃøÁ¤ÇØ º¸°í, ¼¼ Á¡À» ÀÌ¿ëÇÑ °Å¸® ¹× °¢µµ¸¦ »ç¿ëÀÚ Äڵ带 ÀÌ¿ëÇÏ¿© µµ½ÃÇÏ°í ÃøÁ¤ÇØ º¸µµ·Ï
ÇÑ´Ù.
2.1.1
Visual Studio 2010À» ÀÌ¿ëÇÏ¿© ¿¹Á¦ ¡°XDL_PlanetView1¡±ÀÇ ¡°±âº» ÇÁ·Î±×·¥ ÀÛ¼º¡± ¹æ¹ýÀ» Âü°í·Î ±âº» ÇÁ·ÎÁ§Æ®¸¦ »ý¼ºÇÑ´Ù.
![](XDL_PlanetView2.files/image001.png)
¹øÈ£
|
Name
|
Control type
|
¨ç
|
menuStrip1
|
MenuStrip
|
¨è
|
splitContainter1
|
SplitContainer
|
¨é
|
nxPlanetView2D
|
NXPlanetView
|
¨ê
|
nxPlanetView3D
|
NXPlanetView
|
¨ë
|
nxPlanetLayer2D
|
NXPlanetLayer
|
2.2.1
[µµ±¸ »óÀÚ]ÀÇ ¡°MenuStrip¡±¸¦ ¼±ÅÃÇÏ°í Form1¿¡ ²ø¾î´Ù°¡ ³õ´Â´Ù.
![](XDL_PlanetView2.files/image002.png)
Form1¿¡ menuStrip1ÀÌ Ãß°¡µÈ´Ù. FormÀÇ »ó´ÜÀ» Ŭ¸¯ÇÏ¸é ¾Æ·¡¿Í °°ÀÌ ¸Þ´º¸¦ Ãß°¡ÇÒ ¼ö ÀÖµµ·Ï ¹Ù²ï´Ù.
![](XDL_PlanetView2.files/image003.png)
±â´ÉÀ» À§ÇÑ ¸Þ´º¸¦ ÀÔ·ÂÇÏ°í ÀÌ¿¡
´ëÇÑ Nameµµ ¼³Á¤ÇÑ´Ù. ¿¹Á¦ÀÇ ¸Þ´º ±¸¼ºÀº ¾Æ·¡¿Í
°°´Ù.
![](XDL_PlanetView2.files/image004.png)
|
Text
|
Name
|
°Å¸®(´Ü¼±) ÃøÁ¤
|
Measure2DLineToolStripMenuItem
|
°Å¸®(Æú¸®¶óÀÎ) ÃøÁ¤
|
Measure2DPolyLineToolStripMenuItem
|
¸éÀû ÃøÁ¤
|
Measure2DAreaToolStripMenuItem
|
°¢µµ ÃøÁ¤(ÁøºÏ¹æÇâ)
|
Measure2DAngleToolStripMenuItem
|
°¢µµ ÃøÁ¤(3Á¡ ÀÌ¿ë)
|
Measure2DAngle3PtToolStripMenuItem
|
¿øÇü ÃøÁ¤
|
Measure2DCircleToolStripMenuItem
|
![](XDL_PlanetView2.files/image005.png)
|
Text
|
Name
|
°Å¸®(´Ü¼±) ÃøÁ¤
|
Measure3DLineToolStripMenuItem
|
°Å¸®(Æú¸®¶óÀÎ) ÃøÁ¤
|
Measure3DPolyLineToolStripMenuItem
|
¸éÀû ÃøÁ¤
|
Measure3DAreaToolStripMenuItem
|
°¢µµ ÃøÁ¤(ÁøºÏ¹æÇâ)
|
Measure3DAngleToolStripMenuItem
|
°¢µµ ÃøÁ¤(3Á¡ ÀÌ¿ë)
|
Measure3DAngle3PtToolStripMenuItem
|
¿øÇü ÃøÁ¤
|
Measure3DCircleToolStripMenuItem
|
![](XDL_PlanetView2.files/image006.png)
|
Text
|
Name
|
°Å¸® ¹× °¢µµ ÃøÁ¤
|
UserDefinedMeasureToolStripMenuItem
|
2.2.2
³ª¸ÓÁö ÄÁÆ®·ÑÀº ¡°XDL_PlanetView1¡±À» Âü°íÇÏ¿© Ãß°¡ÇÑ´Ù.
2.2.3
nxPlanetView3D ÄÁÆ®·ÑÀ» ¼±ÅÃÇÏ°í [¼Ó¼º] âÀÇ ¡°EarthMode¡±¸¦
¡°Planet3D¡±·Î ¼³Á¤ÇÑ´Ù.
NXPlanetViewÀÇ EarthMode´Â ¡°Planet2D¡±ÀÌ´Ù. Earth¸ðµå¸¦ ¡°Planet3D¡±·Î ¼³Á¤Çϸé PlanetView´Â 3Â÷¿ø µµ½Ã ¸ðµå·Î º¯°æµÈ´Ù.
![](XDL_PlanetView2.files/image007.jpg)
2.3.1
Form1À» ¼±ÅÃÇÏ°í [¼Ó¼º] â - [À̺¥Æ® ] ¸Þ´º¸¦ ¼±ÅÃÇÑ µÚ ¡°Load¡± À̺¥Æ®¸¦ ´õºíŬ¸¯ÇÑ´Ù.
Form1_Load ÇÔ¼ö¿Í ÇÔ²² ¾Æ·¡¿Í °°ÀÌ Äڵ带 Ãß°¡ÇÑ´Ù.
![using Pixoneer.NXDL;
using Pixoneer.NXDL.NGR;
using Pixoneer.NXDL.NXPlanet;
namespace XDL_PlanetView2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
nxPlanetView2D.BackColor = Color.Black;
nxPlanetView3D.BackColor = Color.Black;
}
private void Form1_Load(object sender, EventArgs e)
{
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));
// PlanetViewÀÇ ÃøÁ¤ ´ÜÀ§ ¼³Á¤
// °Å¸® ÃøÁ¤ ´ÜÀ§
nxPlanetView3D.ToolboxDistUnit =
NXPlanetView.eToolboxDistUnit.Mile;
// ¸éÀû ÃøÁ¤ ´ÜÀ§
nxPlanetView3D.ToolboxAreaUnit =
NXPlanetView.eToolboxAreaUnit.SquareKiloMeter;
nxPlanetView2D.RefreshScreen();
nxPlanetView3D.RefreshScreen();
}
}
}](XDL_PlanetView2.files/image009.png)
2.3.2
¡°2D Measurement/3D Measurement/»ç¿ëÀÚ Á¤ÀÇ¡±ÀÇ ÇÏÀ§ ¸Þ´º¸¦ ¼±ÅÃÇÑ ÈÄ ´õºíŬ¸¯ÇÑ´Ù.
¸Þ´º¿¡¼
¸¶¿ì½º·Î ´õºíŬ¸¯ÇÏ¸é ¡°Click¡±¿¡ ´ëÇÑ À̺¥Æ® ÇÔ¼ö°¡ ÀÚµ¿ Ãß°¡µÈ´Ù.
![](XDL_PlanetView2.files/image010.jpg)
2.3.3
°¢ ¸Þ´º¿¡ µû¸¥ nxPlanetView2D¿Í nxPlanetView3DÀÇ ToolboxMode¸¦ ¼³Á¤ÇÑ´Ù.
NXPlanetViewÀÇ ÃøÁ¤¸ðµå·Î´Â 2Á¡À» ÀÌ¿ëÇÑ °Å¸® ÃøÁ¤(NXPlanetView.eToolboxMode. DistanceMeasurer),
´ÙÁß Á¡À» ÀÌ¿ëÇÑ °Å¸® ÃøÁ¤(eToolboxMode.PathMeasurer), ´ÙÁß Á¡À» ÀÌ¿ëÇÑ ¸éÀû ÃøÁ¤(eToolboxMode.AreaMeasurer), µÎ Á¡ÀÇ °Å¸®¸¦ ¹ÝÁö¸§À¸·Î ÇÑ ¿øÇü ÃøÁ¤(eToolboxMode.CircleMeasurer), µÎ Á¡À¸·Î ÀÌ·ç¾îÁø º¤ÅÍ¿Í ÁøºÏ¹æÇâ°úÀÇ °¢µµ ÃøÁ¤(eToolboxMode.AngleMeasurer), ¼¼ Á¡À¸·Î ÀÌ·ç¾îÁø °¢µµ ÃøÁ¤(eToolboxMode.AngleMeasurer2) µîÀÌ ÀÖ´Ù.
ÃøÁ¤ °á°ú¸¦ Ç¥½ÃÇÏ´Â µ¥¿¡ ÃøÁ¤ ´ÜÀ§¸¦ ¼³Á¤ÇÏ·Á¸é, ¸éÀû¿¡ ´ëÇؼ´Â NXPlanetViewÀÇ ToolboxAreaUnit ¼Ó¼ºÀ» NXPlanetView.eToolboxAreaUnit °ªÀ¸·Î ¼³Á¤ÇÏ¸é µÇ°í, °Å¸®¿¡ ´ëÇؼ´Â NXPlanetViewÀÇ ToolboxDistUnit ¼Ó¼ºÀ» NXPlanetView.eToolboxDistUnit °ªÀ¸·Î ¼³Á¤ÇÑ´Ù.
ÄÚµå´Â ¾Æ·¡¿Í °°´Ù.
![private void Measure2DLineToolStripMenuItem_Click(object sender, EventArgs e)
{
nxPlanetView2D.ToolboxMode = NXPlanetView.eToolboxMode.DistanceMeasurer;
}
private void Measure2DPolyLineToolStripMenuItem_Click(object sender, EventArgs e)
{
nxPlanetView2D.ToolboxMode = NXPlanetView.eToolboxMode.PathMeasurer;
}
private void Measure2DAreaToolStripMenuItem_Click(object sender, EventArgs e)
{
nxPlanetView2D.ToolboxMode = NXPlanetView.eToolboxMode.AreaMeasurer;
}
private void Measure2DAngleToolStripMenuItem_Click(object sender, EventArgs e)
{
nxPlanetView2D.ToolboxMode = NXPlanetView.eToolboxMode.AngleMeasurer;
}
private void Measure2DAngle3PtToolStripMenuItem_Click(object sender, EventArgs e)
{
nxPlanetView2D.ToolboxMode = NXPlanetView.eToolboxMode.AngleMeasurer2;
}
private void Measure2DCircleToolStripMenuItem_Click(object sender, EventArgs e)
{
nxPlanetView2D.ToolboxMode = NXPlanetView.eToolboxMode.CircleMeasurer;
}
private void Measure3DLineToolStripMenuItem_Click(object sender, EventArgs e)
{
nxPlanetView3D.ToolboxMode = NXPlanetView.eToolboxMode.DistanceMeasurer;
}
private void Measure3DPolyLineToolStripMenuItem_Click(object sender, EventArgs e)
{
nxPlanetView3D.ToolboxMode = NXPlanetView.eToolboxMode.PathMeasurer;
}
private void Measure3DAreaToolStripMenuItem_Click(object sender, EventArgs e)
{
nxPlanetView3D.ToolboxMode = NXPlanetView.eToolboxMode.AreaMeasurer;
}
private void Measure3DAngleToolStripMenuItem_Click(object sender, EventArgs e)
{
nxPlanetView3D.ToolboxMode = NXPlanetView.eToolboxMode.AngleMeasurer;
}
private void Measure3DAngle3PtToolStripMenuItem_Click(object sender, EventArgs e)
{
nxPlanetView3D.ToolboxMode = NXPlanetView.eToolboxMode.AngleMeasurer2;
}
private void Measure3DCircleToolStripMenuItem_Click(object sender, EventArgs e)
{
nxPlanetView3D.ToolboxMode = NXPlanetView.eToolboxMode.CircleMeasurer;
}](XDL_PlanetView2.files/image011.png)
2.3.4
»ç¿ëÀÚ Á¤ÀÇ ÃøÁ¤À» À§ÇÑ º¯¼ö¸¦ Ãß°¡ÇÏ°í UserDefinedMeasureToolStripMenuItem
À̺¥Æ® ÇÔ¼ö¿¡¼ ÃʱâÈÇÑ´Ù.
»ç¿ëÀÚ
Á¤ÀÇ ÃøÁ¤ ¿©ºÎ¸¦ ¼³Á¤ÇÏ´Â ¡°bool userMeasure¡±¿Í °¢µµ ÃøÁ¤À» À§ÇÑ ¼¼ º¯¼ö ¡°XGeoPoint posMeasure0, posMeasure1, posMeasure2¡±¸¦ »ý¼ºÇÏ°í ÃʱâÈÇÑ´Ù.
![public partial class Form1 : Form
{
bool userMeasure = false;
int countPos = 0;
XGeoPoint posAngle0, posAngle1, posAngle2;
// index 0 : start, index 1 : center, index 2 : end
public Form1()
{
InitializeComponent();
nxPlanetView2D.BackColor = Color.Black;
nxPlanetView3D.BackColor = Color.Black;
}
private void Form1_Load(object sender, EventArgs e)
{
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));
// PlanetViewÀÇ ÃøÁ¤ ´ÜÀ§ ¼³Á¤
// °Å¸® ÃøÁ¤ ´ÜÀ§
nxPlanetView3D.ToolboxDistUnit = NXPlanetView.eToolboxDistUnit.Mile;
// ¸éÀû ÃøÁ¤ ´ÜÀ§
nxPlanetView3D.ToolboxAreaUnit =
NXPlanetView.eToolboxAreaUnit.SquareKiloMeter;
nxPlanetView2D.RefreshScreen();
nxPlanetView3D.RefreshScreen();
// »ç¿ëÀÚ Á¤ÀÇ ÃøÁ¤À» À§ÇÑ º¯¼ö ÃʱâÈ
userMeasure = false;
countPos = 0;
}
private void UserDefinedMeasureToolStripMenuItem_Click(object sender,
EventArgs e)
{
userMeasure = !userMeasure;
countPos = 0;
}](XDL_PlanetView2.files/image012.png)
2.3.5
°¢µµ ¹× °Å¸®¸¦ ÃøÁ¤ÇÏ´Â ÇÔ¼ö¸¦ ÀÌ¿ëÇϱâ À§Çؼ ¡°NXDLcc.dll¡±À»
ÂüÁ¶¿¡ Ãß°¡ÇÑ´Ù.
WGS84ü¸¦ ¹Ý¿µÇÑ °Å¸®¸¦ ÃøÁ¤ÇÏ´Â ÇÔ¼ö´Â Xcc.CalcGeodeticDistanceÀ̸ç, °¢µµ¸¦
ÃøÁ¤ÇÏ´Â ÇÔ¼ö´Â Xcc.CalcGeodeticAngleÀÌ´Ù. À̸¦
À§ÇØ NXDLcc.dllÀ» ÂüÁ¶¿¡ Ãß°¡ÇÏ°í, ¡°using Pixoneer.NXDL.NCC;¡± ±¸¹®
¶ÇÇÑ Ãß°¡ÇÑ´Ù.
2.3.6
nxPlanetLayer2DÀ» ¼±ÅÃÇÏ¿© ¡°OnWndProc¡±
À̺¥Æ®¿Í ¡°OnRender¡± À̺¥Æ® ÇÔ¼ö¸¦ Ãß°¡ÇÏ¿© Äڵ带 ÀÛ¼ºÇÑ´Ù.
OnWndProc À̺¥Æ®´Â NXPlanetLayer°¡ Ãß°¡µÇ¾î ÀÖ´Â
ViewÀÇ À©µµ¿ì À̺¥Æ®¸¦ ¿ÜºÎ¿¡¼ ¹Þ¾Æ¼ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.
OnRender´Â NXPlanetLayer°¡ Ãß°¡µÇ¾î ÀÖ´Â ViewÀÇ RenderingÀÌ ¿Ï·áµÈ ÈÄ ¾îÇø®ÄÉÀ̼ǿ¡¼ Ãß°¡ÀûÀÎ
ÀÛ¾÷À» ±¸ÇöÇØ¾ß ÇÒ ÇÊ¿ä°¡ ÀÖÀ» ¶§ »ç¿ëÇÏ¸é µÈ´Ù.
¿ÞÂÊ ¹öÆ°ÀÌ Å¬¸¯ÇÒ ¶§¸¶´Ù °¢µµ
ÃøÁ¤À» À§ÇÑ Á¡À» Â÷·Ê´ë·Î ¼³Á¤ÇÏ°í 3Á¡ÀÌ ¸ðµÎ ¼³Á¤µÇ¸é °è»ê°á°ú¸¦ Visual Studio 2010 Ãâ·Ââ¿¡ Ãâ·ÂÇϵµ·Ï ÇÑ´Ù. ¶ÇÇÑ
2Á¡ ÀÌ»óÀÎ °æ¿ì ȸ鿡 ºÓÀº ¼±À¸·Î µµ½ÃÇÑ´Ù.
ÄÚµå´Â ¾Æ·¡¿Í °°´Ù.
![private bool nxPlanetLayer2D_OnWndProc(object sender, NXPlanetDrawArgs e, ref Message m)
{
if (m.Msg == Pixoneer.NXDL.XWndMsg.XWM_LBUTTONDOWN)
{
if (userMeasure)
{
double x = Pixoneer.NXDL.XWndMsg.GetLowValue(m.LParam);
double y = Pixoneer.NXDL.XWndMsg.GetHighValue(m.LParam);
XGeoPoint gpPos = nxPlanetView2D.ScreenToGeographic(x, y);
if (countPos == 0)
{
posAngle0 = gpPos;
}
else if (countPos == 1)
{
posAngle1 = gpPos;
}
else if (countPos == 2)
{
posAngle2 = gpPos;
// µÎ ¼±ºÐÀÇ ±æÀÌ¿Í 3 Á¡À¸·Î ÀÌ·ç¾îÁö´Â °¢µµ °è»ê
double distance = 0.0;
distance += Xcc.CalcGeodeticDistance(XAngle.FromDegree(posAngle0.lond), XAngle.FromDegree(posAngle0.latd),
XAngle.FromDegree(posAngle1.lond), XAngle.FromDegree(posAngle1.latd));
distance += Xcc.CalcGeodeticDistance(XAngle.FromDegree(posAngle1.lond), XAngle.FromDegree(posAngle1.latd),
XAngle.FromDegree(posAngle2.lond), XAngle.FromDegree(posAngle2.latd));
double angle = 0.0;
angle = Xcc.CalcGeodeticAngle(XAngle.FromDegree(posAngle1.lond), XAngle.FromDegree(posAngle1.latd),
XAngle.FromDegree(posAngle0.lond), XAngle.FromDegree(posAngle0.latd),
XAngle.FromDegree(posAngle2.lond), XAngle.FromDegree(posAngle2.latd));
System.Diagnostics.Debug.WriteLine("Distance : " + distance.ToString());
System.Diagnostics.Debug.WriteLine("Angle : " + angle.ToString());
}
countPos++;
nxPlanetView2D.RefreshScreen();
}
}
return default(bool);
}
private bool nxPlanetLayer2D_OnRender(object sender, NXPlanetDrawArgs e)
{
if (!userMeasure) return false;
if (countPos > 1)
{
e.Graphics.glDisable(XGraphics.GL_DEPTH_TEST);
e.Graphics.glEnable(XGraphics.GL_BLEND);
e.Graphics.glBlendFunc(XGraphics.GL_SRC_ALPHA,
XGraphics.GL_ONE_MINUS_SRC_ALPHA);
e.Graphics.glPushMatrix();
e.Graphics.glColor3f(1.0f, 0.0f, 0.0f);
e.Graphics.glLineWidth(3);
e.Graphics.glBegin(XGraphics.GL_LINE_STRIP);
XVertex3d posWorld = nxPlanetView2D.GeographicToWorld(posAngle0);
e.Graphics.glVertex3d(posWorld - e.WOS);
posWorld = nxPlanetView2D.GeographicToWorld(posAngle1);
e.Graphics.glVertex3d(posWorld - e.WOS);
if (countPos >= 3)
{
posWorld = nxPlanetView2D.GeographicToWorld(posAngle2);
e.Graphics.glVertex3d(posWorld - e.WOS);
}
e.Graphics.glEnd();
e.Graphics.glColor3f(1.0f, 1.0f, 1.0f);
e.Graphics.glPopMatrix();
e.Graphics.glEnable(XGraphics.GL_DEPTH_TEST);
}
return default(bool);
}](XDL_PlanetView2.files/image013.png)
2.3.7
¼Ö·ç¼ÇÀ» ºôµåÇÏ°í ½ÇÇàÇÑ´Ù.
2D MeasurementÀÇ ¡°°Å¸®(Æú¸®¶óÀÎ) ÃøÁ¤¡± ¸Þ´º¸¦
¼±ÅÃÇÑ µÚ nxPlanetView2D À§¿¡¼ ¸¶¿ì½º ¿ÞÂÊ ¹öÆ°À» Ŭ¸¯ÇÏ¸é¼ ÃøÁ¤ÇÏ°íÀÚ ÇÏ´Â Á¤Á¡À»
¼³Á¤ÇÑ´Ù. ¾Æ·¡ ±×¸²°ú °°ÀÌ ÃøÁ¤ °á°ú°¡ °¢ ¼±ºÐ ¿ä¼Ò¿¡ µµ½ÃµÈ´Ù.
![](XDL_PlanetView2.files/image014.jpg)
3D MeasurementÀÇ ¡°°¢µµ ÃøÁ¤(ÁøºÏ¹æÇâ)¡± ¸Þ´º¸¦ ¼±ÅÃÇÑ µÚ nxPlanetView3D
À§¿¡¼ ¸¶¿ì½º ¿ÞÂÊ ¹öÆ°À» Ŭ¸¯ÇÏ°í ¸¶¿ì½º¸¦ ¿òÁ÷À̸é ÁøºÏ¹æÇâ°ú ÀÌ·ç´Â °¢µµ°¡ ȸ鿡 µµ½ÃµÇ¸ç ¸¶¿ì½º ¿ÞÂÊ ¹öÆ°À» ´õºí Ŭ¸¯ÇÏ¿©
ÃøÁ¤À» Á¾·áÇÑ´Ù.
![](XDL_PlanetView2.files/image015.jpg)
»ç¿ëÀÚ Á¤ÀÇ ¸Þ´ºÀÇ ¡°°Å¸® ¹× °¢µµ ÃøÁ¤¡±À» ¼±ÅÃÇÑ µÚ nxPlanetView2D À§¿¡¼ ¸¶¿ì½º ¿ÞÂÊ ¹öÆ°À» Ŭ¸¯Çϸé 2Á¡
ÀÌ»óºÎÅÍ È¸é¿¡ ºÓÀº ½Ç¼±ÀÌ µµ½ÃµÇ°í, 3Á¡ÀÌ ¼±ÅõǸé Visual
Studio 2010ÀÇ Ãâ·Ââ¿¡ ÃøÁ¤°á°ú°¡ ³ªÅ¸³´Ù.
![](XDL_PlanetView2.files/image016.jpg)
![](XDL_PlanetView2.files/image017.png)
ÃøÁ¤°á°úÀÇ ´ÜÀ§´Â °Å¸®ÀÇ °æ¿ì
meter, °¢µµÀÇ °æ¿ì ¢ªÀÌ´Ù.
|