コード例 #1
0
ClusterData* ClusterHelper::Update(){


	std::vector<Point*>* reducedPoints = ReducePoints(localcpy);

	if (AreEnoughPointsForClustering((int)reducedPoints->size()))
	{
		FindClusters(reducedPoints);
		AssignAllPoints(localcpy);
	}
	else
	{
		if (value) {
			delete value;
		}
		value = new ClusterData();
	}
	return value;

}
コード例 #2
0
ファイル: DialogCCD.cpp プロジェクト: dusong7/NULL
void CDialogCCD::SaveTemplateFile()
{
	//保存
	//////////////////////////////////////////////////
	if (g_vecUnit.size() <= 0)
	{
		AfxMessageBox("当前没有可保存的模板");
		return;
	}

	//1.从c:\\bin目录下去txt文件,这里规定死方便操作
	CFileDialog _OpenDlg(FALSE, ".txt", "c:\\bin\\模板名称", 
		OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "文本文件(*.txt)|*.txt|所有文件 (*.*)|*.*||");
	if(_OpenDlg.DoModal()!=IDOK)
	{
		return;
	}

	CString _strFile = _OpenDlg.GetPathName();
	if(_strFile.Find("C:\\bin\\", 0) < 0)
	{
		AfxMessageBox("请正确选择路径");
		return;
	}

	//把轮廓点减少
	if (g_vecUnit[0]->m_nType == u_polyline)
	{
		AD_PolylineData* _pPolylineTemp = (AD_PolylineData*)g_vecUnit[0];
		ReducePoints(_pPolylineTemp->m_vecPoint);
	}

	CString _strLine;
	vector<CString> _vecLine;
	int _nTrackerPointCount = 0;
	int _nTrackerArcCount = 0;
	int _nTrackerCircleCount = 0;

	for (size_t _i=0; _i<g_vecUnit.size(); _i++)
	{
		if (g_vecUnit[_i]->m_nType == u_arc)
		{
			_strLine.Format("track arc %d", _nTrackerArcCount++);
		}
		else if (g_vecUnit[_i]->m_nType == u_circle)
		{
			_strLine.Format("track circle %d", _nTrackerCircleCount++);
		}
		else
		{
			_strLine.Format("track point %d", _nTrackerPointCount++);
		}

		_vecLine.push_back(_strLine);

		switch (g_vecUnit[_i]->m_nType)
		{
		case u_dot:
			{
				AD_PointData* _pDotTemp = (AD_PointData*)g_vecUnit[_i];
				_strLine.Format("X%lfY%lfZ%lf", _pDotTemp->x, _pDotTemp->y, _pDotTemp->z);
				_vecLine.push_back(_strLine);
			}

			break;
		case u_line:
			{
				AD_LineData* _pLineTemp = (AD_LineData*)g_vecUnit[_i];
				_strLine.Format("X%lfY%lfZ%lf", _pLineTemp->x1, _pLineTemp->y1, _pLineTemp->z1);
				_vecLine.push_back(_strLine);
				_strLine.Format("X%lfY%lfZ%lf", _pLineTemp->x2, _pLineTemp->y2, _pLineTemp->z2);
				_vecLine.push_back(_strLine);
			}

			break;
		case u_arc:
			{
				AD_ArcData* _pArcTemp = (AD_ArcData*)g_vecUnit[_i];
				_strLine.Format("A1%lfA2%lfCX%lfCY%lfCZ%lfR%lf", _pArcTemp->angle1, _pArcTemp->angle2, _pArcTemp->cx,
					_pArcTemp->cy, _pArcTemp->cz, _pArcTemp->radius);
				_vecLine.push_back(_strLine);
			}
			
			break;
		case u_circle:
			{
				AD_CircleData* _pCirTemp = (AD_CircleData*)g_vecUnit[_i];
				_strLine.Format("CX%lfCY%lfCZ%lfR%lf", _pCirTemp->cx, _pCirTemp->cy, 
					_pCirTemp->cz, _pCirTemp->radius);
				_vecLine.push_back(_strLine);
			}

			break;
		case u_polyline:
			{
				AD_PolylineData* _pPolylineTemp = (AD_PolylineData*)g_vecUnit[_i];
				for (size_t _k=0; _k<_pPolylineTemp->m_vecPoint.size(); _k++)
				{
					_strLine.Format("X%lfY%lfZ%lf", _pPolylineTemp->m_vecPoint[_k].x,
						_pPolylineTemp->m_vecPoint[_k].y,  _pPolylineTemp->m_vecPoint[_k].z);
					_vecLine.push_back(_strLine);
				}

				if (_pPolylineTemp->flags == 1)
				{
					_strLine.Format("X%lfY%lfZ%lf", _pPolylineTemp->m_vecPoint[0].x,
						_pPolylineTemp->m_vecPoint[0].y,  _pPolylineTemp->m_vecPoint[0].z);
					_vecLine.push_back(_strLine);
				}
			}

			break;
		case u_spline:
			{
				AD_SplineData* _pSplineTemp = (AD_SplineData*)g_vecUnit[_i];
				for (size_t _k=0; _k<_pSplineTemp->m_vecPoint.size(); _k++)
				{
					_strLine.Format("X%lfY%lfZ%lf", _pSplineTemp->m_vecPoint[_k].x,
						_pSplineTemp->m_vecPoint[_k].y,  _pSplineTemp->m_vecPoint[_k].z);
					_vecLine.push_back(_strLine);
				}
			}

			break;
		case u_ellipse:
			{
				AD_EllipseData* _pEllispeTemp = (AD_EllipseData*)g_vecUnit[_i];	
				for (size_t _k=0; _k<_pEllispeTemp->m_vecPoint.size(); _k++)
				{
					_strLine.Format("X%lfY%lfZ%lf", _pEllispeTemp->m_vecPoint[_k].x,
						_pEllispeTemp->m_vecPoint[_k].y,  _pEllispeTemp->m_vecPoint[_k].z);
					_vecLine.push_back(_strLine);
				}
			}

			break;
		case u_mtext:
			{
				//AD_MTextData* _pSplineTemp = (AD_MTextData*)g_vecUnit[_i];
				//DrawElementMText(memDC_ ,_pSplineTemp);
			}

			break;
		default:
			break;

		}
	}

	CFileTxt _fileTemplate;
	_fileTemplate.CreateFileTxt(_strFile);
	_fileTemplate.WriteLine(_vecLine);
	_fileTemplate.CloseFile();

	AddTFileList(_strFile);
}