Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  C#
  Typen Problem

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
Autor Thema:  Typen Problem (3081 mal gelesen)
_InvasoR_
Mitglied
student


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

Beiträge: 55
Registriert: 17.03.2005

erstellt am: 26. Apr. 2005 15:14    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

Hi!
Ich Programmiere über die API-Schnittstelle bei SolidWorks,
Da gibts sone tolle API-Help... Da sind aber Meistens nur Beispiele in Visual Basic drin und bei VB gibts nen Datentyp der sich Variant schimpft. nun mein Problem:
in dem Beispiel wird ein Array mit über
die Variant Variable angelegt ( Dim vBodyArr  As Variant ).
wie kann ich das in c umkonvertieren oder in c anlegen ?
SldWorks.Body2 [] vBodyArr; geht zwar irgendwie aber bei späterer Verwendung in der Funktion (vBodyArr = ( SldWorks.Body2[])Part.GetBodies( -1 ); ) kommt bei ausführung eine  'System.InvalidCastException' .
woran könnte das liegen ?

Gruß Robin

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

FlorianGerteisz
Mitglied
IT-Anwendungsentwickler


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

Beiträge: 43
Registriert: 28.04.2005

erstellt am: 28. Apr. 2005 16: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 Nur für _InvasoR_ 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von _InvasoR_:
Hi!
Ich Programmiere über die API-Schnittstelle bei SolidWorks,
Da gibts sone tolle API-Help... Da sind aber Meistens nur Beispiele in Visual Basic drin und bei VB gibts nen Datentyp der sich Variant schimpft. nun mein Problem:
in dem Beispiel wird ein Array mit über
die Variant Variable angelegt ( Dim vBodyArr  As Variant ).
wie kann ich das in c umkonvertieren oder in c anlegen ?
SldWorks.Body2 [] vBodyArr; geht zwar irgendwie aber bei späterer Verwendung in der Funktion (vBodyArr = ( SldWorks.Body2[])Part.GetBodies( -1 ); ) kommt bei ausführung eine  'System.InvalidCastException' .
woran könnte das liegen ?

Gruß Robin


Hab ein kleines Beispiel für dich gemacht:

Code:

==8<=== BEGIN C# CODE =====================================

using System;
using System.Diagnostics;
using SwConst;
using System.Runtime.InteropServices;


namespace SWXSpielwiese
{
    public class SolidWorks
    {
        private SldWorks.ISldWorks sldworks = null;

public SolidWorks()
{
    try
    {
        sldworks = new SldWorks.SldWorksClass();
    }
    catch(Exception ex)
    {
        Debug.WriteLine(ex);
    }
}

public void Problem20050428a()
{
    SldWorks.PartDoc partdoc = null;
    System.Array bodiesObject = null;
            string filename = "C:\\test\\test.sldprt";

    partdoc =  (SldWorks.PartDoc)this.sldworks.OpenDoc(filename, Convert.ToInt32(swDocumentTypes_e.swDocPART));

    if(partdoc != null)
    {
        try
                {
    bodiesObject = (System.Array)partdoc.GetBodies2(Convert.ToInt32(SwConst.swBodyType_e.swAllBodies), false);

    foreach(SldWorks.body2 body in bodiesObject)
    {
        Debug.WriteLine(body.Name);
    }
}
catch(Exception ex)
{
    Debug.WriteLine(ex);
}
            }
        }
    }
}

==8<===  END C# CODE  =====================================



Hoffe es hilft die weiter?!

Entscheidend ist, dass du mit GetBodies2 ein System.Array mit allen Bodies zurück bekommst.

gruß
Flo

[Diese Nachricht wurde von FlorianGerteisz am 29. Apr. 2005 editiert.]

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

_InvasoR_
Mitglied
student


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

Beiträge: 55
Registriert: 17.03.2005

erstellt am: 29. Apr. 2005 09:07    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

Suuper dickes Dankeschön !
Mitlerweile hab ich zwar auch ne Lösung gefunden wie ich an die Bodies im Array dran komme, 

System.Object soBodyArr = Part.GetBodies( swAllBodies );
System.Array Arr = (System.Array)soBodyArr ;
SldWorks.Body2 Body = (SldWorks.Body2)ARR.GetValue(1);

aber lang nicht so schön wie Deine.

Vielen Dank für Deine Mühe

Gruß Robin

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

FlorianGerteisz
Mitglied
IT-Anwendungsentwickler


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

Beiträge: 43
Registriert: 28.04.2005

erstellt am: 29. Apr. 2005 09:33    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 _InvasoR_ 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von _InvasoR_:

System.Object soBodyArr = Part.GetBodies( swAllBodies );
System.Array Arr = (System.Array)soBodyArr ;
SldWorks.Body2 Body = (SldWorks.Body2)ARR.GetValue(1);

Ist im Prinzip die gleiche Lösung;-)

Viel Spass noch mit C# und der SolidWorks-API!

gruß
Flo

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)2023 CAD.de | Impressum | Datenschutz