| |  | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: in andere Klasse verzweigen (1016 mal gelesen)
|
MWN Mitglied Dipl.-Ing.
 
 Beiträge: 492 Registriert: 14.02.2007
|
erstellt am: 09. Apr. 2008 14:15 <-- editieren / zitieren --> Unities abgeben:         
Hallo Kollegen aus dem VB - Forum, ich möchte heut gern einmal eure Hilfe in Anspruch nehmen. Und zwar bin ich dabei, mir eine Zusatzanwendung für mein CAD SolidWorks zu schreiben (mit Hilfe von Visual Basic 2008 Express Edition). Ok, soweit so gut, das ganze gibt es als Template, direkt vom Hersteller und halbwegs vorgefertig, sodass man eigentlich eine dll erzeugt und der ganze Kram drumherum für einen schon erledigt wurde. Diese wird auch beim Erstellen gleich registriert und es integriert sich das Ganze gleich im SolidWorks. Ich bin auch soweit gekommen, das für meinen Einstieg notwendige Event anzuzapfen. Allerdings komme ich jetzt nicht weiter. In der Klasse, die sich SwAddin.vb nennt, bin ich mittlerweile so weit:
Code: Function SldWorks_FileNewNotify2(ByVal newDoc As Object, ByVal doctype As Integer, ByVal templateName As String) As Integer Select Case doctype Case SwConst.swDocumentTypes_e.swDocPART Case SwConst.swDocumentTypes_e.swDocASSEMBLY Case SwConst.swDocumentTypes_e.swDocDRAWING End Select End Function
Allerdings weiß ich nun nicht wie weiter! Das ist im Moment mein größtes Problem. Mein UserForm, was ich mir angelegt habe, zeigt er mir nicht (Meldung: Der Verweis auf einen nicht freigegebenen Member erfordert einen Objektverweis) und auf eine andere Klasse (z.B. MySldWorkCls) kann ich nicht verweisen, genau so wenig, wie den Event: partdoc::FileSavePostNotify abzufangen und danach wiederum mein UserForm anzuzeigen. Es soll ja auch für jeden Case-Pfad ein anderes Form angezeigt werden. Sollte ich dermaßen arg auf dem Schlauch stehen, dass es schon zu schmerzen beginnt, stoßt mich bitte bei Seite! Und ansonsten freue ich mich über jeden hilfreichen Strohhalm! GrüßeTobias Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Moderator Teamleiter
  
 Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600
|
erstellt am: 09. Apr. 2008 14:31 <-- editieren / zitieren --> Unities abgeben:          Nur für MWN
|
MWN Mitglied Dipl.-Ing.
 
 Beiträge: 492 Registriert: 14.02.2007
|
erstellt am: 09. Apr. 2008 14:54 <-- editieren / zitieren --> Unities abgeben:         
Hallo Daniel, ich weiß, ich weiß, ich habe die ganze Grundlagenschulung (vielen Dank auch an dieser Stelle für das Verfassen diese überaus nützlichen Dokuments) auch schon durchgeackert. Und das nicht nur einmal und ja, sie liegt auch ausgedruckt neben mir. Ich weiß auch, dass ich in dem Case - Zweig eigentlich auf das FileSavePostNotify Event reagieren will, doch nur wie realisiere ich das an genau diesem Punkt? Genau zwischen den zwei Case - Pfaden. Oder gibt es eine Möglichkeit von daheraus auf deine MySldWorksCls zu verweisen? Ich bin doch schon soweit, dass ich weiß, dass z.B. ein Part oder ein Assembly vom User erstellt wurde, nur wie reagiere ich jetzt auf das Speichern dieses neu erstellten Part's? Was muss ich da reinschreiben? Code: Function SldWorks_FileNewNotify2(ByVal newDoc As Object, ByVal doctype As Integer, ByVal templateName As String) As Integer Select Case doctype Case SwConst.swDocumentTypes_e.swDocPART was muss hier rein? Case SwConst.swDocumentTypes_e.swDocASSEMBLY oder hier, wenn der User ein Assembly erstellt hat Case SwConst.swDocumentTypes_e.swDocDRAWING End Select End Function
Trotzdem Danke für die Hilfe! Tobias Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Moderator Teamleiter
  
 Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600
|
erstellt am: 09. Apr. 2008 15:45 <-- editieren / zitieren --> Unities abgeben:          Nur für MWN
Hallo Tobias, Eine Eventprozedur muss zunächst erstmal mit einem so genannten Eventhandler mit dem eigentlichen Event verbunden werden. Infos dazu gibt es z.B hier und hier. In meiner Schulung wäre der Eventhandler z.B. Handles oSwAppCls.FileOpenNotify2, in deinem Fall Handles oSwAppCls.FileNewNotify2. Nur die Prozedur alleine nützt nichts! Wie Kapitel 2.3 beschrieben und wie du schon teilweise angewendet hast, muss du nun zwischen den verschieden SolidWorks Dokumenttypen unterscheiden und mit Hilfe des allgemeinen Dokumentobjekts SldWorks.ModelDoc2 ein spezielles Dokumentobject initialisieren. Das bedeutet, dass du also in der FileNewNotify2 Ereignisprozedur den Parameter newDoc in ein SldWorks.ModelDoc2 Object steckst.
Code:
Dim oSwModel as SldWorks.ModelDoc2 oSwModel = CType(newDoc, SldWorks.ModelDoc2)
Dann kannst du im Großen und Ganzen so vorgehen wie es in dem Kapitel 2.3, besonderst im Code 2.9, beschrieben ist. ------------------ Mfg Daniel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MWN Mitglied Dipl.-Ing.
 
 Beiträge: 492 Registriert: 14.02.2007
|
erstellt am: 10. Apr. 2008 07:09 <-- editieren / zitieren --> Unities abgeben:         
Guten Morgen Daniel, danke noch einmal für deine hilfreiche Antwort. Es hat zwar noch ein weilchen gebraucht, bis ich so recht dahinter gestiegen bin, aber es hat mich doch ein ganzes Stück weiter gebracht. U's sind schon unterwegs! Grüße Tobias Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |