本文整理汇总了C++中OBUnitCell::FillUnitCell方法的典型用法代码示例。如果您正苦于以下问题:C++ OBUnitCell::FillUnitCell方法的具体用法?C++ OBUnitCell::FillUnitCell怎么用?C++ OBUnitCell::FillUnitCell使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OBUnitCell
的用法示例。
在下文中一共展示了OBUnitCell::FillUnitCell方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: WriteMolecule
bool MDFFFormat::WriteMolecule(OBBase* pOb, OBConversion* pConv)
{
//No surprises in this routine, cartesian coordinates are written out
//and if at least a single atom has information about constraints,
//then selective dynamics is used and the info is written out.
//The atoms are ordered according to their atomic number so that the
//output looks nice, this can be reversed by using command line flag "-xw".
//
OBMol* pmol = dynamic_cast<OBMol*>(pOb);
if (pmol == NULL) {
return false;
}
ostream& ofs = *pConv->GetOutStream();
OBMol mol(*pmol);
if(mol.HasData(OBGenericDataType::UnitCell))
{
OBUnitCell *uc = static_cast<OBUnitCell*>(mol.GetData(OBGenericDataType::UnitCell));
uc->FillUnitCell(&mol);
}
char buffer[BUFF_SIZE];
OBUnitCell *uc = NULL;
vector<vector3> cell;
const char * sortAtoms = pConv->IsOption("w", OBConversion::OUTOPTIONS);
const char * sortAtomsList = pConv->IsOption("u", OBConversion::OUTOPTIONS);
const char * writeIONS = pConv->IsOption("i", OBConversion::OUTOPTIONS);
// Create a list of ids. These may be sorted by atomic number depending
// on the value of keepOrder.
map<int, int> indl;
if (sortAtoms != NULL)
{
indl.clear();
for(int i = 0; i < 200; i++)
indl[i] = i;
}
if (sortAtomsList != NULL)
{
indl.clear();
vector<string> vs;
tokenize(vs, sortAtomsList);
for(int i = 0; i < vs.size(); i++)
indl[etab.GetAtomicNum(vs[i].c_str())] = i;
}
map<aindx, OBAtom *> amap;
FOR_ATOMS_OF_MOL(atom, mol)
{
aindx ndx;
ndx.index_param = indl[atom->GetAtomicNum()];
ndx.atom_index = atom->GetIndex();
amap[ndx] = &(*atom);
}