Autor
|
Thema: Baugruppen per Skript erstellen (1024 mal gelesen)
|
DRVoss Mitglied
Beiträge: 5 Registriert: 05.01.2007
|
erstellt am: 05. Jan. 2007 11:51 <-- editieren / zitieren --> Unities abgeben:
Hallo! Ich habe folgendes Problem: Über ein Skript möchte ich ein Betriebsmittelverzeichnis als Excelliste in ein vorhandenes E3 Projekt einlesen. Mit z.B. dev.Create "A10", "20", "311", "343920033", 0, 0 wird das Bauteil im Baumverzeichnis angelegt. Mit dem Einfügen eines anderen Bauteils mit dev.Create "A10", "20", "311", "443520014", 0, 0 wird ein Bauteil angelegt, aber aus A10 wird A11. Das möchte ich aber nicht, da beide Materialien unter einem BMK geführt werden sollen (als Beispiel Leuchtdrucktaster mit Schaltelement und LED). Es besteht zwar nun die Möglichkeit in E3 aus diesen Bauteilen eine Baugruppe zu erstellen, und das BMK zu vererben, ist aber bei großen Datenmengen nicht zu überblicken. Die Baugruppen- Erstellung muß also im Skript erfolgen. Nur wie??
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CS4007 Mitglied Entwicklung / Elektrotechnik
Beiträge: 29 Registriert: 23.03.2005 Windows XP SP2 Intel P4 3,00 GHz 1 GB RAM NVidia QuadroFX 2 Monitore
|
erstellt am: 05. Jan. 2007 13:28 <-- editieren / zitieren --> Unities abgeben: Nur für DRVoss
Hallo Ich hoffe ich habe dich richtig verstanden, und folgendes hilft dir weiter... Code:
'Import des Bauteiles bei einem Klick auf einen Button. Kann aber auch durch 'jedes andere Ereignis aufgerufen werden. In deinem Fall für jede Zeile im Excel-Arbeitsblatt. Private Sub btnCreate2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles btnCreate2.Click 'Deklarieren und Initialisieren der Variablen Dim st_Name As String = "A10" Dim st_Location As String = "311" Dim st_Assignment As String = "20" Dim st_Component As String = "343920033" Dim int_DeviceID As String Dim int_AssemblyID As Integer 'Der Aufruf CreateE3Objects erzeugt mir die Objekte e3_Application, e3_Project und 'e3_Device. Spart Platz... CreateE3Objects() 'Sicherstellen das ein Name mit einem "-", ein Ort mit einem "+" und eine Anlage mit 'einem "=" (...und nur einem) beginnt. Wichtig beim Suchen nach Betriebsmittel st_Name = "-" & st_Name.Trim("-") st_Location = "+" & st_Location.Trim("+") st_Assignment = "=" & st_Assignment.Trim("=") 'Gibt es schon ein Betriebsmittel / eine Baugruppe mit dem gewünschten Namen im ' Projekt, oder nicht ? int_DeviceID = e3_Device.Search(st_Name, st_Assignment, st_Location) If int_DeviceID = 0 Then 'Existiert noch kein Betriebsmittel, so kann ich einfach und problemlos ein 'neues Erstellen und ihm den gewünschten Namen zuweisen e3_Device.Create(st_Name, st_Assignment, st_Location, st_Component, 1, 0) Else 'Es besteht schon ein Betriebsmittel. Zuerst mal herausfinden, ob es sich dabei 'um(eine) Baugruppe handelt. Das ist notwendig um auch mehrere (mehr als zwei) 'Betriebsmittel, an die selbe Baugruppe hängen zu können. e3_Device.SetId(int_DeviceID) If e3_Device.IsAssembly = 1 Then 'Es handelt sich um eine Baugruppe. Also lege ich die ID dieser Baugruppe 'in der Variablen die mir die Baugruppen-ID speichert ab. int_AssemblyID = int_DeviceID Else 'Es existiert noch keine Baugruppe. Ich erzeuge aus dem gefundenen Betriebsmittel, 'das bereits im Projekt bestanden hat, eine neue Baugruppe, und sage dem ' Betriebsmittel weiters, das sie ihr BMK stets von der Baugruppe erben soll. int_AssemblyID = e3_Device.CreateAssembly(int_DeviceID) e3_Device.SetId(int_DeviceID) e3_Device.SetInheritName(1) End If 'Nun erzeuge ich ein das neue Betriebsmittel, und weise ihm einen temporären Namen zu. ' Das ist notwendig, das später der Baugruppe der gewünschte Namen zugewiesen werden ' kann, ohne das Probleme durch gleiche Namen auftreten. int_DeviceID = e3_Device.Create(st_Name & "_tmp", st_Assignment, st_Location, st_Component, 1, 0) 'Nun das neue Betriebsmittel an die Baugruppe anhängen, und auch ihm sagen, es solle ' seinen Namen stets von der Baugruppe erben. e3_Device.SetId(int_AssemblyID) e3_Device.AddToAssembly(int_DeviceID) e3_Device.SetId(int_DeviceID) e3_Device.SetInheritName(1) 'Schlussendlich nur mehr der Baugruppe den gewünschten Namen zuweisen... e3_Device.SetCompleteName(st_Name, st_Assignment, st_Location) End If 'Der Aufruf DestroyE3Objects gibt mir den Speicher frei, und trennt ' die Verbindung zwischem meinem Programm und E3.series DestroyE3Objects() End Sub 'btnCreate2_Click
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| (Junior) Elektrokonstrukteur (m/w/d) | Was unsere Kunden von ihren Technologielösungen erwarten? Das nächste Level! Das gelingt unserem Team bei FERCHAU Tag für Tag. Wir suchen dich: als ambitionierte:n Kolleg:in, der:die wie wir Technologien auf die nächste Stufe bringen möchte. Wir realisieren spannende Projekte für namhafte Kunden in allen Technologiebereichen und für alle Branchen und arbeiten mit an anspruchsvollen Lösungen für die Industrie.... | Anzeige ansehen | Elektrotechnik, Elektronik |
|
DRVoss Mitglied
Beiträge: 5 Registriert: 05.01.2007
|
erstellt am: 08. Jan. 2007 08:45 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|