Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  C++ API IGetChildren

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS
  
PLM TechnologieForum Essen
Autor Thema:  C++ API IGetChildren (494 mal gelesen)
saske
Mitglied
Dipl.-Ing.

Sehen Sie sich das Profil von saske an!   Senden Sie eine Private Message an saske  Schreiben Sie einen Gästebucheintrag für saske

Beiträge: 2
Registriert: 15.02.2005

erstellt am: 16. Feb. 2005 08:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo an Alle,

Ich habe ein Problem mit der C++ API für SWXSolidWorks. Ich benutzte das VS 6 und benötige die Namen aller Kinder in einer Assembly. So weit so gut, es gibt da auch ein Beispiel in der Hilfe zur API und auf der Webseite von SWXSolidWorks. Das Problem ist sie laufen bei mir nicht. Wenn ich mich an die Hilfe Halte und die "sldworks.tlb" einbinde kann ich die Beispiele nicht compilieren. Fehler -> LPCOMPONENT unbekannter Bezeichner. Nutze ich hingegen die CComQIPtr Funktion läuft alles prima aber ich kann das ChildArray, bis auf das erste Kind [0], nicht auslesen. Hat jemand eine Lösung für mich? Muss ich die "sldworks.tlb" anders einbinden. Oder sieht jemand meinen Fehler im Code ?

Gruß Bernhard
//+++++++++Funktion+++++++++++++++++++++++++++

CoInitialize(NULL);      //Initialize COM

CComPtr<ISldWorks> swApp; //Use ATL smart pointers

HRESULT hres = swApp.CoCreateInstance(__uuidof(SldWorks), NULL, CLSCTX_LOCAL_SERVER);   

CComPtr<IModelDoc2>  pModel;

CComQIPtr<IConfiguration> pConf;
CComQIPtr<IComponent2> pComp;

swApp->get_IActiveDoc2(&pModel);
pModel->IGetActiveConfiguration(&pConf);
pConf->IGetRootComponent2(&pComp);



int childCount;
pComp->IGetChildrenCount(&childCount);

CComQIPtr<IComponent2> Children;
pComp->IGetChildren(&Children);

//Leseversuch über Debug
BSTR getName;

for (int k = 0; k < childCount-1; k++ ){
Children[k].get_Name2(&getName);
}
//+++++++++++++++++Funktion+++++++++++++++++++++++

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

oliver_
Mitglied
Softwareentwickler


Sehen Sie sich das Profil von oliver_ an!   Senden Sie eine Private Message an oliver_  Schreiben Sie einen Gästebucheintrag für oliver_

Beiträge: 11
Registriert: 15.03.2004

erstellt am: 16. Feb. 2005 11:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für saske 10 Unities + Antwort hilfreich

Hi,

versuch es doch mal mit LPCOMPONENT2. 

LPCOMPONENT2  pRootComponent = NULL;
pConf->IGetRootComponent2(&pRootComponent) ;

Gruß Oliver

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

waldi
Mitglied
 Softwerker


Sehen Sie sich das Profil von waldi an!   Senden Sie eine Private Message an waldi  Schreiben Sie einen Gästebucheintrag für waldi

Beiträge: 272
Registriert: 07.08.2001

SW 2006 SP4

erstellt am: 16. Feb. 2005 14:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für saske 10 Unities + Antwort hilfreich

Hi,

IGetChildren liefert ein Array der Grösse childCount, du übergibst allerdings nur ein Element, also ein Array der Grösse 1. Deswegen kommst du auch nur an das erste Element.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

saske
Mitglied
Dipl.-Ing.

Sehen Sie sich das Profil von saske an!   Senden Sie eine Private Message an saske  Schreiben Sie einen Gästebucheintrag für saske

Beiträge: 2
Registriert: 15.02.2005

erstellt am: 16. Feb. 2005 16:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke allen für die Hinweise!

Das Problem ist gelöst!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz