Autor
|
Thema: Teilschaltung mit Script platzieren (2876 mal gelesen)
|
Daudi2010 Mitglied
Beiträge: 52 Registriert: 16.05.2014 E3.Series 2014
|
erstellt am: 25. Jun. 2014 10:44 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich würde gerne eine Teilschaltung die ich vorher über exportieren erstellt habe mit einem Script in einem leeren Blatt platzieren. Leider bekomme ich die Meldung W - Symboltyp 'DINA3' wurde nicht in der Datenbank gefunden! W - Blattformat-Symbol DINA3 kann nicht aus der Datenbank geladen werden... E - Blatt basis wurde nicht neu angelegt - SHEET Befehl abgebrochen! I - Part BTS117{V1} not placed; rc = 1 I - Part MOTORCONTROL{V1} not placed; rc = 1 I - Sheet done Mein Script sieht bis jetzt so aus:
' VB Script Document Option Explicit Dim sht Dim e3 Dim rc Dim m Dim prj Dim Basis Dim s Start
Sub Start() set e3 = CreateObject( "CT.Application" ) e3.AvoidAutomaticClosing Set prj = E3.CreateJobObject Set sht = prj.CreateSheetObject Basis = sht.Create (0, "basis", "DINA3", 0, 0) Place "BTS117", "V1", sht, 400, 400, 0 Place "MOTORCONTROL", "V1", sht, 620+m*480, 560, 0
e3.PutInfo 0, "Sheet " & s & " done" End Sub Function Place(name, vers, sht, x, y, rot) rc = sht.PlacePart(name, vers, x, y, rot) If (rc <> 0) Then e3.PutInfo 1, _ "Part " & name & "{" & vers & "} not placed;" _ & " rc = " & rc End If Place = rc End Function Leider habe ich bis jetzt weder viel Erfahrung mit E3 noch mit VBScript! Vielleicht kann mir ja mal jemand sagen was ich falsch gemacht habe! Vielen Dank Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
K0NFUZIUS Moderator
Beiträge: 258 Registriert: 06.02.2006
|
erstellt am: 25. Jun. 2014 11:54 <-- editieren / zitieren --> Unities abgeben: Nur für Daudi2010
Hallo, Der erste Fehler ist, das das Blattformat DINA3 nicht in Deiner Datenbank gefunden wird. Bitte einmal im Datenbankbaum Reiter 'Sonstiges' prüfen welche Blätter vorhanden sind. (optional einfach mal in einem leeren Projekt ein Blatt anlegen, da werden dir im Dialog auch alle Verfügbaren Blätter angezeigt) Ohne Blatt kannst Du auch nichts drauf platzieren ;-) Gruß Jörg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Daudi2010 Mitglied
Beiträge: 52 Registriert: 16.05.2014 E3.Series 2014
|
erstellt am: 25. Jun. 2014 12:07 <-- editieren / zitieren --> Unities abgeben:
Ok vielen Dank jetzt kommt die Fehlermeldung schon mal nicht aber er öffnet trotzdem kein neues Blatt und die Teile werden daher auch noch nicht platziert! Ist da noch ein Fehler drin, dass er kein Blatt öffnet? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Daudi2010 Mitglied
Beiträge: 52 Registriert: 16.05.2014 E3.Series 2014
|
erstellt am: 25. Jun. 2014 12:45 <-- editieren / zitieren --> Unities abgeben:
So ich hab jetzt nochmal ein bisschen was probiert. Wenn ich ein Blatt offen habe und mein Script dann ausführe dann öffnet der eine Anlage und dort ist mein Blatt Basis! Ich würde das gerne aber unter Stromlaufplan haben! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
K0NFUZIUS Moderator
Beiträge: 258 Registriert: 06.02.2006
|
erstellt am: 26. Jun. 2014 16:31 <-- editieren / zitieren --> Unities abgeben: Nur für Daudi2010
Hi Nochmal... Wie ist das Projekt strukturiert? nach einer Struktur Datei oder z.B. nach Attributen? Das kannst Du in den Baumeigenschaften im Blattbaum anschauen. (Reiter Sortierung). Gruß Jörg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Daudi2010 Mitglied
Beiträge: 52 Registriert: 16.05.2014 E3.Series 2014
|
erstellt am: 26. Jun. 2014 16:36 <-- editieren / zitieren --> Unities abgeben:
|
K0NFUZIUS Moderator
Beiträge: 258 Registriert: 06.02.2006
|
erstellt am: 26. Jun. 2014 17:44 <-- editieren / zitieren --> Unities abgeben: Nur für Daudi2010
Dann musst Du im Blattbaum unter "Sortieren nach", dass Attribut einstellen in welchem am Blatt "Stromlaufplan" drin stehen soll Wenn man mal in der Kühlwasserpumpe schaut (Beispiel von Zuken) hier wird hier das Attribute 'Document Type' am Blatt verwendet. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Daudi2010 Mitglied
Beiträge: 52 Registriert: 16.05.2014 E3.Series 2014
|
erstellt am: 30. Jun. 2014 13:05 <-- editieren / zitieren --> Unities abgeben:
Guten Tag, so immerhin wird nun die Teilschaltung in mein leeres Projekt mit einem neuen Blatt eingefügt leider aber noch unter "Anlage". Kann ich nun dann in dem Blatt über ein neues Script noch ein weiteres Bauteil einfügen und lassen sich auch die Pins miteinander verbinden in dem ich direkt die Pins ansprechen . (also nicht ihre x,y Werte) Gruß und Danke David Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
K0NFUZIUS Moderator
Beiträge: 258 Registriert: 06.02.2006
|
erstellt am: 30. Jun. 2014 16:10 <-- editieren / zitieren --> Unities abgeben: Nur für Daudi2010
Hallo David, Wenn Dein Blatt unter Anlage kommt, dann würde ich behaupten, dass Dein Projekt über eine DIN Projekt Struktur abgebildet ist. Das siehst Du wenn in den Projekteigenschaften unter Strukturvorlage eine XML eingetragen ist. In diesem Fall müsstest Du Deinem Blatt eben eine Anlage geben. Interaktiv über die Blatteigenschaften. Über COM im SheetInterface::SetAssignment(). Das verbinden der Pins funktioniert leider nur über die x/y Koordinaten und ist über COM eine Wissenschaft für sich. Hoffe das hilft. LG Jörg [Diese Nachricht wurde von K0NFUZIUS am 30. Jun. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Daudi2010 Mitglied
Beiträge: 52 Registriert: 16.05.2014 E3.Series 2014
|
erstellt am: 01. Jul. 2014 12:27 <-- editieren / zitieren --> Unities abgeben:
Hallo Jörg, vielen Dank für deine Hilfe! Was für Möglichkeiten gibt es denn das VBScript im Umgang mit E3.Series zu lernen? Die COM Hilfe finde ich jetzt teilweise nicht so wirklich hilfreich und sonst habe ich im Internet leider auch noch nichts gefunden! Ich müsste nämlich ein umfangreicheres Script entwerfen, das eine XML datei ausliest und dann die benötigten Schritte wie Bauteil platzieren und Verbindungen erstellen im E3.Series ausführt! Vielleicht hast du mir ja ein Tip wie man das am besten erlernen kann! Danke David Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
K0NFUZIUS Moderator
Beiträge: 258 Registriert: 06.02.2006
|
erstellt am: 08. Jul. 2014 17:01 <-- editieren / zitieren --> Unities abgeben: Nur für Daudi2010
Hallo David, entschuldige die späte Antwort. Zuerst würde es natürlich nichts schaden, wenn Du Dich in E³ selbst besser auskennen würdest. Das hilft hin und wieder auch die COM Schnittstelle besser zu verstehen. Für E³ und auch für eine COM Schulung gibt es Angebote bei Zuken. Das wäre sicherlich kein Fehler. Jetzt kenne ich Deine Programmierkenntnisse nicht, aber am Auszug oben kann man ja ableiten das Du kein Programmieranfänger bist. Ich persönlich würde das Programm eher in einer .NET Sprache schreiben. Auch wenn's nicht jedermanns Liebling ist kann man hier mit VB.NET schon mal etwas erreichen. Gerade im Hinblick auf das Einlesen einer XML Datei tust Du Dich hier wesentlich leichter. Bei der Platzierung von Bauteilen muss man Bauteile und Stecker unterscheiden (beides über das DeviceInterface). Bei Bauteilen platzierst Du einfach ein Symbol (SymbolInterface) (Place), bei Steckern (PlacePins) kannst Du mehrere Pins in einem Symbol platzieren .. ich glaube da gibt es Beispiele in der Hilfe. Das große Problem bei den Verbindungen ist m.M. nach, dass Du auch auf Kollisionen reagieren musst. Sprich Du darfst interaktiv die Verbindung auch nicht z.B. über bestehende Verbindungen ziehen (Linien überlappen sich/Kreuzen ist kein Problem). Das Ganze kommt einem Autorouter gleich wie man ihn auch aus dem Board Layout kennt und das ist sicherlich keine leichte Aufgabe. Gruß Jörg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Daudi2010 Mitglied
Beiträge: 52 Registriert: 16.05.2014 E3.Series 2014
|
erstellt am: 23. Jul. 2014 11:31 <-- editieren / zitieren --> Unities abgeben:
Hallo, Vielen Dank inzwischen hatte ich eine Schulung in der es dann um VBScript/COM in E3 geht, weil ohne war es einfach nicht möglich. Ich habe nun so etwas wie einen Masterplan in dem ich dann Bauteile/Verbindungen die ich nicht benötige ausblenden muss. Nun habe ich aber noch ein Problem mit der XML Datei auslesen. Hast du mir vielleicht ein kleines Beispiel wie ich eine XML in VBS für e3 auslesen kann? Danke David Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 23. Jul. 2014 11:43 <-- editieren / zitieren --> Unities abgeben: Nur für Daudi2010
Hallo, hier mal ein Beispiel für das Auslesen einer Datei unter vbs...
Code: Set fso = CreateObject("Scripting.FileSystemObject") ' Objekt für Dateisystem erstellen Set objEingabe = fso.OpenTextFile(EingabePfad & EingabeDatei, ForReading) Set objAusgabe = fso.OpenTextFile(AusgabePfad & AusgabeDatei, ForWriting, True)
...und hier mal ein Link zu einem vernünftigen Beispiel für das Auslesen einer XML. Ich pers. würde das ganze allerdings nicht mehr im VBS machen, sondern direkt im .Net. Alles, was über reine bzw. einfache E³ Funktionalitäten hinausgeht, mache ich mit dem COM-Zugriff aus dem .Net heraus. Hier hat man sehr viel mehr Möglichkeiten der Gestaltung und Eingaben, Übergaben etc. . Wie auch immer, aber das oben genannte, sollte dir auch via vbs weiterhelfen. ------------------ MFG Rick Schulz Nettiquette (CAD.de) - Was ist die Systeminfo? - Wie man Fragen richtig stellt. - Unities
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Daudi2010 Mitglied
Beiträge: 52 Registriert: 16.05.2014 E3.Series 2014
|
erstellt am: 28. Jul. 2014 08:54 <-- editieren / zitieren --> Unities abgeben:
Hallo, vielen dank erstmal! Mir wurde vorgegeben, dass ich dies in VBscript machen soll! Wenn ich jetzt zum Beispiel diese XML datei habe: <?xml version="1.0" encoding="UTF-8"?> <Bauteile> <Fahrschalter> <Name> "Basis1" </Name> </Fahrschalter> </Bauteile> Wie schaffe ich es hier nun dass das Bauteil Basis1 platziert wird? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Daudi2010 Mitglied
Beiträge: 52 Registriert: 16.05.2014 E3.Series 2014
|
erstellt am: 28. Jul. 2014 14:56 <-- editieren / zitieren --> Unities abgeben:
Hallo, also ich habe den Bauteilnamen und kann diesen auch in einer Messagebox ausgeben. Nun will ich ja aber das Bauteil mit Basis = sht.Create(0, "basis", "SP_DINA2", 0, 0) Place "Basis1", "1", sht, 20, 35, 0 platzieren lassen! Bei Place muss ich ja aber den Bauteilnamen angeben in meinem Beispiel ist das ja "Basis1" . Wenn ich den Namen ja jetzt in einer Varíable gespeichert habe wie bekomme ich diesen dann in meine Place Linie an die Stelle von "Basis1" ? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Daudi2010 Mitglied
Beiträge: 52 Registriert: 16.05.2014 E3.Series 2014
|
erstellt am: 29. Jul. 2014 14:47 <-- editieren / zitieren --> Unities abgeben:
Hallo, inzwischen bin ich so weit, dass ich den Namen von dem Bauteil aus der xml Datei lesen kann in einer Variable speichern kann. Nun wollte ich das selbe nochmal nur diesmal das Bauteil löschen! Leider bekomme ich immer die Meldung Objekt erforderlich bei dev . Start Sub Start
Set app = CreateObject("CT.Application") Set e3 = CreateObject( "CT.Application" ) Set prj = e3.CreateJobObject Set dev = prj.CreateDeviceObject e3.AvoidAutomaticClosing Set sht = prj.CreateSheetObject Set xmlDoc = CreateObject("MSXML2.DOMDocument") If prj.GetId = 0 Then app.PutError 1, "Kein Projekt geöffnet bitte eines öffnen" WScript.Quit End If
dev = Bauteilname dev.DeleteForced 'Fehlermeldung Objekt erforderlich 'dev' End Sub Vielen Dank für eure Hilfe! 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 |
|
Daudi2010 Mitglied
Beiträge: 52 Registriert: 16.05.2014 E3.Series 2014
|
erstellt am: 05. Aug. 2014 14:06 <-- editieren / zitieren --> Unities abgeben:
|