| |  | 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

 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 / zitieren --> Unities abgeben:         
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 SWX  Werte auslesen schmiert mir SWX  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
  
 Beiträge: 514 Registriert: 23.08.2005 Sorgfältige Planung ersetzt niemals pures Glück.
|
erstellt am: 06. Feb. 2006 09:41 <-- editieren / zitieren --> Unities abgeben:          Nur für sembaden
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

 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 / zitieren --> Unities abgeben:         
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 SWX  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
  
 Beiträge: 514 Registriert: 23.08.2005 Sorgfältige Planung ersetzt niemals pures Glück.
|
erstellt am: 06. Feb. 2006 13:35 <-- editieren / zitieren --> Unities abgeben:          Nur für sembaden
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

 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 / zitieren --> Unities abgeben:         
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 ------------------ Gruß sembaden Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VBSpawn Mitglied Programmierer
  
 Beiträge: 514 Registriert: 23.08.2005 Sorgfältige Planung ersetzt niemals pures Glück.
|
erstellt am: 07. Feb. 2006 09:24 <-- editieren / zitieren --> Unities abgeben:          Nur für sembaden
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 >>)
 |