간단하게 dxf (캐드 도면 화일)을 만들 었습니다.
라인, 폴리라인, 원, 글자등의 요소를 함수로 만들어 dxf 코드를 출력 하게 하였습니다
그런데, 각 함수 마다, 화일을 open, close를 하게 하였는데,
출력 하는 개체들이 많아지니, 프로그램이 무한정 느려 지네요.
아마도 함수 호출 마다 화일을 open, close 해서 그런듯 한데..
ofstream 을 한번에 열고 닫게 할수가 있나요??
=========아래와 같이 코딩을 하였습니다.============
main.cpp
DxfBegin() ;
DxfCircle(1.5, 10.2, 50.2);
DxfEnd()
별도의 DxfWrite.cpp 화일 입니다.
void DxfBegin() {
// Creation of an output stream object in text mode.
// Header section of every dxf file.
ofstream To_Dxf(AsDxfSaveFileName.c_str(), ios::out);
To_Dxf << 0 << endl;
To_Dxf << "SECTION" << endl;
To_Dxf << 2 << endl;
To_Dxf << "ENTITIES" << endl;
To_Dxf.close();
}
void DxfEnd() {
// Creation of an output stream objet in text mode.
// end of sequence objects of dxf file.
ofstream To_Dxf(AsDxfSaveFileName.c_str(), ios::app);
To_Dxf << 0 << endl;
To_Dxf << "ENDSEC" << endl;
To_Dxf << 0 << endl;
To_Dxf << "EOF";
To_Dxf.close();
}
void DxfCircle(double radius, double x, double y) {
// Propeties of a circle not bound in any AutoCAd version
// In AutoCAD 2000 we can have more less 4000 lines of code here.
// Creation of an output stream objet in text mode.
ofstream To_Dxf(AsDxfSaveFileName.c_str(), ios::app);
// Draw the circle
To_Dxf << 0 << endl;
To_Dxf << "CIRCLE" << endl;
To_Dxf << 8 << endl;
To_Dxf << 0 << endl; // Layer number (default layer in autocad)
To_Dxf << 10 << endl; // XYZ is the Center point of circle
To_Dxf << x << endl; // X in UCS (User Coordinate System)coordinates
To_Dxf << 20 << endl;
To_Dxf << y << endl; // Y in UCS (User Coordinate System)coordinates
To_Dxf << 30 << endl;
To_Dxf << 0.0 << endl; // Z in UCS (User Coordinate System)coordinates
To_Dxf << 40 << endl;
To_Dxf << radius << endl; // radius of circle
To_Dxf.close();
}
여기서
ofstream To_Dxf(AsDxfSaveFileName.c_str(), ios::app);
To_Dxf.close();
를 main.cpp 에서 한번 열고 닫기 하고..
별도의 화일에 있는 함수에서는 화일을 열고 닫기를 하지 않는 방법이 있나요?
주변에 물어볼 사람이 전무 하므로 코드가 간단 하면, 자세히 알려 주시면 좋겠습니다.
미리 감사 드립니다.