本文整理汇总了C++中OBAtom::GetId方法的典型用法代码示例。如果您正苦于以下问题:C++ OBAtom::GetId方法的具体用法?C++ OBAtom::GetId怎么用?C++ OBAtom::GetId使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OBAtom
的用法示例。
在下文中一共展示了OBAtom::GetId方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: AddAtomLabels
bool OBDepict::AddAtomLabels(AtomLabelType type)
{
d->painter->SetPenColor(OBColor("red"));
d->painter->SetFillColor(OBColor("red"));
d->painter->SetFontSize((int)(GetFontSize() * 0.8));// smaller text
OBAtomIterator i;
for (OBAtom *atom = d->mol->BeginAtom(i); atom; atom = d->mol->NextAtom(i)) {
vector3 pos(atom->GetVector());
std::stringstream ss;
switch (type) {
case AtomId:
ss << atom->GetId();
d->painter->DrawText(pos.x(), pos.y(), ss.str());
break;
case AtomSymmetryClass:
ss << GetAtomSymClass(atom);
d->painter->DrawText(pos.x(), pos.y(), ss.str());
break;
case AtomIndex:
ss << atom->GetIdx();
d->painter->DrawText(pos.x(), pos.y(), ss.str());
break;
default:
break;
}
}
return true;
}
示例2: testIdsNewAtom1
// OBMol::NewAtom()
void testIdsNewAtom1()
{
OBMol mol;
for (int i = 0; i < 10; ++i) {
OBAtom *atom = mol.NewAtom();
OB_REQUIRE(atom->GetId() == i);
}
OB_REQUIRE( mol.GetAtomById(0) );
OB_REQUIRE( mol.GetAtomById(4) );
OB_REQUIRE( mol.GetAtomById(9) );
OB_REQUIRE( !mol.GetAtomById(10) );
OB_REQUIRE( mol.GetAtomById(0)->GetId() == 0 );
OB_REQUIRE( mol.GetAtomById(4)->GetId() == 4 );
OB_REQUIRE( mol.GetAtomById(9)->GetId() == 9 );
}
示例3: testIdsNewAtom2
// OBMol::NewAtom(unsigned long id)
void testIdsNewAtom2()
{
OBMol mol;
for (int i = 0; i < 10; ++i) {
OBAtom *atom = mol.NewAtom(i*2);
OB_REQUIRE(atom->GetId() == i*2);
}
OB_REQUIRE( mol.GetAtomById(0) );
OB_REQUIRE( !mol.GetAtomById(7) );
OB_REQUIRE( mol.GetAtomById(8) );
OB_REQUIRE( !mol.GetAtomById(9) );
OB_REQUIRE( mol.GetAtomById(18) );
OB_REQUIRE( !mol.GetAtomById(19) );
OB_REQUIRE( mol.GetAtomById(0)->GetId() == 0 );
OB_REQUIRE( mol.GetAtomById(8)->GetId() == 8 );
OB_REQUIRE( mol.GetAtomById(18)->GetId() == 18 );
}
示例4: IsOnSameAtom
//.........这里部分代码省略.........
// both on end atom?
if (a->IsConnected(end) && b->IsConnected(end))
return true;
return false;
} else {
if (a) {
// b atom not found, could be a deleted hydrogen...
if (a->IsConnected(begin)) {
// a is connected to begin. if this is the atom missing a hydrogen, return false
if (begin->GetValence() == 2)
return true;
// check if the end atom really is missing an atom
if (end->GetValence() != 2) {
obErrorLog.ThrowError(__FUNCTION__,
"OBCisTransStereo::IsOnSameAtom : id2 is not valid and is not a missing hydrogen.", obError);
return false;
}
// inform user we are treating id2 as deleted hydrogen
obErrorLog.ThrowError(__FUNCTION__,
"OBCisTransStereo::IsOnSameAtom : Atom with id2 doesn't exist anymore, must be a (deleted) hydrogen.", obInfo);
} else if (a->IsConnected(end)) {
// a is connected to end. again, if this is the atom missing a hydrogen, return false
if (end->GetValence() == 2)
return true;
// check if the begin atom really is missing an atom
if (begin->GetValence() != 2) {
obErrorLog.ThrowError(__FUNCTION__,
"OBCisTransStereo::IsOnSameAtom : id2 is not valid and is not a missing hydrogen.", obError);
return true;
}
// inform user we are treating id2 as deleted hydrogen
obErrorLog.ThrowError(__FUNCTION__,
"OBCisTransStereo::IsOnSameAtom : Atom with id2 doesn't exist, must be a (deleted) hydrogen.", obInfo);
} else {
obErrorLog.ThrowError(__FUNCTION__,
"OBCisTransStereo::IsOnSameAtom : Atom with id1 isn't connected to the begin or end atom.", obError);
return true;
}
} else if (b) {
// a atom not found, could be a deleted hydrogen...
if (b->IsConnected(begin)) {
// b is connected to begin. if this is the atom missing a hydrogen, return false
if (begin->GetValence() == 2)
return true;
// check if the end atom really is missing an atom
if (end->GetValence() != 2) {
obErrorLog.ThrowError(__FUNCTION__,
"OBCisTransStereo::IsOnSameAtom : id1 is not valid and is not a missing hydrogen.", obError);
return true;
}
// inform user we are treating id1 as deleted hydrogen
obErrorLog.ThrowError(__FUNCTION__,
"OBCisTransStereo::IsOnSameAtom : Atom with id1 doesn't exist, must be a (deleted) hydrogen.", obInfo);
} else if (b->IsConnected(end)) {
// a is connected to end. again, if this is the atom missing a hydrogen, return false
if (end->GetValence() == 2)
return true;
// check if the begin atom really is missing an atom
if (begin->GetValence() != 2) {
obErrorLog.ThrowError(__FUNCTION__,
"OBCisTransStereo::IsOnSameAtom : id1 is not valid and is not a missing hydrogen.", obError);
return true;
}
// inform user we are treating id2 as deleted hydrogen
obErrorLog.ThrowError(__FUNCTION__,
"OBCisTransStereo::IsOnSameAtom : Atom with id1 doesn't exist, must be a (deleted) hydrogen.", obInfo);
} else {
obErrorLog.ThrowError(__FUNCTION__,
"OBCisTransStereo::IsOnSameAtom : Atom with id1 isn't connected to the begin or end atom.", obError);
return true;
}
} else {
OBAtom *c = 0, *d = 0;
// no a & b, check the remaining ids which will reveal same info
for (int i = 0; i < 4; ++i) {
if ((m_cfg.refs.at(i) == id1) || (m_cfg.refs.at(i) == id2))
continue;
if (!c) {
c = mol->GetAtomById(m_cfg.refs.at(i));
} else {
d = mol->GetAtomById(m_cfg.refs.at(i));
}
}
if (!c || !d) {
obErrorLog.ThrowError(__FUNCTION__, "OBCisTransStereo::IsOnSameAtom : invalid stereochemistry!", obError);
return true;
}
if ((begin->GetValence() != 2) || (end->GetValence() != 2)) {
obErrorLog.ThrowError(__FUNCTION__, "OBCisTransStereo::IsOnSameAtom : invalid stereochemistry!", obError);
return true;
}
obErrorLog.ThrowError(__FUNCTION__,
"OBCisTransStereo::IsOnSameAtom : Atoms with id1 & id2 don't exist, must be a (deleted) hydrogens.", obInfo);
return IsOnSameAtom(c->GetId(), d->GetId());
}
}
return false;
}