Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API Problem mit Events (VBA)

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
  
Technologietag mit Live-Bearbeitung in Seebach
Autor Thema:  API Problem mit Events (VBA) (1577 mal gelesen)
bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



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

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 19. Mrz. 2013 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


MacroFehler.zip

 
Hallo zusammen,

bin derzeit beim Versuch ein Macro (VBA) zu schreiben das mir das Speichern bzw. Speichern unter Event abfängt um Eigenschaftswerte zu prüfen bzw. zu setzten.

Das Macro wird automatisch mit SWX gestartet und läuft soweit bis ich z.B. kein Part mehr offen habe und nun ein neues Part erstellen will. Sollange noch ein Part offen ist gibt es keine Probleme, erst wenn das letzt Part auch geschlossen wird. (gilt auch für Assemblys)

Ist das ActiveDocChangeNotify Event vielleicht doch nicht die richtige Wahl um das aktive Modell sicher im ActiveDoc zu haben?

Wäre vielleicht das arbeiten mit dem "Öffnen-Event" (FileOpenNotify2) und "Neu-Event" (FileNewNotify2)besser geieignet?

Es sei zu erwähnen das ich mit Events bis dato noch nichts gemacht habe und sich meine VBA Kenntnisse auch in grenzen halten.

Ich weiß auch das das ganze mit einem Add In (.dll) bestimmt besser zu realisieren wäre aber von C++ oder VB habe ich noch weniger Ahnung als von VBA.

Im Anhang ist das Macro und ein Video mit der Fehlerreproduktion

Danke und Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

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

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



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

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 20. Mrz. 2013 10:50    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 bk.sc 10 Unities + Antwort hilfreich

Hallo Bernd,

ich kann den Ablauf inklusive Fehlermeldung nachstellen; ich hab auch nicht so viel Erfahrung mit den Ereignissen, in diesem Fall scheint es aber einfach so zu sein, dass du das Objekt in der ActiveDocChangeNotify überschreiben willst, wenn du alle Modelle geschlossen hast und dann wieder eins öffnest. Dabei wird das MyPert nicht neu initialisiert, sondern versucht zu überschreiben, das Objekt selbst in SolidWorks gibt es aber ja gar nicht mehr, weil du vorher die Modelle geschlossen hast.

Ich hab einen quick-and-dirty-Workaround dafür eingebaut, der zu funktionieren scheint: bevor du die Modellobjekte neu zuweist die einmal vorher auf Nothing setzen, damit die zerstört und dann neu initialisiert werden. Ob der Rest dann noch geht hab ich nicht mehr probiert 

[cod€]
Private Function swApp_ActiveDocChangeNotify() As Long
   
    If swApp.ActiveDoc.GetType = swDocPART Then
        Set MyPart = Nothing
        Set MyPart = swApp.ActiveDoc
    ElseIf swApp.ActiveDoc.GetType = swDocASSEMBLY Then
        Set MyAssembly = Nothing
        Set MyAssembly = swApp.ActiveDoc
    Else
        Set MyPart = Nothing
        Set MyAssembly = Nothing
    End If

End Function[/code]
Hoffe, du kommst damit schon weiter.

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

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

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



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

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 20. Mrz. 2013 12:48    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 Stefan,

Danke für die Antwort mit der logisch klingenden Begründung.

Werd es gleich mal austesten.

[Edit]Getestet und für gut befunden.  [/Edit]

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete  

[Diese Nachricht wurde von bk.sc am 20. Mrz. 2013 editiert.]

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