Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  api zu langsam beim selektieren von features

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
  
Konfigurieren, dokumentieren & Kosten optimieren - Produktdokumentation zur Angebotserstellung mit DraftSight
Autor Thema:  api zu langsam beim selektieren von features (1362 mal gelesen)
ulix
Mitglied
Produktionsingenieur


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

Beiträge: 68
Registriert: 22.01.2003

SWX 2004 Office Educ.

erstellt am: 18. Okt. 2004 17:15    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 habe hier folgendes codeschnipsel, dass mir alle bohrungen mit einem maximalradius selektiert

        ElseIf swFeatTypeName = swTnHoleWzd Then
            If check_hole.Value = 1 Then
                Set swFeatData = swFeat.GetDefinition
                nRadius = swFeatData.Diameter
                nMinRadius = inp_hole.Text / 1000
                If nRadius <= nMinRadius Then
                    bRet = swFeat.Select(True)
                End If
            End If

das problem ist nun, dass das ziemlich (extrem...) langsam ist. kann man das nicht beschleunigen? ich vermute mal, dass nicht das skript der flaschenhals sondern SWXSolidWorks beim "grafischen" anzeigen der selektion ist.

gibt es keine moeglichkeit, die selektion nur auf skriptseite zu machen (z.b. alle betroffenen features in ein array laden, ohne dies auch grafisch anzuzeigen?).

leider bin ich immer noch SWXSolidWorks APIProgrammier- und Anwendungsschnittstelle (Application Programming Interface) anfaenger... ebenso arbeite ich mich erst gerade in vb ein.

gruss, daniel

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

PASCAM
Mitglied
Diplom Informatiker


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

Beiträge: 67
Registriert: 25.11.2002

erstellt am: 20. Okt. 2004 07:53    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 ulix 10 Unities + Antwort hilfreich

Hallo Daniel,

Frage hierzu: Ist das Beispiel aus VBA in SWXSolidWorks oder VB6?
Was heisst langsam? Wieviel Bohrungen gilt es zu selektieren?

Gruss, Ralph

------------------
PASCAM Ralph Müller
Softwareentwicklung

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

ulix
Mitglied
Produktionsingenieur


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

Beiträge: 68
Registriert: 22.01.2003

SWX 2004 Office Educ.

erstellt am: 20. Okt. 2004 10:04    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

salü ralph,

vb6. zu langsam heisst: wenn ich dasselbe mit intelligent auswaehlen (bzw. suchen/modifizieren/auswaehlen) mache findet er mir die bohrungen viel schneller (mit diesem skript geht es ca. pro bohrung 0,5 sek). klar bei wenigen bohrungen ist das kein problem, aber das vollstaendige skript sucht mit dem gleichen algorithmus auch nach anderen features.

bevor du dich fragst, weshalb ich nicht einfach die SWXSolidWorks funktion nehme: das skript fuehrt noch mehr operationen durch und soviel ich weiss, kann ich nicht auf dieses "intelligent auswaehlen" per APIProgrammier- und Anwendungsschnittstelle (Application Programming Interface) zugreifen, daher muss ich mir meinen eigenen weg suchen um die features zu selektieren.

ich hoffe ich konnte das einigermassen verständlich formulieren.

gruess, daniel

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

PASCAM
Mitglied
Diplom Informatiker


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

Beiträge: 67
Registriert: 25.11.2002

erstellt am: 20. Okt. 2004 10:38    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 ulix 10 Unities + Antwort hilfreich

Hallo Daniel,

jetzt kommen wir der Sache auf die Spur.
Du nimmst also VB6 und wie ich vermnute laeuft Dein Programm nicht als AddIn, sondern extern (als EXE oder in der VB6-IDE).
Und darin liegt das Problem (es liegt nicht an SWXSolidWorks, aondern am Systemaufbau!):
Wenn Du aus Deiner VB6-EXE einen Methode/Property eines SWXSolidWorks-Objektes aufrufst, muss das alles "gemarshalled" werden, d.h. das Betriebssystem muss die Parameter kapseln, Speicher ueber Processgrenzen hinweg kopieren, in SWXSolidWorks wieder entkapseln, den Systemaufruf machen und wieder das ganez wieder zurueck. Puh.
Ich hab die Erfahrung gemacht, dass das ca. 5-30 mal langsammer ist, als wenn der identische VB6-Code als AddIn in SWXSolidWorks als DLL laeuft.
Uebrigens mit C++ holst Du nochmals so Faktor 2-3 heraus.
An die Performance der SWXSolidWorks-Funktion kommst nicht ran, da die natuerlich ganz anders auf die Daten zugreifen koennen.
Nutze auch solche Methoden wie SetBlockingState etc., das kann auch noch was aus machen.

Gruss, Ralph

------------------
PASCAM Ralph Müller
Softwareentwicklung

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

ulix
Mitglied
Produktionsingenieur


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

Beiträge: 68
Registriert: 22.01.2003

SWX 2004 Office Educ.

erstellt am: 21. Okt. 2004 13:40    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

sali,

recht hast du!!!

hab mir mal kurz angeschaut, wie ich das hinkriege mit dem erstellen der dll, soweit reichen meine kenntnisse (noch) nicht. hast du ev. einen tip wie ich aus einem vb6 code eine dll hinkriege. habe gesehen im SWXSolidWorks helpfile gesehen, dass es tools gibt fuer die addin erstellung, leider nicht fuer vb6. hast du damit erfahrung?

gruess daniel

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

Axel
Mitglied
 


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

Beiträge: 169
Registriert: 05.09.2000

erstellt am: 22. Okt. 2004 10:28    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 ulix 10 Unities + Antwort hilfreich

Moin Daniel,

du kannst deinen Code auch einfach in ein VBA-Makro kopieren. Das läuft etwa genauso schnell wie eine ActiveX-DLL.

Was du noch machen kannst ist natürlich ein Object-Array zu füllen und anschließend alle in einer neuen Schleife selektieren lassen. Das dürfte aber keine Beschleunigung bringen, dafür aber deinen Speicher platzen lassen.

Axel

------------------

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

PASCAM
Mitglied
Diplom Informatiker


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

Beiträge: 67
Registriert: 25.11.2002

erstellt am: 22. Okt. 2004 14:58    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 ulix 10 Unities + Antwort hilfreich


Projekt1.zip

 
Hallo Daniel,

Anbei ein Beispielproejkt in VB6. Die Klasse Class1 linkt sich in SWXSolidWorks ein. Einfach Projekt kompilieren und Dll in SWXSolidWorks ziehen (Drag&Drop), damit erfolgt die Registrierung automatisch.

Viel Spass, Ralph

------------------
PASCAM Ralph Müller
Softwareentwicklung

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

ulix
Mitglied
Produktionsingenieur


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

Beiträge: 68
Registriert: 22.01.2003

SWX 2004 Office Educ.

erstellt am: 22. Okt. 2004 15: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

           

manchmal staun ich ob euch jungs!
echt klasse! danke pascam und axel.

werde beides mal austesten, sobald
ich wieder etwas mehr zeit fuer dieses
projekt habe

           

schoenes wochenende, gruess daniel

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