| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SolidEdge |
Autor
|
Thema: Visual Basic Programmieren (1509 mal gelesen)
|
ChaosElch Mitglied CAD-Admininstrator
Beiträge: 143 Registriert: 07.06.2005 Windows XP sp2, SolidEdge v17 sp14, CadManager v17<P>Dell Precision 370 / 380, 2GB RAM, nVidia GeForce 4400 (512MB RAM)
|
erstellt am: 11. Jan. 2006 08:26 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen! Ich möchte ein kleines Programm zum Vorlagentausch erstellen und habe erhebliche Probleme dies programmiertechnisch zusammenzukriegen. Ich weiss, dass es dafür auch ein Tool von Jürgen Nieser gibt, aber dies funktioniert bei uns nicht (würde länger dauern das zu erzählen). Meine Idee ist also folgende: 1. Aktuelle Draft unter anderem Namen speichern 2. Neue Draft mit neuer Vorlage öffnen 3. Neue Draft unter Namen wie alte Draft, alter Name, speichern 4. Alles vom Arbeitsblatt der alten Draft auf das Arbeitsball der neuen Draft kopieren. Obwohl ich meine Studien- und Diplomarbeit irgendwann mal mit VBA für Access geschrieben habe, tue ich mich mit VB schon sehr schwer. Vielleicht kann mir jemand mit folgenden (dilletantischen) Problem einen Schubs in die richtige Richtung geben: 1. Wie bekomme ich den Namen der aktuellen Draft? 2. Wie speichere ich die aktuelle Draft unter anderem Namen? 3. Wie öffne ich ein neues Dokument in SE? 4. Wo zur Hölle bekomme ich eine vernünftige Referenz zum Programmieren von SE her? (Das Handbuch von UGS ist ja nicht der Bringer...) gruss, Jarno Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Arne Peters Ehrenmitglied V.I.P. h.c. CAD Dokumentation / Training / Programmierung / Datenbanken
Beiträge: 7321 Registriert: 05.2002.24 Solid Edge Seminarunterlagen Training, Beratung, Programmierung
|
erstellt am: 11. Jan. 2006 09:06 <-- editieren / zitieren --> Unities abgeben: Nur für ChaosElch
Nur mal so aus dem Gedächtnis 1. objdoc.fullname 2. call objdoc.saveas(...... 3. set objdoc= objapp.open(Filename) 4. Objektbrower und F1 helfen da etwas weiter. Aber was Du willst ist ja im wesentlichen VB und nicht SE. Allerdings sieht die Programmierung schon deutlich anders aus, da man in Access wunderschöne Sachen innerhalb der DB macht. Hier müssen Application und Dokument erst geholt oder erstellt werden. Auch ist die Objectstruktur vile tiefer und komplexer. In Access gibt's Tabellen, Abfragen, Formulare, Berichte... und darin meist schon die Objekte, die man dirket ansprechen will. Dokument auf und unter neuem Namen speichern:
Dim o_app as application dim o_doc as Draftdocument Set o_App = CreateObject("SolidEdge.Application") Set o_doc = o_App.Documents.Open(m_filename) call o_doc.saveas("C:\Temp\MeineDatei.dft") o_doc.close set o_doc = nothing set o_app = nothing
------------------ APeters@BSS-Online.de
[Diese Nachricht wurde von Arne Peters am 11. Jan. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
modeng Ehrenmitglied V.I.P. h.c.
Beiträge: 7061 Registriert: 10.12.2003
|
erstellt am: 11. Jan. 2006 09:30 <-- editieren / zitieren --> Unities abgeben: Nur für ChaosElch
Moin, [...] Ich weiss, dass es dafür auch ein Tool von Jürgen Nieser gibt, aber dies funktioniert bei uns nicht (würde länger dauern das zu erzählen). [...] ohne Fehlerbeschreibubg an die Adresse, die im Readme.txt steht kann es bedauerlicherweise nicht bereichtigt werden ... Version 1.0.12 ist aktuell modeng Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jürgen Niesner Mitglied
Beiträge: 505 Registriert: 26.11.2001
|
erstellt am: 11. Jan. 2006 09:32 <-- editieren / zitieren --> Unities abgeben: Nur für ChaosElch
Servus Jarno, Deine Idee hatte ich zuerst auch angestrebt. Sie hätte viele Vorteile. Aber einen entscheidenden Nachteil: Wenn Du Mehrblattzeichnungen hast und dabei ein Schnitt auf einem anderen Blatt liegt als die Schnitt Definition, erzeugt Dir SE beim Copy-Paste von einer Datei in die andere Datei die Blätter mit der Schnittdefinition doppelt, sobald Du das Blatt mit dem Schnitt kopierst. Wenn Du sicherstellen kannst das Schnitt und Schnittdefinition immer auf dem gleichen Blatt liegen, also bei Einblattzeichnungen kein Problem, bei Mehrblattzeichnungen wird es verdammt kniffelig. Noch ein paar Tipps: * Vor dem kopieren der Zecihnungsobjekte von der alten Datei in die neue Datei, alle Dateieigenschaften von der alten datei in die neue kopieren, sonst zerlegt es Dir die Eigenschaftstexte. * Sicherstellen das alle Formatvorlagen der alten Datei auch in der neuen definiert sind Jürgen ------------------ Jürgen -------- 58*SEV17SR7, 4*SEV18SR1 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChaosElch Mitglied CAD-Admininstrator
Beiträge: 143 Registriert: 07.06.2005 Windows XP sp2, SolidEdge v17 sp14, CadManager v17<P>Dell Precision 370 / 380, 2GB RAM, nVidia GeForce 4400 (512MB RAM)
|
erstellt am: 11. Jan. 2006 10:18 <-- editieren / zitieren --> Unities abgeben:
Hallo! Danke für alle Eure Antworten - die VB-Tipps werde ich gleich mal ausprobieren. Zu dem Programm von Juergen: An sich läuft das Programm (bis auf einige Ausnahmen). Das entscheidende Problem ist allerdings unsere CAD-Schnittstelle: Diese referenziert auf die Textboxen, zB. Textbox3456 = %Benennung1. Wenn ich jetzt das Programm von Juergen anschmeisse, habe ich zwar die neue Vorlage, aber die Namen der Textboxen haben sich geändert. Jetzt könnte ich noch hingehen und diese zurück-umbenennen (mal abgesehen davon, dass ich nicht wüsste wie), habe dann aber das Problem das "Benennung1" ja auf jedem Hintergrundblatt auftaucht, also nicht eindeutig zuordenbar ist. Mich würde auch das Problem mit dem Schnitt nicht stören, da man dann immer noch bei 95% aller unserer Zeichnungen die Vorlage tauschen kann. Die restlichen 5% kann man dann immer noch händisch austauschen. Und zum Schluss noch ein Lob an Juergen: Da hast Du sehr viel Zeit investiert und stellst Dein Programm jedem zur Verfügung - Super! gruss, Jarno Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
modeng Ehrenmitglied V.I.P. h.c.
Beiträge: 7061 Registriert: 10.12.2003
|
erstellt am: 11. Jan. 2006 12:27 <-- editieren / zitieren --> Unities abgeben: Nur für ChaosElch
Moin, die Namen der Textboxen und Callouts werden von SE vergeben und sind nicht aenderbar. Das macht natuerlich Anpassungen an der Schnittstelle noetig sobald ein neues Template erstellt werden muss - unschoen aber wohl nicht aenderbar (besser waere man sucht auf den Begriff %{Benennung|.. bzw. %Benennung1). Was die Variable selbst angeht so erscheint diese beim Tausch nur auf dem Hintergrundblatt auf dem sie definiert ist. Gibt es identische Blattformate aber mit unterschiedlichen Indizes so kann man gemaess Blattnamen statt per Formnummer tauschen BTW: auch die Indizes haben ihre Tuecken: habe ich in einem Draft 3 verschiedene Teile und deren Ableitungen so waren die Indizes 1, 2 und 3. Wird jetzt des Teil mit Index 1 geloescht so werden die Indizes von SE neu vergeben 2 = 1 und 3 = 2! Daher erscheint dann auf Blatt mit Index 2 die Bezeichnung des bisherigen Teils 3 (jetzt Index 2) und bei Teil 3 erscheint "Fehler ..." Fazit: moeglichst vermeiden modeng [Diese Nachricht wurde von modeng am 11. Jan. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChaosElch Mitglied CAD-Admininstrator
Beiträge: 143 Registriert: 07.06.2005 Windows XP sp2, SolidEdge v17 sp14, CadManager v17<P>Dell Precision 370 / 380, 2GB RAM, nVidia GeForce 4400 (512MB RAM)
|
erstellt am: 12. Jan. 2006 09:09 <-- editieren / zitieren --> Unities abgeben:
Na das ist ja nicht so toll, dass man die Namen der Textboxen nicht ändern kann. Das Ändern der Schnittstelle ist von mir leider auch nicht möglich, da diese von einer Fremdfirma kommt. Bleibt mir also tatsächlich nur der Weg, welchen ich mir weiter oben schon überlegt habe, oder? gruss, Jarno Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Arne Peters Ehrenmitglied V.I.P. h.c. CAD Dokumentation / Training / Programmierung / Datenbanken
Beiträge: 7321 Registriert: 05.2002.24 Solid Edge Seminarunterlagen Training, Beratung, Programmierung
|
erstellt am: 12. Jan. 2006 09:18 <-- editieren / zitieren --> Unities abgeben: Nur für ChaosElch
Kann eigentlich nicht sein, dass die Fremdfirma auf die Namen der Felder Programmiert hat. Und wenn, dann muß es in einer INI drin stehen oder so. Wie soll man sonst die Vorlage anpassen?? Falls wirklich die Zuweisungen von Feldern, deren Namen von SE automatisch vergeben werden, fest verdrahtet sind - was ich mir eigentlich gar nicht vortsellen kann- , so geht es entweder um's nachkassieren, oder man hat keine Ahnung vom Programmieren oder beides. ------------------ APeters@BSS-Online.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChaosElch Mitglied CAD-Admininstrator
Beiträge: 143 Registriert: 07.06.2005 Windows XP sp2, SolidEdge v17 sp14, CadManager v17<P>Dell Precision 370 / 380, 2GB RAM, nVidia GeForce 4400 (512MB RAM)
|
erstellt am: 12. Jan. 2006 09:24 <-- editieren / zitieren --> Unities abgeben:
Hallo Arne, nachdem eine neue Vorlage erstellt wurde, wird die mit einem Tool abgescannt. Die Textbox-Benennungen, sowie deren Inhalt werden dann in einer Textdatei abgespeichert. Die Textdatei hab ich mal angehängt, dass Ihr Euch ein Bild machen könnt. Würde also bedeuten, ich müsste nach jedem Ändern der Vorlage (also auch nach Verwendung des Tools von Juergen Nieser) diese Abscannen und den Schriftkopf wieder ausfüllen. gruss, Jarno Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Arne Peters Ehrenmitglied V.I.P. h.c. CAD Dokumentation / Training / Programmierung / Datenbanken
Beiträge: 7321 Registriert: 05.2002.24 Solid Edge Seminarunterlagen Training, Beratung, Programmierung
|
erstellt am: 12. Jan. 2006 09:50 <-- editieren / zitieren --> Unities abgeben: Nur für ChaosElch
Ja, so kann man es machen. Aber es sieht so aus, als müsste man dann die Zweisung neu machen. 1. Bei Änderungen an der vorhandenen Vorlage wäre das weniger schlimm, da ja eher nur einzelne sachen nachgepflegt werden müssen. 2.Bei erstellen einer neuen Vorlage müsste man das komplett neu aufbauen. 3. Bei dem, was Du eigentlich vorhast, hätte ich Angst. Was, wenn jemand ein Textfeld in einer Zeichnung gelöscht hat. Dann bist Du nicht in der Lage eine einheitliche Zuordnung zu schaffen. 4. Es kommt bei mir sowieso grade die Frage auf, wie alte Zeichnungen nach einer Änderung der Vorlage gehandhabt werden sollen? Habs schon gesehen. Da können ja mehrere Vorlagen und Blattgrößen in der INI enthalten sein. Dann muß die neue Vorlage aber wohl anders heißen? Sicher hat die Zuweisung in der Ini auch Vorteile: z.b. Geschwindigkeit. Aus der Ferne läßt sich das Ganze aber nur begrenzt beurteilen. Ich würde erst mal ein paar Tests machen und dann ggf. den Lieferanten der Schnittstelle mit einbeziehen, um eine Lösung zu finden und zu vermeiden, das es Effekte gibt, die man vorher nicht so erkannt hat. ------------------ APeters@BSS-Online.de [Diese Nachricht wurde von Arne Peters am 12. Jan. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jürgen Niesner Mitglied
Beiträge: 505 Registriert: 26.11.2001
|
erstellt am: 12. Jan. 2006 10:10 <-- editieren / zitieren --> Unities abgeben: Nur für ChaosElch
Servus Jarno, lad mal bitte eine Draftvorlage hoch, damit ich das Ding mal zerlegen kann. Ich vermute dass euer Schriftfeldprogramm die Textboxen irgendwie anders identifizerit. Jürgen ------------------
58*SEV17SR7, 4*SEV18SR1 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BJ Mitglied PLM System Administrator
Beiträge: 488 Registriert: 20.12.2002
|
erstellt am: 12. Jan. 2006 10:18 <-- editieren / zitieren --> Unities abgeben: Nur für ChaosElch
|
ChaosElch Mitglied CAD-Admininstrator
Beiträge: 143 Registriert: 07.06.2005 Windows XP sp2, SolidEdge v17 sp14, CadManager v17<P>Dell Precision 370 / 380, 2GB RAM, nVidia GeForce 4400 (512MB RAM)
|
erstellt am: 12. Jan. 2006 10:27 <-- editieren / zitieren --> Unities abgeben:
|
ChaosElch Mitglied CAD-Admininstrator
Beiträge: 143 Registriert: 07.06.2005 Windows XP sp2, SolidEdge v17 sp14, CadManager v17<P>Dell Precision 370 / 380, 2GB RAM, nVidia GeForce 4400 (512MB RAM)
|
erstellt am: 12. Jan. 2006 10:50 <-- editieren / zitieren --> Unities abgeben:
So. Jetzt habe ich (Dank Eurer Hilfe) es immerhin mal geschafft, die alte Zeichnung wergzuspeichern und eine neue mit neuer Vorlage unter dem Namen der alten abzuspeichern. Jetzt müsste ich "nur" noch Alle Elemente des Arbeitsblattes von der alten auf die neue Zeichnung kopieren. In der UGS-Anleitung hab ich nix gefunden, und Jürgens Programmierung übersteigt meinen Horizont... Hat jemand einen Programmieransatz unter VB für mich? Vielen Dank schonmal im Voraus, Jarno Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jürgen Niesner Mitglied
Beiträge: 505 Registriert: 26.11.2001
|
erstellt am: 12. Jan. 2006 12:05 <-- editieren / zitieren --> Unities abgeben: Nur für ChaosElch
Servus Jarno, ich hab mir mal die Mühe gemacht und die Vorlage analysiert. Ich kann in der Vorlage nix finden, an dem die Textboxen identifizerit werden können, außer der Texte in den Textboxen. Um zu überprüfen ob daran die Textboxen identifiziert werden nimm einfach mal die Vorlage, häng irgendwo im Hintergrundblatt mit rein eine zusätzliche selbst erstellt Textbox und schreib den Text "%Benennung1" rein. Dann ausfüllen. Sind beide textboxen mit der Benennung gefüllt. Treffer Wenn nur eine Textbox mit der Benennung gefüllt wurde diese Löschen und nochmals ausfüllen. Ist jetzt die andere ausgefüllt? Jürgen ------------------
58*SEV17SR7, 4*SEV18SR1 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Arne Peters Ehrenmitglied V.I.P. h.c. CAD Dokumentation / Training / Programmierung / Datenbanken
Beiträge: 7321 Registriert: 05.2002.24 Solid Edge Seminarunterlagen Training, Beratung, Programmierung
|
erstellt am: 12. Jan. 2006 12:21 <-- editieren / zitieren --> Unities abgeben: Nur für ChaosElch
Hallo Jürgen. Ich denke das ist der Haken bei der Schnittstelle. Die Textboxen werden offensichtlich beim Erstellen und Scannen der Vorlage über die Platzhalter identifiziert. Später aber nur noch über die Nr. angesprochen. Es steht ja nach dem ersten Füllen ein anderer Text drin. Hallo Jarno Für die Batchverarbeitung kannst Du das Batchtool im Custom-Verzeichnis umbauen. Für das SelectAll, muß man m.E. den Befehl starten. Die Nummer und Syntax wird dir modeng verraten. Auf das Selectset kann man dann ein Copy machen. Aber da kommen sicher noch ein paar Hürden. ------------------ APeters@BSS-Online.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChaosElch Mitglied CAD-Admininstrator
Beiträge: 143 Registriert: 07.06.2005 Windows XP sp2, SolidEdge v17 sp14, CadManager v17<P>Dell Precision 370 / 380, 2GB RAM, nVidia GeForce 4400 (512MB RAM)
|
erstellt am: 12. Jan. 2006 17:12 <-- editieren / zitieren --> Unities abgeben:
Hallo Arne, hallo Juergen. Arne hat völlig recht. Das Programm referenziert nur auf die Platzhalter, nicht auf die Inhalte. Es wird also nicht nach %Benennung1 gesucht, sondern nach TextboxXYZ. Ist das Programmtechnisch nicht machbar, oder find ich das als einziger seltsam? gruss, Jarno
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
modeng Ehrenmitglied V.I.P. h.c.
Beiträge: 7061 Registriert: 10.12.2003
|
erstellt am: 12. Jan. 2006 18:30 <-- editieren / zitieren --> Unities abgeben: Nur für ChaosElch
Moin, machbar schon nur ist man damit abhaengig von etwas was nicht steuerbar ist: der Namensvergabe der Textboxen, die mit Version xx nach dem Erstellen statisch sind was aber durchaus nicht der Fall mit der naechten Version sein muss. Wie heisst es so schoen "... kann sich ohne vorherige Ankuendigung aendern". Fazit: wenn moeglich Schnittstelle anders programmieren um von den Namen der Textboxen unabhaengig zu werden. Dein Stirnrunzeln ist also angebracht ;-) modeng Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Werkstudent für die Technische Entwicklung (m/w/d) | Die Firma Inmatec Gase Technologie GmbH & Co. KG in Herrsching am Ammersee gehört zu den weltweit führenden Unternehmen im Bereich der Herstellung von Anlagen zur vor-Ort-Erzeugung von Gasen. 1993 gegründet genießen wir mit unseren innovativen Stickstoff- und Sauerstoffgeneratoren ?Made in Germany? ein hohes internationales Ansehen. Da unsere Produkte in zahlreichen Industrien Verwendung finden, sind wir sehr breit und zukunftssicher aufgestellt.... | Anzeige ansehen | Konstruktion, Visualisierung |
|
CADZigeuner Mitglied Techniker
Beiträge: 49 Registriert: 07.12.2002 Windows 7 SE ST6 64bit
|
erstellt am: 01. Feb. 2006 09:06 <-- editieren / zitieren --> Unities abgeben: Nur für ChaosElch
|