Add id() and is_a() functions to entity_instance class Make filename argument to open() function optional

This commit is contained in:
Thomas Krijnen
2014-07-19 13:57:47 +02:00
parent f7adeb9cc1
commit d4e4ca3a2a
4 changed files with 19 additions and 4 deletions
+7
View File
@@ -30,6 +30,13 @@ IfcParse::IfcUntypedEntity::IfcUntypedEntity(IfcAbstractEntity* e) {
entity = e; entity = e;
_type = e->type(); _type = e->type();
} }
unsigned int IfcParse::IfcUntypedEntity::id() const {
if (entity->file) {
return static_cast<unsigned int>(entity->id());
} else {
throw IfcException("Entity not bound to a file");
}
}
bool IfcParse::IfcUntypedEntity::is(IfcSchema::Type::Enum v) const { bool IfcParse::IfcUntypedEntity::is(IfcSchema::Type::Enum v) const {
IfcSchema::Type::Enum _ty = _type; IfcSchema::Type::Enum _ty = _type;
if (v == _ty) return true; if (v == _ty) return true;
+3
View File
@@ -17,10 +17,13 @@ namespace IfcParse {
public: public:
IfcUntypedEntity(const std::string& s); IfcUntypedEntity(const std::string& s);
IfcUntypedEntity(IfcAbstractEntity* e); IfcUntypedEntity(IfcAbstractEntity* e);
bool is(IfcSchema::Type::Enum v) const; bool is(IfcSchema::Type::Enum v) const;
IfcSchema::Type::Enum type() const; IfcSchema::Type::Enum type() const;
bool is_a(const std::string& s) const; bool is_a(const std::string& s) const;
std::string is_a() const; std::string is_a() const;
unsigned int id() const;
unsigned int getArgumentCount() const; unsigned int getArgumentCount() const;
IfcUtil::ArgumentType getArgumentType(unsigned int i) const; IfcUtil::ArgumentType getArgumentType(unsigned int i) const;
ArgumentPtr getArgument(unsigned int i) const; ArgumentPtr getArgument(unsigned int i) const;
+3
View File
@@ -17,10 +17,13 @@ namespace IfcParse {
IfcSchema::Type::Enum _type; IfcSchema::Type::Enum _type;
public: public:
IfcUntypedEntity(const std::string& s); IfcUntypedEntity(const std::string& s);
bool is(IfcSchema::Type::Enum v) const; bool is(IfcSchema::Type::Enum v) const;
IfcSchema::Type::Enum type() const; IfcSchema::Type::Enum type() const;
bool is_a(const std::string& s) const; bool is_a(const std::string& s) const;
std::string is_a() const; std::string is_a() const;
unsigned int id() const;
unsigned int getArgumentCount() const; unsigned int getArgumentCount() const;
IfcUtil::ArgumentType getArgumentType(unsigned int i) const; IfcUtil::ArgumentType getArgumentType(unsigned int i) const;
ArgumentPtr getArgument(unsigned int i) const; ArgumentPtr getArgument(unsigned int i) const;
+6 -4
View File
@@ -43,12 +43,14 @@ class entity_instance:
self.wrapped_data.set_argument(idx, entity_instance.map_value(value)) self.wrapped_data.set_argument(idx, entity_instance.map_value(value))
def __len__(self): return len(self.wrapped_data) def __len__(self): return len(self.wrapped_data)
def __repr__(self): return repr(self.wrapped_data) def __repr__(self): return repr(self.wrapped_data)
def is_a(self, *args): return self.wrapped_data.is_a(*args)
def id(self): return self.wrapped_data.id()
class file: class file:
instances = [] instances = []
def __init__(self, f): def __init__(self, f=None):
self.wrapped_data = f self.wrapped_data = f or ifc_wrapper.file()
def create_entity(self,type,*args,**kwargs): def create_entity(self,type,*args,**kwargs):
e = entity_instance(ifc_wrapper.entity_instance(type)) e = entity_instance(ifc_wrapper.entity_instance(type))
attrs = list(enumerate(args)) + \ attrs = list(enumerate(args)) + \
@@ -94,8 +96,8 @@ class guid:
return '{%s-%s-%s-%s-%s}'%(g[:8], g[8:12], g[12:16], g[16:20], g[20:]) return '{%s-%s-%s-%s-%s}'%(g[:8], g[8:12], g[12:16], g[16:20], g[20:])
def open(fn): def open(fn=None):
return file(ifc_wrapper.open(fn)) return file(ifc_wrapper.open(fn)) if fn else file()
def create_shape(inst, settings): return ifc_wrapper.create_shape(inst.wrapped_data, settings) def create_shape(inst, settings): return ifc_wrapper.create_shape(inst.wrapped_data, settings)