Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Userform in Addin integriert - Absturz von SWX

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
Autor Thema:  Userform in Addin integriert - Absturz von SWX (764 mal gelesen)
sembaden
Mitglied
Konstruktion Engineering


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

Beiträge: 21
Registriert: 07.08.2004

P4,2.8Ghz,2Gb,XP Prof.,nVidiaQuadro 4 750XGL,MDT6,SWX 2004 SP4.2

erstellt am: 06. Feb. 2006 09:16    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 die Programmiergemeinschaft da draußen.
Bin was die API- Funktionen betrifft relativ nass zu den anderen hier im Forum.
Habe einige Makros über eine Toolbar integriert.
Bei einem Makro ist eine Userform integriert. (Schriftfeld ausfüllen!) kennen wahrscheinlich die meisten hier. Hab es nur etwas auf unsere Bedürfnisse angepasst. Wenn ich nun die Userform aufrufe (in .dll integriert) und möchte die alten SWXSolidWorks Werte auslesen schmiert mir SWXSolidWorks ab. Zusätzlich lässt sich die Form nur noch zwangsbeenden.
Kann mir da jemand weiterhelfen?
Anbei natürlich mal die Routine in der das Problem auftaucht.
Sub berSfAuslesen()

    Dateieigenschaften
   
    Dim swApp As Object
    Dim Model As Object

    Set swApp = CreateObject("SldWorks.Application")
   CreateObject


    swApp.Visible = True
    Set Model = swApp.ActiveDoc
   
     
    If Model Is Nothing Then
        Call MsgBox("Keine Datei geöffnet", vbOKOnly, "Information")
        Exit Sub
    End If

        ' Benennung
    txtSfMK_Benennung.Text = Model.CustomInfo2(glbConfName, "MK_Benennung")
      ' Bemerkung
    txtSfMK_Bemerkung.Text = Model.CustomInfo2(glbConfName, "MK_Bemerkung")
    ' Zeichnungsnummer
    txtSfMK_Zeichnungsnummer.Text = Model.CustomInfo2(glbConfName, "MK_Zeichnungsnummer")
    ' Halbzeuge
    txtSfMK_Halbzeuge.Text = Model.CustomInfo2(glbConfName, "MK_Halbzeuge")
     ' Norm
    cmbSfMK_Material.Text = Model.CustomInfo2(glbConfName, "MK_Material")
    ' MK_Maschine
    txtSfMK_Maschine.Text = Model.CustomInfo2(glbConfName, "Maschine")
    ' Konstrukteur
    cmbSfGezeichnetVon.Text = Model.CustomInfo2(glbConfName, "GezeichnetVon")
       ' Kunde
    cmbSfKunde.Text = Model.CustomInfo2(glbConfName, "Kunde")
    ' Datum
    txtSfDatum.Text = Model.CustomInfo2(glbConfName, "Datum")
   
    ' InBearbeitung
        If Model.CustomInfo2(glbConfName, "InBearbeitung") = "Gesperrt / In Bearbeitung" Then
   
            chkInBearbeitung.Value = True
       
                Else
                    chkInBearbeitung.Value = False
        End If
    ' Ersatzteil
        If Model.CustomInfo2(glbConfName, "Ersatzteil") = "X" Then
   
            chkErsatzteil.Value = True
       
                Else
                    chkErsatzteil.Value = False
        End If 
End Sub

------------------
Gruß sembaden

[Diese Nachricht wurde von sembaden am 06. Feb. 2006 editiert.]

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

VBSpawn
Mitglied
Programmierer


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

Beiträge: 514
Registriert: 23.08.2005

Sorgfältige Planung ersetzt niemals pures Glück.

erstellt am: 06. Feb. 2006 09:41    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 sembaden 10 Unities + Antwort hilfreich

Moin moin,

ganz einfach machste es einem nicht gerade ....

Ich denke mal der Code in deinem Posting ist FormularCode und mir fällt dabei auf das
1. kein Fehlerhandling vorhanden ist ...
2. Wie wird die Form erzeugt mit Dim myForm as Userform (load myform & myForm.show)
3. Me.txtSfMK_Zeichnungsnummer.Text = ggf das Me verwenden damit eine 2. Instanz der Form ausgeschlossen werden kann
4. Beim Unload nochmal auf die Form zugreifen und damit neu Laden ganz beliebte Stelle für gpf

Gruß
Micha

------------------
http://classicvb.org/petition/

  

Zitat:
Interpunktion und Orthographie des Postings sind frei erfunden.
Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.

[Diese Nachricht wurde von VBSpawn am 06. Feb. 2006 editiert.]

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

sembaden
Mitglied
Konstruktion Engineering


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

Beiträge: 21
Registriert: 07.08.2004

P4,2.8Ghz,2Gb,XP Prof.,nVidiaQuadro 4 750XGL,MDT6,SWX 2004 SP4.2

erstellt am: 06. Feb. 2006 12:29    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

Ja ich weiß, bin halt ein Prog - Frischling.
Was bedeutet Null Ahnung von VB6 etc.
Das UserForm wurde von dem Ursprungsmakro einfach in das VB6 Projekt geladen. Eine Fehlerroutine gibt es leider nicht, da ich noch nicht weiß wie ich das anstellen soll. Der Code läuft unter dem Formular ab. Vielleicht liegt da auch das Problem.... weiß allerdings auch noch nicht wie ich das anders anstellen soll.
Gibt es da vielleicht irgendwo ein gutes Beispiel?
Hab bei SWXSolidWorks und hier im Forum schon alles durchgestöbert. nix gefunden....
Vielleicht hat ja jemand etwas ähnliches realisiert? Und wäre bereit mir ein paar Tipps zu geben?
wäre super dankbar dafür!!!!!

------------------
Gruß sembaden

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

VBSpawn
Mitglied
Programmierer


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

Beiträge: 514
Registriert: 23.08.2005

Sorgfältige Planung ersetzt niemals pures Glück.

erstellt am: 06. Feb. 2006 13:35    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 sembaden 10 Unities + Antwort hilfreich

Versuche das einfachmal sollteste so kopieren können
zusätzlich wir eine debug datei anglegt wenn das klappt dann musste das wieder auskommentieren

Sub berSfAuslesen()
    Dim swApp As Object
    Dim Model As Object
    On Error GoTo fail  'ADD
    debugprint "D1"
    Set swApp = CreateObject("SldWorks.Application")
    debugprint "D2"
    swApp.Visible = True
    debugprint "D3"
    Set Model = swApp.ActiveDoc
    debugprint "D4"
    If Model Is Nothing Then
        Call MsgBox("Keine Datei geöffnet", vbOKOnly, "Information")
        Exit Sub
    End If
    debugprint "D5"
      ' Benennung
    Me.txtSfMK_Benennung.Text = Model.CustomInfo2(glbConfName, "MK_Benennung")
      ' Bemerkung
      debugprint "D6"
    Me.txtSfMK_Benennung.Text = Model.CustomInfo2(glbConfName, "MK_Bemerkung")
    ' Zeichnungsnummer
      debugprint "D7"
    Me.txtSfMK_Zeichnungsnummer.Text = Model.CustomInfo2(glbConfName, "MK_Zeichnungsnummer")
    ' Halbzeuge
    debugprint "D8"
    Me.txtSfMK_Halbzeuge.Text = Model.CustomInfo2(glbConfName, "MK_Halbzeuge")
    ' Norm
    debugprint "D9"
    Me.cmbSfMK_Material.Text = Model.CustomInfo2(glbConfName, "MK_Material")
    ' MK_Maschine
    debugprint "D10"
    Me.txtSfMK_Maschine.Text = Model.CustomInfo2(glbConfName, "Maschine")
    ' Konstrukteur
    debugprint "D11"
    Me.cmbSfGezeichnetVon.Text = Model.CustomInfo2(glbConfName, "GezeichnetVon")
      ' Kunde
    debugprint "D12"
    Me.cmbSfKunde.Text = Model.CustomInfo2(glbConfName, "Kunde")
    ' Datum
    debugprint "D13"
    Me.txtSfDatum.Text = Model.CustomInfo2(glbConfName, "Datum")
   
    ' InBearbeitung
      debugprint "D14"
        If Model.CustomInfo2(glbConfName, "InBearbeitung") = "Gesperrt / In Bearbeitung" Then
            debugprint "D14.1"
            Me.chkInBearbeitung.Value = 1 '=Const vbChecked = 1 / True ist -1 nicht 1
                debugprint "D14.2"
                Else
                    Me.chkInBearbeitung.Value = 0 '=Const vbUnchecked = 0
                    debugprint "D14.3"
        End If
    ' Ersatzteil
        debugprint "D15"
        If Model.CustomInfo2(glbConfName, "Ersatzteil") = "X" Then
            debugprint "D15.1"
            Me.chkErsatzteil.Value = 1 '=Const vbChecked = 1 / True ist -1 nicht 1
                debugprint "D15.2"
                Else
                    debugprint "D15.3"
                    Me.chkErsatzteil.Value = 0 '=Const vbUnchecked = 0
        End If

Exit Sub 'ADD
fail:    'ADD
MsgBox Err.Number & vbCrLf & Err.Description, vbCritical

End Sub
Private Sub debugprint(ByVal sText As String)
Dim ffile As Integer
ffile = FreeFile
Open "C:\testdas.log" For Append As ffile
    Print #ffile, "<" & Format(Now, "hh:mm:ss") & ">" & sText
Close ffile
End Sub

------------------
http://classicvb.org/petition/

 

Zitat:
Interpunktion und Orthographie des Postings sind frei erfunden.
Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.

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

sembaden
Mitglied
Konstruktion Engineering


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

Beiträge: 21
Registriert: 07.08.2004

P4,2.8Ghz,2Gb,XP Prof.,nVidiaQuadro 4 750XGL,MDT6,SWX 2004 SP4.2

erstellt am: 07. Feb. 2006 09:09    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

Hallöchen,
erstmal vielen Dank für die schnelle Unterstützung, hab es natürlich gleich ausprobiert.
Wenn SWXSolidWorks abschmiert, wird jedesmal die Routine bis zum Ende durchlaufen. Ich kann also im Moment nicht genau feststellen, woran das liegt.   Trotzdem war das eine gute Anregung!!!   Das mit der Userform klappt jetzt auch irgendwie. Dim MyForm As Userform und dann in der Klasse aufrufen.
Vielen vielen Dank bis hierher.
Grüße sembaden

------------------
Gruß sembaden

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

VBSpawn
Mitglied
Programmierer


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

Beiträge: 514
Registriert: 23.08.2005

Sorgfältige Planung ersetzt niemals pures Glück.

erstellt am: 07. Feb. 2006 09:24    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 sembaden 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von sembaden:
Hallöchen,
erstmal vielen Dank für die schnelle Unterstützung, hab es natürlich gleich ausprobiert.
Wenn SWX abschmiert, wird jedesmal die Routine bis zum Ende durchlaufen. Ich kann also im Moment nicht genau feststellen, woran das liegt.    Trotzdem war das eine gute Anregung!!!    Das mit der Userform klappt jetzt auch irgendwie. Dim MyForm As Userform und dann in der Klasse aufrufen.
Vielen vielen Dank bis hierher.
Grüße sembaden


naja wenn die durchläuft ist ja schoneinmal gut dann kann es ja nur noch was mit dem code danch zu tun haben ..... beliebte Stelle ist wenn man das ModelDoc über seine Close Eigenschaft schliesst .... man muss über die App das ModelDoc schliessen...
Ansonsten bau die debugs an alle möglichen Stellen ein   

------------------
http://classicvb.org/petition/

 

Zitat:
Interpunktion und Orthographie des Postings sind frei erfunden.
Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.

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