Files
OpenSceneGraph/src/osgPlugins/dxf/dxfBlock.cpp
2005-11-17 15:03:51 +00:00

59 lines
1.6 KiB
C++

/* dxfReader for OpenSceneGraph Copyright (C) 2005 by GraphArchitecture ( grapharchitecture.com )
* Programmed by Paul de Repentigny <pdr@grapharchitecture.com>
*
* OpenSceneGraph is (C) 2004 Robert Osfield
*
* This library is provided as-is, without support of any kind.
*
* Read DXF docs or OSG docs for any related questions.
*
* You may contact the author if you have suggestions/corrections/enhancements.
*/
#include "dxfBlock.h"
#include "dxfFile.h"
#include "codeValue.h"
#include "dxfEntity.h"
using namespace std;
void
dxfBlock::assign(dxfFile* dxf, codeValue& cv)
{
string s = cv._string;
if (cv._groupCode == 0) {
if (_currentEntity && _currentEntity->done()) {
_currentEntity = new dxfEntity(s);
_entityList.push_back(_currentEntity);
} else if (_currentEntity) {
_currentEntity->assign(dxf, cv);
} else {
_currentEntity = new dxfEntity(s);
_entityList.push_back(_currentEntity);
}
} else if (_currentEntity) {
_currentEntity->assign(dxf, cv);
} else if (cv._groupCode != 0) {
double d = cv._double;
switch (cv._groupCode) {
case 2:
_name = s;
case 10:
_position.x() = d;
break;
case 20:
_position.y() = d;
break;
case 30:
_position.z() = d;
break;
default:
// dxf garble
break;
}
}
}
const osg::Vec3d& dxfBlock::getPosition() const { return _position; }