void plLODAvatarComponent::RemoveBone(int index) { int group = GetCurGroupIdx(); int boneIdx = GetStartIndex(group) + index; fCompPB->Delete(ParamID(kBoneList), boneIdx, 1); fCompPB->SetValue(ParamID(kGroupTotals), 0, fCompPB->GetInt(ParamID(kGroupTotals), 0, group) - 1, group); }
/////////////////////////////////////////////////////////////////////////////////////////////// // IExtendGeoEdit-Methoden // -------------------------------------------------------------------------------------------- // das lONr-Objekt rechtwinklig machen // [in] rfLine Modus für Bestimmung der Bezugsstrecke // [in] dEps90 Epsilon für die Winkel nahe" 90° bzw. "nahe" 270° // [in] dEps180 Epsilon für die Winkel nahe" 180° // [in] dEpsCom Epsilon für die Stützpunktgleichheit mit den angrenzenden Objekten // [in] pEnumIn ObjNummern der Objekte, die auf eine gemeinsame Strecke getestet werden // sollen // [out] ppEnumOut ObjNummern der Objekte, die verändert wurden STDMETHODIMP_ (HRESULT) CGeoEditExtension::MakeRectangular_ONr (long lONr, RefLine rfLine, double dEps90, double dEps180, double dEpsCom, IEnumLONG* pEnumIn, IEnumLONG** ppEnumOut) { long lStartInd; // Startindex GetStartIndex (lONr, rfLine, pEnumIn, lStartInd); try { // eine (möglicherweise bis jetzt) aktive IEditOperation abmelden if (m_wEditOper.IsValid()) { m_wEditOper->SetEditExtensionSite (NULL); m_wEditOper.Assign(NULL); } WEditOperation wEditOper (CLSID_ObjectModify); // throws_com_error THROW_FAILED_HRESULT (wEditOper->SetEditExtensionSite (this)); m_wEditOper = wEditOper; int iKInd = 0; // Bezugsstrecke ist bei externem Aufruf immer Teil der Außenkontur WModifyOperation wModOper (CLSID_MakeRectangular); // throws_com_error // die anschließende Befehlszeile ersetzt die 3 nachfolgend herauskommentierten Zeilen; // die aktuelle EditierOperation m_wEditOper (u.z. ObjectModify) wird durch QueryInterface // nach dem Interface-ID von IModifyClassSite gefragt, der in pISite bereitgestellt wird; // IModifyClassSite ist das Interface, das die CObjectModify-Klasse für die // ModifyOperation's (u.a. MakeRectangular) bereitstellt, d.h. das Interface, über das z.B. // MakeRectangular die CObjectModify-Klasse rufen kann WModifyClassSite pISite (m_wEditOper); // nächste Zeile ist für CreateInterfaceTO() notwendig THROW_FAILED_HRESULT (wModOper->SetModifyClassSite(this, pISite)); THROW_FAILED_HRESULT (wModOper->Rectangularity (lONr, iKInd, lStartInd, dEps90, dEps180, dEpsCom, (IEnumObjectsByNumber**)ppEnumOut)); // ModifyOperation "Rechtwinkligkeit" wieder abmelden if (wModOper.IsValid()) { wModOper->SetModifyClassSite (NULL, NULL); wModOper.Assign (NULL); } // EditOperation "ObjektModifizierung" wieder abmelden if (m_wEditOper.IsValid()) { m_wEditOper->SetEditExtensionSite (NULL); m_wEditOper.Assign(NULL); } } catch (_com_error& e) { return _COM_ERROR (e); } return S_OK; } // MakeRectangular_ONr
int plLODAvatarComponent::GetEndIndex(int group) { return GetStartIndex(group) + fCompPB->GetInt(ParamID(kGroupTotals), 0, group); }