Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  GetComponents

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
  
FACTORY OF THE FUTURE - Von der traditionellen Fertigung zur vernetzten Fabrik
Autor Thema:  GetComponents (1668 mal gelesen)
anki
Mitglied



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

Beiträge: 25
Registriert: 26.01.2007

erstellt am: 01. Mrz. 2007 15:39    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!

Ich versuche in einer dll die Namen alle Components auszulesen. Ich wollte das mit der Funktion GetComponents machen. Aber leider funktioniert das nicht. Hier ein Stück von meinem Code:

Code:

CComPtr<IModelDoc2> swModel;
iSwApp->get_IActiveDoc2(&swModel);
CComPtr<IAssemblyDoc> swAssy;
swAssy=swModel;

long CompCount;

  // Anzahl der Bauteile ermitteln
  hres = swAssy->GetComponentCount(TRUE, &CompCount);
  if (hres==ERROR)
    ::MessageBox(NULL,_T("Error"), _T("Could not count Components!"), MB_OK);
  else
  {
    // Dynamisches Array für Bauteile anlegen
    IComponent2** Comp = new IComponent2*[CompCount];
    BSTR CompName;
 
    // Bauteile ermitteln
    hres = swAssy->IGetComponents(TRUE, CompCount, Comp);
    if (hres==ERROR)
      ::MessageBox(NULL,_T("Error"), _T("GetComponents failed!"), MB_OK);
    else
    {
      // Für jedes Bauteil den Namen auslesen
      for (long i = 1; i<=CompCount; ++i)
      {
        hres = Comp[i]->get_Name2(&CompName );
      }
    }
  }



Leider liefert GetComponentCount schon kein Ergebnis und die Error-MessageBox wird aufgerufen. Wenn ich die Anzahl der Components per Hand eintrage und GetComponentCount auskommentiere liefert auch GetComponents kein Ergebnis (also hres =Error). Kann mir da einer von euch weiter helfen?

Viele Grüße
Anne

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

nahe
Ehrenmitglied



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

Beiträge: 1747
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 01. Mrz. 2007 16:49    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 anki 10 Unities + Antwort hilfreich

Hallo Anne

ich bin leider kein C Programmierer aber schau doch mal in der
API-Online-Hilfe nach unter
SolidWorks API Help->Examples and Projects->C++ Examples->A - D->Traverse Assembly

------------------
Grüße
Heinz

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

Andreas Müller
Mitglied
Masch. Ing. HTL / Betriebsing. STV


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

Beiträge: 1151
Registriert: 11.04.2001

erstellt am: 01. Mrz. 2007 16:51    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 anki 10 Unities + Antwort hilfreich

Hi Anne.
Ich hab echt keine Ahnung von C++++++++, daher kann ich Deinen Code nicht richtig lesen und nachfolgendes mehr eine Vermutung.

Was ich aber vermisse, ist die Konfiguration als Objekt. Komponenten sind Bestandteile von Konfigurationen und können nicht direkt aus der Baugruppe gelesen werden! Dito mit GetComponentCount und allen anderen Component-Funktionen.

Baugruppe -> Konfiguration -> Komponente

Hoffentlich habe ich Dir helfen können.

------------------
Gruss
Andreas
bachmann engineering ag

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

anki
Mitglied



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

Beiträge: 25
Registriert: 26.01.2007

erstellt am: 01. Mrz. 2007 17:31    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

Vielen Dank für Eure Hilfe, aber leider hat sie mich noch nicht sehr viel weiter gebracht.

@Heinz: Ich kenne das Beispiel, aber ich würde es lieber mit GetComponents versuchen

@Andreas: Ich habe das GetComponentCount auch mal in einem VB-Makro aufgerufen, da hat es auch ohne Konfiguration funktioniert. Außerdem sind GetComponents und GetComponentCount ja auch keine Funktionen von Component, sondern von Assembly. Ich kenne mich in der API-Programmierung aber auch noch nicht so gut aus, vielleicht habe ich auch was falsch interpretiert.

Viele Grüße
anne

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

nahe
Ehrenmitglied



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

Beiträge: 1747
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 02. Mrz. 2007 06:30    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 anki 10 Unities + Antwort hilfreich

Hallo Anne

was mir an dem Code aufgefallen ist

------------------------------------------
CComPtr<IModelDoc2> swModel;
iSwApp->get_IActiveDoc2(&swModel);
CComPtr<IAssemblyDoc> swAssy;
swAssy=swModel;
------------------------------------------

wo wird "iSwApp" zugewiesen?
Kann es sein, dass auch "swModel" schon keinen Wert hat?

------------------
Grüße
Heinz

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

anki
Mitglied



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

Beiträge: 25
Registriert: 26.01.2007

erstellt am: 02. Mrz. 2007 10:19    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 Heinz,

ich habe das Add-In mit dem Wizard erstellt. In der Klassendeklaration wurde iSwApp als private Variable festgelegt, so dass ich darauf Zugriff habe. Dass swModel funktioniert sieht man auch an folgendem Code in meiner Datei, der ohne Probleme läuft:

Code:
hres = swModel->get_Extension(&swExtension);
hres = swExtension->SelectByID2(_T("Sonnenrad-1@Planetengetriebe"), _T("COMPONENT"), 0.005339457775965, -0.003051118729123, 0, False, 0, 0, 0, &selOK);

if (selOK == TRUE)
{
hres = swModel->get_ISelectionManager(&SelectionManager);
hres = SelectionManager->GetSelectedObject6 ( 1, 0, &CurComponent);
hres = swAssy->TranslateComponent( );
}


Gerade deswegen finde ich es ja auch so merkwürdig, dass GetComponentCount nicht funktioniert.

Viele Grüße
Anne

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