XDL Manual

XDL PlanetView È°¿ë µÎ¹ø°

(piXoneer XDL Tutorial)

 

 

 

 

 

 

NXPlanetView¸¦ È°¿ëÇÏ¿© 2D ¹× 3D ȯ°æ¿¡¼­ ´Ù¾çÇÑ ÃøÁ¤¹æ¹ýÀ» ±¸ÇöÇØ º¸°í,

 »ç¿ëÀÚ Á¤ÀÇ ¼³Á¤ÇÑ Á¤Á¡¿¡ ´ëÇÑ °Å¸® ¹× °¢µµ ÃøÁ¤µµ ±¸ÇöÇØ º¾´Ï´Ù.

 

2017. 01.

¼öÁ¤ 2019. 02.

 

 

¸ñÂ÷

XDL PlanetView È°¿ë µÎ¹ø°... 1

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

1.1    XDL ¿£Áø... 3

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

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

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

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

 

 

 

 

1     »ç¿ëÇϱâ

 

1.1    XDL ¿£Áø

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

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

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

l  º» ¿¹Á¦ ÇÁ·Î±×·¥Àº NXPlanetViewÀÇ ±âº» ÃøÁ¤ ¸ðµå¸¦ ¼³Á¤ÇÏ¿© ±æÀÌ, ¸éÀû µîÀ» ÃøÁ¤ÇØ º¸°í, ¼¼ Á¡À» ÀÌ¿ëÇÑ °Å¸® ¹× °¢µµ¸¦ »ç¿ëÀÚ Äڵ带 ÀÌ¿ëÇÏ¿© µµ½ÃÇÏ°í ÃøÁ¤ÇØ º¸µµ·Ï ÇÑ´Ù.

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

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

 

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

 

 

¹øÈ£

Name

Control type

¨ç

menuStrip1

MenuStrip

¨è

splitContainter1

SplitContainer

¨é

nxPlanetView2D

NXPlanetView

¨ê

nxPlanetView3D

NXPlanetView

¨ë

nxPlanetLayer2D

NXPlanetLayer

2.2.1     [µµ±¸ »óÀÚ]ÀÇ ¡°MenuStrip¡±¸¦ ¼±ÅÃÇÏ°í Form1¿¡ ²ø¾î´Ù°¡ ³õ´Â´Ù.

 

 

Form1¿¡ menuStrip1ÀÌ Ãß°¡µÈ´Ù. FormÀÇ »ó´ÜÀ» Ŭ¸¯ÇÏ¸é ¾Æ·¡¿Í °°ÀÌ ¸Þ´º¸¦ Ãß°¡ÇÒ ¼ö ÀÖµµ·Ï ¹Ù²ï´Ù.

 

 

±â´ÉÀ» À§ÇÑ ¸Þ´º¸¦ ÀÔ·ÂÇÏ°í ÀÌ¿¡ ´ëÇÑ Nameµµ ¼³Á¤ÇÑ´Ù. ¿¹Á¦ÀÇ ¸Þ´º ±¸¼ºÀº ¾Æ·¡¿Í °°´Ù.

 

Text

Name

°Å¸®(´Ü¼±) ÃøÁ¤

Measure2DLineToolStripMenuItem

°Å¸®(Æú¸®¶óÀÎ) ÃøÁ¤

Measure2DPolyLineToolStripMenuItem

¸éÀû ÃøÁ¤

Measure2DAreaToolStripMenuItem

°¢µµ ÃøÁ¤(ÁøºÏ¹æÇâ)

Measure2DAngleToolStripMenuItem

°¢µµ ÃøÁ¤(3Á¡ ÀÌ¿ë)

Measure2DAngle3PtToolStripMenuItem

¿øÇü ÃøÁ¤

Measure2DCircleToolStripMenuItem

 

Text

Name

°Å¸®(´Ü¼±) ÃøÁ¤

Measure3DLineToolStripMenuItem

°Å¸®(Æú¸®¶óÀÎ) ÃøÁ¤

Measure3DPolyLineToolStripMenuItem

¸éÀû ÃøÁ¤

Measure3DAreaToolStripMenuItem

°¢µµ ÃøÁ¤(ÁøºÏ¹æÇâ)

Measure3DAngleToolStripMenuItem

°¢µµ ÃøÁ¤(3Á¡ ÀÌ¿ë)

Measure3DAngle3PtToolStripMenuItem

¿øÇü ÃøÁ¤

Measure3DCircleToolStripMenuItem

 

Text

Name

°Å¸® ¹× °¢µµ ÃøÁ¤

UserDefinedMeasureToolStripMenuItem

2.2.2     ³ª¸ÓÁö ÄÁÆ®·ÑÀº ¡°XDL_PlanetView1¡±À» Âü°íÇÏ¿© Ãß°¡ÇÑ´Ù.

2.2.3     nxPlanetView3D ÄÁÆ®·ÑÀ» ¼±ÅÃÇÏ°í [¼Ó¼º] âÀÇ ¡°EarthMode¡±¸¦ ¡°Planet3D¡±·Î ¼³Á¤ÇÑ´Ù.

NXPlanetViewÀÇ EarthMode´Â ¡°Planet2D¡±ÀÌ´Ù. Earth¸ðµå¸¦ ¡°Planet3D¡±·Î ¼³Á¤Çϸé PlanetView´Â 3Â÷¿ø µµ½Ã ¸ðµå·Î º¯°æµÈ´Ù.

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

 

 

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

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();
        }
    }
}

2.3.2     ¡°2D Measurement/3D Measurement/»ç¿ëÀÚ Á¤ÀÇ¡±ÀÇ ÇÏÀ§ ¸Þ´º¸¦ ¼±ÅÃÇÑ ÈÄ ´õºíŬ¸¯ÇÑ´Ù.

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

 

 

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;
}

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;
    }

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);
}

 

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

2D MeasurementÀÇ ¡°°Å¸®(Æú¸®¶óÀÎ) ÃøÁ¤¡± ¸Þ´º¸¦ ¼±ÅÃÇÑ µÚ nxPlanetView2D À§¿¡¼­ ¸¶¿ì½º ¿ÞÂÊ ¹öÆ°À» Ŭ¸¯Çϸ鼭 ÃøÁ¤ÇÏ°íÀÚ ÇÏ´Â Á¤Á¡À» ¼³Á¤ÇÑ´Ù. ¾Æ·¡ ±×¸²°ú °°ÀÌ ÃøÁ¤ °á°ú°¡ °¢ ¼±ºÐ ¿ä¼Ò¿¡ µµ½ÃµÈ´Ù.

 

 

3D MeasurementÀÇ ¡°°¢µµ ÃøÁ¤(ÁøºÏ¹æÇâ)¡± ¸Þ´º¸¦ ¼±ÅÃÇÑ µÚ nxPlanetView3D À§¿¡¼­ ¸¶¿ì½º ¿ÞÂÊ ¹öÆ°À» Ŭ¸¯ÇÏ°í ¸¶¿ì½º¸¦ ¿òÁ÷À̸é ÁøºÏ¹æÇâ°ú ÀÌ·ç´Â °¢µµ°¡ È­¸é¿¡ µµ½ÃµÇ¸ç ¸¶¿ì½º ¿ÞÂÊ ¹öÆ°À» ´õºí Ŭ¸¯ÇÏ¿© ÃøÁ¤À» Á¾·áÇÑ´Ù.

 

 

»ç¿ëÀÚ Á¤ÀÇ ¸Þ´ºÀÇ ¡°°Å¸® ¹× °¢µµ ÃøÁ¤¡±À» ¼±ÅÃÇÑ µÚ nxPlanetView2D À§¿¡¼­ ¸¶¿ì½º ¿ÞÂÊ ¹öÆ°À» Ŭ¸¯Çϸé 2Á¡ ÀÌ»óºÎÅÍ È­¸é¿¡ ºÓÀº ½Ç¼±ÀÌ µµ½ÃµÇ°í, 3Á¡ÀÌ ¼±ÅõǸé Visual Studio 2010ÀÇ Ãâ·Ââ¿¡ ÃøÁ¤°á°ú°¡ ³ªÅ¸³­´Ù.

 

 

 

 

ÃøÁ¤°á°úÀÇ ´ÜÀ§´Â °Å¸®ÀÇ °æ¿ì meter, °¢µµÀÇ °æ¿ì ¢ªÀÌ´Ù.