diff --git a/modules/mol/base/pymod/export_editors.cc b/modules/mol/base/pymod/export_editors.cc index 6dfe5e837402828563dc96a96020c06c0d2d6a37..7ac51a75e0fe8459604c7fa90b23eafaeb26c45f 100644 --- a/modules/mol/base/pymod/export_editors.cc +++ b/modules/mol/base/pymod/export_editors.cc @@ -22,7 +22,10 @@ using namespace boost::python; #include <ost/mol/mol.hh> - +#include <ost/mol/impl/entity_impl.hh> +#include <ost/mol/impl/chain_impl.hh> +#include <ost/mol/impl/residue_impl.hh> +#include <ost/mol/impl/atom_impl.hh> using namespace ost; using namespace ost::mol; @@ -175,9 +178,18 @@ void set_pos(XCSEditor& e, object o1, object o2, bool trans) } std::map<unsigned long,AtomHandle> amap; - EntityHandle eh=e.GetEntity(); - for(AtomHandleIter ait=eh.AtomsBegin(), aite=eh.AtomsEnd(); ait!=aite; ++ait) { - amap[(*ait).GetIndex()]=*ait; + impl::EntityImplPtr ei=e.GetEntity().Impl(); + for(impl::ChainImplList::iterator cit=ei->GetChainList().begin(); + cit!=ei->GetChainList().end();++cit) { + for (impl::ResidueImplList::iterator rit = (*cit)->GetResidueList().begin(), + ret = (*cit)->GetResidueList().end(); rit != ret; ++rit) { + + for (impl::AtomImplList::iterator ait = (*rit)->GetAtomList().begin(), + aet = (*rit)->GetAtomList().end(); ait != aet; ++ait) { + + amap[(*ait)->GetIndex()]=*ait; + } + } } AtomHandleList alist; diff --git a/modules/mol/base/pymod/export_entity.cc b/modules/mol/base/pymod/export_entity.cc index 6d56e7db13fb7e7e32baed55a474636d28b24d7b..538921e2b7f1c7d8fc4c752584c8b665f0d0050c 100644 --- a/modules/mol/base/pymod/export_entity.cc +++ b/modules/mol/base/pymod/export_entity.cc @@ -21,6 +21,11 @@ using namespace boost::python; #include <ost/mol/entity_view.hh> +#include <ost/mol/impl/entity_impl.hh> +#include <ost/mol/impl/chain_impl.hh> +#include <ost/mol/impl/residue_impl.hh> +#include <ost/mol/impl/atom_impl.hh> + #include <ost/mol/query.hh> #include <ost/mol/mol.hh> #include "bounds.hh" @@ -85,12 +90,20 @@ PyObject* get_pos2(EntityHandle& entity, bool id_sorted) nad[2]=static_cast<npy_float>(pos[2]); } } else { - for(AtomHandleIter it=entity.AtomsBegin();it!=entity.AtomsEnd();++it,nad+=3) { - geom::Vec3 pos=(*it).GetPos(); - nad[0]=static_cast<npy_float>(pos[0]); - nad[1]=static_cast<npy_float>(pos[1]); - nad[2]=static_cast<npy_float>(pos[2]); - } + impl::EntityImplPtr ei=entity.Impl(); + for(impl::ChainImplList::iterator cit=ei->GetChainList().begin(); + cit!=ei->GetChainList().end();++cit) { + for (impl::ResidueImplList::iterator rit = (*cit)->GetResidueList().begin(), + ret = (*cit)->GetResidueList().end(); rit != ret; ++rit) { + + for (impl::AtomImplList::iterator ait = (*rit)->GetAtomList().begin(), + aet = (*rit)->GetAtomList().end(); ait != aet; ++ait, nad+=3) { + + geom::Vec3 pos=(*ait)->TransformedPos(); + nad[0]=static_cast<npy_float>(pos[0]); + nad[1]=static_cast<npy_float>(pos[1]); + nad[2]=static_cast<npy_float>(pos[2]); + }}} } return na; }