Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  VB-Programm Schriftfeld

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
  
SolidWorks Kurs mit IHK-Zertifzierung , ein Kurs (bis zu 100% förderbar mit Bildungsgutschein)
Autor Thema:  VB-Programm Schriftfeld (1817 mal gelesen)
Piet
Mitglied
Konstruktionsleiter & Konstrukteur


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

Beiträge: 661
Registriert: 20.11.2001

SWx 2021

erstellt am: 21. Jan. 2005 12:52    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


schriftfeld1.jpg


schriftfeld2.jpg


schriftfeld3.jpg

 
Vor einiger Zeit hat hier ein netter Mensch (ich weiß leider nicht mehr, wer) ein VB-Programm zur Verfügung gestellt, mit dem komfortabel benutzerdefinierte Eigenschaften an Modelle angehängt werden können, und die dann automatisch in Schriftfelder von Zeichnungen angehängt werden.
Ich versuche nun, dies Programm an meine Bedürfnisse anzupassen. Da ich nur VB.Net zur Verfügung habe, wurde der Code (in VB6 geschrieben) konvertiert.
Beim Versuch, den Code zu Kompilieren, wird eine lange Fehlerliste angezeigt. Einige konnte ich schon bereinigen, aber jetzt stehe ich auf dem Schlauch.

Die dringendste zuerst: Der Operand "=" ist für die Typen "System.Type" und "Short" nicht definiert. Diesen Code hab ich unverändert übernommen, das müsste also in der ursprünglichen Version funktionieren. Die angehängten Bilder Schriftfeld1 und Schriftfeld2 zeigen Screenshots.

Die andere Fehlermeldung lautet "SelStart" ist kein Member von System.Windows.Forms.Control
Diese Meldung (siehe Bild Schriftfeld3) bezieht sich direkt auf VB6, was ich da bei VB.Net einsetzen muss, ist mir nicht klar.

Ich bin ein Anfänger in Visual Basic (in Programmierung sowieso), VB6 kenn ich immerhin etwas, VB.Net ist neu für mich. Für alle hilfreichen Tipps bin ich sehr dankbar.

Piet

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

Piet
Mitglied
Konstruktionsleiter & Konstrukteur


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

Beiträge: 661
Registriert: 20.11.2001

SWx 2021

erstellt am: 21. Jan. 2005 12:54    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


schriftfeld1neu.jpg


Schriftfeld.zip

 
Hier ist noch mal eine besser lesbare Version des ersten Bildes, sowie der Programmcode.

Piet

[Diese Nachricht wurde von Piet am 21. Jan. 2005 editiert.]

[Diese Nachricht wurde von Piet am 21. Jan. 2005 editiert.]

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

Piet
Mitglied
Konstruktionsleiter & Konstrukteur


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

Beiträge: 661
Registriert: 20.11.2001

SWx 2021

erstellt am: 25. Jan. 2005 11: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

Kann niemand helfen? Sind die Fragen zu blöd, zu schwierig, zu mühsam, oder arbeitet keiner mit VB.Net?

Seufz...

Piet

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: 25. Jan. 2005 11:44    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 Piet 10 Unities + Antwort hilfreich

Hallo Piet,

der Code stammt wohl in Urspüngen irgendwie von mir, aber ich nutze noch kein VB.net ... und "alten" VB-Code einlesen würde ich schon gar nicht, sondern alles neu schreiben.

Was die Operantmeldung angeht hab ich keine Idee, es sieht fast so aus, als erkennt das VB.net nicht, dass Model ein Object ist oder GetType von irgendeinem anderen Object kommt.

Das andere Problem (mit SelStart) weiß ich auch das passende .NET Pendant nicht, aber das kannst du auch einfach weglassen, die ganze Funktion ist einfach nur eine Komfortfunktion, um automatisch den ganzen Text in einem Textfeld zu selektieren.

Ciao,
Stefan

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

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

Piet
Mitglied
Konstruktionsleiter & Konstrukteur


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

Beiträge: 661
Registriert: 20.11.2001

SWx 2021

erstellt am: 25. Jan. 2005 11:47    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

Das ist doch schon mal ein wertvoller Hinweis. Vielen Dank!

Piet

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: 25. Jan. 2005 14:26    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 Piet 10 Unities + Antwort hilfreich

Hallo Piet,

Das mit dem automatischen Konvertieren von VB6 zu VB.NET geht nur, wenn die Datentypen strikt sind. In Deinem Code waren die SWXSolidWorks-Objekte alle vom Typ 'Object'. Der Übersetzer kennt also den SWXSolidWorks-Typ nicht und kann daher nicht korrekt übersetzen.
Im Einzelnen:
- Dein erstes Problem ist, dass ModelDoc die Methode GetType hat, die von VB.NET jetzt anders verwendet wird. Daher verwende für ModelDoc immer als Typ SldWorks.ModelDoc2 (Zuvor musst Du natuerlich ein Verweis auf die SWXSolidWorks-Typbibliothek machen!!) In Deinem Code sind das so. ca. 15 Stellen. Damit kriegt der Compiler GetType wieder korrekt aufgelöst!
- Die SelStart- Sache geht so in VB.NET nicht. Code einfach mal deaktivieren und dann sehen, wie sich die ganze Sache verhält

Im uebrigen ist es auch im VB6-Code sinnvoller (und manchmal auch schneller - in Ausführung und beim Debuggen), den Datentyp auf die SWXSolidWorks-Klassen zu setzen und nicht mit object zu arbeiten. In 99% der Fälle geht das mittlerweile.

Gruss, Ralph

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

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: 25. Jan. 2005 15: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 Nur für Piet 10 Unities + Antwort hilfreich

Hallo Ralph,

> Im uebrigen ist es auch im VB6-Code sinnvoller (und manchmal auch
> schneller - in Ausführung und beim Debuggen), den Datentyp auf die
> SWX-Klassen zu setzen und nicht mit object zu arbeiten. In 99% der
> Fälle geht das mittlerweile.

Das mache ich tatsächlich absichtlich nicht, sondern nutze das late-binding mit as object, da ich versuche meine Makros versionsunanhängig zu programmieren und es offensichtlich sehr schwer ist den Leuten begreiflich zu machen, wo dieser Haken für den Verweis im Makroeditior umgelegt werden muss 

Ciao,
Stefan

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

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: 25. Jan. 2005 15: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 Piet 10 Unities + Antwort hilfreich

Hallo Stefan,

Gebe Dir recht, das ist ein Gegenargument. Und ich wollte Dich auch nicht kritisieren!
Nur hat die Typsicherheit von Early-Binding enorme Vorteile - Wie u.a. auch beim Konvertieren nach VB.NET.

Gruss, Ralph

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

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: 25. Jan. 2005 16: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 Nur für Piet 10 Unities + Antwort hilfreich

Hallo Ralph,

ich hab nichts gegen Kritik, nur so kann man ja lernen 

Ich hab's nur als Erklärung mit dabeigeschrieben, damit der nächste, der es dann mit Early-Binding macht, auch darauf gefasst ist, dass das Makro/Programm bei einem Versionswechsel von SolidWorks angepasst werden muss 

Ciao,
Stefan

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

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

Andreas Müller
Mitglied
Masch. Ing. HTL / Betriebsing. STV


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

Beiträge: 1151
Registriert: 11.04.2001

erstellt am: 25. Jan. 2005 16:18    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 Piet 10 Unities + Antwort hilfreich

Hallo Alle!

Sorry Piet, mein Beitrag ist ein bisschen offtopic, aber es interessiert mich an dieser Stelle einfach.

Zitat:
Original erstellt von StefanBerlitz:
...nutze das late-binding mit as object, da ich versuche meine Makros versionsunanhängig zu programmieren ...

Stefan: Soweit ich das aus der Literatur verstanden habe, kann bei der early-binding nur auf die Funktionen der entsprechenden Verweise (z.B. SldWorks 2005 Type Library) zugegriffen werden. Nun ist es ja aber so, dass gerade in dieser Library die meisten "alten" Befehle nicht verschwinden, sondern mit neuen ergänzt werden. Wenn man dann ein bisschen "aufpasst", sollten doch auch ältere SWX-Versionen mit early-binding machbar sein, oder??

------------------
Gruss
Andreas
A+E Müller AG

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

Piet
Mitglied
Konstruktionsleiter & Konstrukteur


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

Beiträge: 661
Registriert: 20.11.2001

SWx 2021

erstellt am: 25. Jan. 2005 16: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

Zitat:
Original erstellt von PASCAM:
- Dein erstes Problem ist, dass ModelDoc die Methode GetType hat, die von VB.NET jetzt anders verwendet wird. Daher verwende für ModelDoc immer als Typ SldWorks.ModelDoc2 (Zuvor musst Du natuerlich ein Verweis auf die SWXSolidWorks-Typbibliothek machen!!)

Ist natürlich eine Anfängerfrage, aber wie mach ich diesen Verweis? Die ModelDoc hab ich ersetzt.

Zitat:
- Die SelStart- Sache geht so in VB.NET nicht. Code einfach mal deaktivieren und dann sehen, wie sich die ganze Sache verhält

Das haut hin: Ich hab die Zeilen auskommentiert, keine Fehlermeldung mehr.

Piet

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: 25. Jan. 2005 17:47    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 Piet 10 Unities + Antwort hilfreich

Hallo zusammen,

@Andreas: ja, von den Befehlen her ist das kein Problem, aber wenn du in deinem Programm/Makro einen Verweis auf die SW2005 TypeLibrary drin hast und jemand will das Makro ausprobieren, der nur die 2004 installiert hat gibt's eine Fehlermeldung (weil die 2005 Typelib ja nicht installiert ist).

Das selbe Spiel auch andersherum: schreibst du etwas mit der 2003 Typelib als Verweis und jemand will das jetzt auf seinem 2004 (oder 2005) laufen lassen, der aber nie die 2003 installiert hatte: PENG ... Fehlermeldung, kein lauffähiges Makro oder Programm, verduzter Anwender, der das Makro für bescheuert hält, unzufriedener "Kunde"    

Deswegen entwickel ich manchmal mit den Verweisen, weil es sehr bequem ist, neben dem (in meinen Augen geringen) Geschwindigkeitsgewinn ist das automatische Komplettieren sehr praktisch; aber spätestens, wenn ich das Makro dann in die freie Wildbahn entlasse schreib ich alles wieder um auf "Object".

Aber gut zu wissen, dass ich mir das in VB.net dann abgewöhnen muss; müssen halt die Nutzer ein wenig mitdenken 

@Piet: einen Verweis setzt du in den Projekteigenschaften; bei VBA kommtst du da unter Extras/verweise dran, im VB6 über Projekt/Verweise. Wo das aber in VB.net zu finden ist weiß ich nicht (hab ich ja noch nicht  )

Ciao,
Stefan

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

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: 25. Jan. 2005 18:00    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 Piet 10 Unities + Antwort hilfreich

Hallo Piet,

Der Verweis fuer SWXSolidWorks legst Du in VB.NET wie folgt fest:
- RMB im Projektfenster auf Verweise, dann Verweis hinzufügen. Du bekommst ein Fenster mit Reitern, nimm hier den zweiten (COM).
- Dort waehlst Du die SolidWorks Typbilbiothek deiner Version aus (z.B. SldWorks 2005 Type Library) und drückst den Auswählen Button
- Jetzt mit OK den Dailog schliessen und Du hast den Verweis

Uerbigens zu den ModelDoc:
Die Variablen, die sich auf das Modell beziehen, muessen ungefähr so deklarariert werden:

dim MyModel as sldworks.modeldoc2

Dann klappt das.

Ansonsten empfehle ich Dir, erst einmal ein paar Schritte mit VB.NET ohen SWXSolidWorks zu probieren. Es ist nicht schwer, aber eben etwas anders als das "alte" VB.

@Stefan: In VB.NET gibt es auch noch das Late-Binding. Aber eben die Methode GetType ist in .NET in der Basisklasse Object vergeben (für die Typermittlung eines Objektes). Daher muss zumindest das ModelDoc2-Objekt früh gebunden werden. Oder man muss jede Menge anderer Code schreiben ....

Gruss, Ralph

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

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

Piet
Mitglied
Konstruktionsleiter & Konstrukteur


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

Beiträge: 661
Registriert: 20.11.2001

SWx 2021

erstellt am: 27. Jan. 2005 11: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

Vielen Dank für die hilfreichen Tipps. Der fehlende Verweis auf die SWXSolidWorks-Typbibliothek war der entscheidende Schlüssel.
Von ursprünglich 102 Buildfehlern bin ich immerhin schon mal soweit, dass das Programm fehlerfrei kompiliert wird und startet. Nur bei der Ausführung gibt's noch ein paar Hakler wegen veränderter Syntax durch VB.Net.
Bis hierhin jedenfalls vielen Dank an alle, besonders an Ralph.

Piet

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