| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO |
| |
| Optimieren Sie Ihr Rechenzentrumsn, eine Pressemitteilung
|
Autor
|
Thema: Aufgabe für Hobby-Macro-Programmierer (8612 mal gelesen)
|
seistandhaft Mitglied Zeichner, Konstr., Admin.
Beiträge: 197 Registriert: 20.08.2004 Direct Drafting 20.1 Direct Modeling 20.1 ModelManager 20.1 SimufactForming
|
erstellt am: 27. Feb. 2006 08:13 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich versuche gerade ein Macro für folgende Aufgabenstellung zu schreiben: Ich habe eine LTAB mit zwei Spalten. In der ersten Spalte steht die Zeichnungsnummer, in der Zweiten eine Länge L. Die Tabelle kann 1 bis n Zeilen haben (bei meiner Anwendung ca. 20-30). Nun möchte ich eine Länge angeben und das Macro soll mir alle möglichen Kombinationen auswerfen mit denen ich, mit den Längen aus der Tabelle, die von mir gewünschte Länge zusammensetzen kann. Klingt einfach, aber bei den ganzen Schleifen verliert man schnell den Überblick. Eine Formel wird´s hierfür wohl nicht geben? Muß ich wirklich 50 oder mehr Schleifen ineinander verschachteln oder gibt´s einen einfacheren Weg? Für Tipps wäre ich sehr dankbar. Gruß Jörg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 27. Feb. 2006 08:33 <-- editieren / zitieren --> Unities abgeben: Nur für seistandhaft
|
seistandhaft Mitglied Zeichner, Konstr., Admin.
Beiträge: 197 Registriert: 20.08.2004 Direct Drafting 20.1 Direct Modeling 20.1 ModelManager 20.1 SimufactForming
|
erstellt am: 27. Feb. 2006 08:54 <-- editieren / zitieren --> Unities abgeben:
Hallo Claus, hab´s mir durchgelesen und ein bischen gegoogelt. Verstehe nur Bahnhof. Wäre die Aufgabe einfacher zu lösen, wenn ich sage ich nehmme max. 30 Zeilen und die gesuchten Summen sollen aus max. 5 Zahlen zusammengesetzt werden? Bleibt es dann bei dem Rucksackproblem? Gruß Jörg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 27. Feb. 2006 09:13 <-- editieren / zitieren --> Unities abgeben: Nur für seistandhaft
Wenn ich deine Aufgabenstellung richtig verstanden habe, ist es ja "nur" das Untermengensummenproblem, nicht das weiter gefasste Rucksackproblem. Das Rucksackproblem kam anno dunnemals bei uns im Studium vor, und natuerlich habe ich so ziemlich alles darueber vergessen; mit dem Untermengensummenproblem habe ich mich noch nie so genau befasst. Aber das bisschen, was ich im englischen Wikipedia-Artikel dazu gelesen habe, deutete meiner Meinung nach darauf hin, dass das Problem ganz schon mal einfacher wird, wenn die gewuenschte Summe GENAU erreicht werden soll, was ja bei Dir der Fall ist. Generell kannst Du die theoretischen Vorarbeiten und existierenden Algorithmen zum Problem auch einfach ignorieren und nach der Brute-Force-Methode die Summen halt alle ausrechnen. Aber das hast Du ja schon ansatzweise probiert (nehme ich an) und dabei festgestellt, dass das schnell unuebersichtlich wird. Nun ja, vielleicht braucht's halt doch ausnahmsweise etwas mehr als einen Hobbyprogrammierer Claus PS: http://mathworld.wolfram.com/SubsetSumProblem.html sieht auch nach einer guten Quelle aus. ------------------ OneSpace Designer Modeling FAQ: http://www.clausbrod.de/Osdm/
[Diese Nachricht wurde von clausb am 27. Feb. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Michael Kahle Mitglied Programmierer
Beiträge: 75 Registriert: 10.05.2002
|
erstellt am: 27. Feb. 2006 12:49 <-- editieren / zitieren --> Unities abgeben: Nur für seistandhaft
Vielleicht gibt es ja sogar noch zusaetzliche Randbedingungen, die dass ganze Problem weiter vereinfachen? Wie z.B. dass sich die groesseren Laengen immer aus kleineren zusammensetzten lassen? Dann wird es mehr zu einem Wechselgeld-Problem? Vielleicht kannst du noch ein bischen was zum Hintergrund schreiben, und ob wirklich beliebige Laengen moeglich sind oder nur ganz bestimmte 'Staffelungen'...
------------------ Viele Gruesse, Michael -- Spam goes SPAM@CoCreate.com and spam@postini.com ;-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Michael Kahle Mitglied Programmierer
Beiträge: 75 Registriert: 10.05.2002
|
erstellt am: 27. Feb. 2006 12:51 <-- editieren / zitieren --> Unities abgeben: Nur für seistandhaft
|
seistandhaft Mitglied Zeichner, Konstr., Admin.
Beiträge: 197 Registriert: 20.08.2004 Direct Drafting 20.1 Direct Modeling 20.1 ModelManager 20.1 SimufactForming
|
erstellt am: 27. Feb. 2006 13:28 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe mal ein Werkzeug angehängt um das es geht. Es handelt sich hierbei um eine Matrizenzusammenstellung mit der eine Schraube im Kaltpreßverfahren hergestellt wird. Das Macro brauch ich für die glatten Matrizen im Schaftbereich. Von diesen Matrizen haben wir ca. 2000 Stck. im Magazin liegen. Mit unterschiedlichen Innen-ø und Längen. Sollte sich die Schraubenlänge ändern, muß ich die Matrizen im Schaftbereich neu zusammensetzen. D.h. der ø-Bereich von ...- bis ... steht fest. Wenn dann noch ca. 30 Matrizen mit unterschiedlichen Längen übrig bleiben geht immer die puzzelei los. Einzelne Matrizen sind auch mehrfach vorhanden, das sollte in dem Macro jedoch nicht berücksichtigt werden da es sonst zu umfangreich wird. Ich hoffe das reicht als kurze Erklärung Gruß Jörg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 27. Feb. 2006 22:25 <-- editieren / zitieren --> Unities abgeben: Nur für seistandhaft
Unter http://www.scs.ryerson.ca/~ikokkari/ccps209/SubsetSum.java habe ich jetzt ein Java-Programm gefunden (geschrieben von Ilkka Kokkarinen), das wohl in etwa die Aufgabenstellung erfuellt. Ich hab's gerade auch mal nach C# konvertiert und in dieser Version angetestet; sah auf den ersten Blick ganz gut aus. Das Testprogramm erzeugt sich sein Test-Array von Integerzahlen gleich selbst, und zwar per Zufallsgenerator (Funktion main()). Hier muss man natuerlich stattdessen die echten Eingabewerte substituieren. Wenn ich Dich recht verstanden habe, soll die fertige Loesung in der OSDD-Makrosprache verfasst sein. Fuer eine solche Uebersetzung bin ich aber eher der Falsche, da waeren die OSDD-Makroprofis im Forum gefragt. Claus
------------------ OneSpace Designer Modeling FAQ: http://www.clausbrod.de/Osdm/ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
seistandhaft Mitglied Zeichner, Konstr., Admin.
Beiträge: 197 Registriert: 20.08.2004 Direct Drafting 20.1 Direct Modeling 20.1 ModelManager 20.1 SimufactForming
|
erstellt am: 28. Feb. 2006 07:56 <-- editieren / zitieren --> Unities abgeben:
|
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 28. Feb. 2006 08:20 <-- editieren / zitieren --> Unities abgeben: Nur für seistandhaft
Zitat: Original erstellt von seistandhaft: Klingt gut, kann ich das auch irgendwie testen? Habe von Java und C# keinen blassen Schimmer. Vielleicht gibt es ja auch eine Excel-Lösung.
Um den Code zu testen, uebersetze ihn mit einem Java-Compiler und lasse ihn laufen. Die Umsetzung nach C# und/oder nach VB.NET und dann nach VBA (Excel) ist nicht so schwer, aber wenigstens eine dieser Sprachen sollte man einigermassen verstehen. Offenbar gehoert der Code zu einer Vorlesungsreihe (http://www.scs.ryerson.ca/~ikokkari/ccps209.htm). Bevor man also irgendwas damit macht, muesste zunaechst einmal geklaert werden, ob man ihn ueberhaupt frei verwenden darf. Claus
------------------ OneSpace Designer Modeling FAQ: http://www.clausbrod.de/Osdm/ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 28. Feb. 2006 08:39 <-- editieren / zitieren --> Unities abgeben: Nur für seistandhaft
|
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 28. Feb. 2006 11:13 <-- editieren / zitieren --> Unities abgeben: Nur für seistandhaft
|
seistandhaft Mitglied Zeichner, Konstr., Admin.
Beiträge: 197 Registriert: 20.08.2004 Direct Drafting 20.1 Direct Modeling 20.1 ModelManager 20.1 SimufactForming
|
erstellt am: 28. Feb. 2006 11:35 <-- editieren / zitieren --> Unities abgeben:
Hallo Claus, es sollte schon ein OSDD-Macro werden. Die Zeichnung zu den Längen ist als Parametrikzeichnung hinterlegt und wird direkt als Einzelteil in den Zusammenbau geladen. Der SolidDesigner wird bei uns eher selten eingesetzt (leider). Gruß Jörg Muß jetzt los, hab ´nen halben Tag Urlaub. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 28. Feb. 2006 12:10 <-- editieren / zitieren --> Unities abgeben: Nur für seistandhaft
|
seistandhaft Mitglied Zeichner, Konstr., Admin.
Beiträge: 197 Registriert: 20.08.2004 Direct Drafting 20.1 Direct Modeling 20.1 ModelManager 20.1 SimufactForming
|
erstellt am: 01. Mrz. 2006 07:53 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen Claus, Ein OSDD-Macro wäre natürlich optimal, da ich es mit unserem Parametrik-Macro verknüpfen könnte. Ein Excel-Macro wäre i.O., da ich auch auf Nicht-CAD-Rechnern die Werkzeuge zusammenstellen könnte. Dann müsste die cls-Datei natürlich immer auf den neuesten Stand sein. Für ein LISP-Macro müsste ich den SolidDesigner starten. Da wir nur eine Wechsel-Licens haben wäre diese nicht immer verfügbar. Gruß Jörg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 01. Mrz. 2006 08:10 <-- editieren / zitieren --> Unities abgeben: Nur für seistandhaft
|
seistandhaft Mitglied Zeichner, Konstr., Admin.
Beiträge: 197 Registriert: 20.08.2004 Direct Drafting 20.1 Direct Modeling 20.1 ModelManager 20.1 SimufactForming
|
erstellt am: 01. Mrz. 2006 08:37 <-- editieren / zitieren --> Unities abgeben:
|
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 01. Mrz. 2006 08:51 <-- editieren / zitieren --> Unities abgeben: Nur für seistandhaft
Zitat: Original erstellt von seistandhaft: Hallo, mit LISP habe ich mich bis jetzt noch nicht befasst. Darum habe ich auch keine Ahnung wovon du sprichst. Jörg
Hmmm.... war das so schwierig? Also nochmal: OSDM beinhaltet zwar einen Lisp-Compiler und Lisp-Interpreter und kann daher benutzt werden, um Lisp-Code auszufuehren. Es gibt aber da draussen beliebig viele Lisp-Interpreter, viele davon sogar frei, und die kann man genausogut verwenden, um Lisp-Code auszufuehren, jedenfalls solange er keine Funktionalitaet verwendet, die OSDM-spezifisch ist. Das waere bei einem Algorithmus fuer das Untermengenproblem der Fall; dafuer braucht man nichts OSDM-spezifisches. Claus
------------------ OneSpace Designer Modeling FAQ: http://www.clausbrod.de/Osdm/ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cartoonhero Mitglied
Beiträge: 246 Registriert: 21.04.2004
|
erstellt am: 01. Mrz. 2006 09:14 <-- editieren / zitieren --> Unities abgeben: Nur für seistandhaft
Hallo zusammen, werden alle möglichen Kombinationen gebraucht, oder würde eine (die erste) passende reichen ... damit wäre der Rechenaufwand in vielen Fällen zu minimieren ... und um die verschachtelten Schleifen zu umgehen würde ich eine Endrekursion vorschlagen ... Abbruchbedingung: "passendes Ergebnis gefunden oder alle Kombinationen erfolglos geprüft" bei 20 - 30 Zeilen sollte die Laufzeit auch mit exponentiellem Ansatz im Rahmen bleiben. allerdings weiss ich nicht ob das in excel/vba bzw. osdd möglich ist. ... und mehrfach vorhandene Matrizen könnte man durch mehrfach Einträge in der Liste berücksichtigen ... allerdings steigt dabei die Laufzeit. Gruss cartoonhero Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
seistandhaft Mitglied Zeichner, Konstr., Admin.
Beiträge: 197 Registriert: 20.08.2004 Direct Drafting 20.1 Direct Modeling 20.1 ModelManager 20.1 SimufactForming
|
erstellt am: 01. Mrz. 2006 09:14 <-- editieren / zitieren --> Unities abgeben:
D.h. wenn ich mir einen Lisp-Interpreter herunterladen würde, könnte ich ein Lisp-Macro starten? Zitat: Taete es vielleicht auch eine Implementierung in Lisp?
Wäre das ohne viel Aufwand möglich? Was würde das Macro machen? Jörg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
seistandhaft Mitglied Zeichner, Konstr., Admin.
Beiträge: 197 Registriert: 20.08.2004 Direct Drafting 20.1 Direct Modeling 20.1 ModelManager 20.1 SimufactForming
|
erstellt am: 01. Mrz. 2006 09:27 <-- editieren / zitieren --> Unities abgeben:
Hallo, es müssten alle möglichen Kombinationen berechnet werden, da ich danach anhand der zugehörigen Durchmesser die optimale Werkzeugzusammensetzung aussuchen muss. Da die Längenunterschiede aber relativ groß sind gehe ich von nicht mehr als max. 10 passenden Kombinationen aus. Matrizen die mehrfach vorhanden sind, sind in der Datenbank nicht hinterlegt, sollten somit auch nicht berücksichtigt werden. Gruß Jörg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 01. Mrz. 2006 10:35 <-- editieren / zitieren --> Unities abgeben: Nur für seistandhaft
|
seistandhaft Mitglied Zeichner, Konstr., Admin.
Beiträge: 197 Registriert: 20.08.2004 Direct Drafting 20.1 Direct Modeling 20.1 ModelManager 20.1 SimufactForming
|
erstellt am: 01. Mrz. 2006 12:35 <-- editieren / zitieren --> Unities abgeben:
|
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 01. Mrz. 2006 13:50 <-- editieren / zitieren --> Unities abgeben: Nur für seistandhaft
|
seistandhaft Mitglied Zeichner, Konstr., Admin.
Beiträge: 197 Registriert: 20.08.2004 Direct Drafting 20.1 Direct Modeling 20.1 ModelManager 20.1 SimufactForming
|
erstellt am: 01. Mrz. 2006 15:01 <-- editieren / zitieren --> Unities abgeben:
|
seistandhaft Mitglied Zeichner, Konstr., Admin.
Beiträge: 197 Registriert: 20.08.2004 Direct Drafting 20.1 Direct Modeling 20.1 ModelManager 20.1 SimufactForming
|
erstellt am: 09. Mrz. 2006 11:35 <-- editieren / zitieren --> Unities abgeben:
Hallo, so wie es aussieht gibt es wohl keine einfachere Lösung für meine Aufgabenstellung. Dann werd ich mich mal ranmachen Schleife für Schleife zu programmieren. Danke für die Mühe, die mich jedoch nicht weitergebracht hat. Gruß Jörg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 09. Mrz. 2006 12:09 <-- editieren / zitieren --> Unities abgeben: Nur für seistandhaft
Zitat: Original erstellt von seistandhaft: So, CLISP habe ich jetzt installiert. Habe jedoch keine Ahnung, wie ich damit ein LISP-Macro starte.
Ziemlich genauso wie in OSDM auch. Unter der Annahme, dass Du meinen Untermengensummen-Code in eine Datei namens subsetsum.lsp abspeicherst, kannst Du ihn wie folgt testen:
- clisp.exe starten
- (load "/wo/auch/immer/subsetsum.lsp")
- (subset-sum-test 15)
Wenn Du aber schon daran scheiterst, sieht es wirklich so aus, dass Du auch die Aufgabe, den vorgefertigten Code an Deine konkreten Beduerfnisse (sprich: Eingabedaten) anzupassen, nicht bewaeltigen wirst. Es gibt aber allenthalben sehr gute Einfuehrungen in Lisp und ins Programmieren allgemein. Mit der IKIT-Dokumentation liefern wir beispielsweise "The ME Macro Programmer's Introduction to Lisp" aus (siehe auch http://www.xandorra.com/doc/13/osdm/integration_kit/contrib/me2lisp.html ). Das ist fuer jemanden, der schon ein paar OSDD-Makros gesehen hat, ein relativ schmerzfreier Weg, sich mit Lisp anzufreunden. ------------------ OneSpace Designer Modeling FAQ: http://www.clausbrod.de/Osdm/
[Diese Nachricht wurde von clausb am 09. Mrz. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
seistandhaft Mitglied Zeichner, Konstr., Admin.
Beiträge: 197 Registriert: 20.08.2004 Direct Drafting 20.1 Direct Modeling 20.1 ModelManager 20.1 SimufactForming
|
erstellt am: 09. Mrz. 2006 13:01 <-- editieren / zitieren --> Unities abgeben:
Hallo Claus, LISP-Macro läuft, erkenne auch was es tut, kriege es aber nicht hin es anzupassen. Um mich in LISP einzuarbeiten fehlt die Zeit. Für "The ME Macro Programmer's Introduction to Lisp" müsste ich wohl erst einmal Englisch-Untericht nehmen. Also werde ich wohl bei dem OSSD-Macro bleiben und Schleife für Schleife zu programmieren. Trotzdem Danke für deine Mühe Gruß Jörg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 09. Mrz. 2006 13:08 <-- editieren / zitieren --> Unities abgeben: Nur für seistandhaft
|
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 13. Mrz. 2006 21:55 <-- editieren / zitieren --> Unities abgeben: Nur für seistandhaft
|
seistandhaft Mitglied Zeichner, Konstr., Admin.
Beiträge: 197 Registriert: 20.08.2004 Direct Drafting 20.1 Direct Modeling 20.1 ModelManager 20.1 SimufactForming
|
erstellt am: 14. Mrz. 2006 09:20 <-- editieren / zitieren --> Unities abgeben:
Hallo Claus, habe mir das VBA-Macro angeschaut und getestet. Ich würde es natürlich gerne mit einer aus unserer Datenbank erstellten Excel-Liste testen und habe deshalb mal eine Beispielliste angehängt. Vielleich gibt es ja hier auch einige Excel-/VBA-Spezialisten die mir da weiterhelfen können. In der 1. Spalte steht die Zeichnungsnummer, in der 2. der Werkzeugaussendurchmesser, in der 3. und 4. der Bohrungsdurchmesser und in der 5. die Länge. Oder sollte ich mit der Aufgabenstellung gleich ins Excel-Forum gehen? Gruß Jörg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 14. Mrz. 2006 09:24 <-- editieren / zitieren --> Unities abgeben: Nur für seistandhaft
Welche der Spalten die richtige ist, um in das Feld 'numbers' in meinem Code ueberfuehrt zu werden, das musst Du schon selbst wissen. Sobald Du es weisst, musst Du die betreffende Spalte nur noch auslesen. Diesen Teil Deiner Hausaufgaben ueberlasse ich aber gerne Dir selbst Claus
------------------ OneSpace Designer Modeling FAQ: http://www.clausbrod.de/Osdm/ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
seistandhaft Mitglied Zeichner, Konstr., Admin.
Beiträge: 197 Registriert: 20.08.2004 Direct Drafting 20.1 Direct Modeling 20.1 ModelManager 20.1 SimufactForming
|
erstellt am: 14. Mrz. 2006 12:02 <-- editieren / zitieren --> Unities abgeben:
Dazu müsste ich mich aber VBA auskennen, was jedoch nicht der Fall ist. Habe schon 2 Stunden im Internet gestöbert, aber keine Anleitung gefunden wie man Excel mit VBA-Macros verbindet oder Daten übergibt. Gruß Jörg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 14. Mrz. 2006 12:07 <-- editieren / zitieren --> Unities abgeben: Nur für seistandhaft
|
seistandhaft Mitglied Zeichner, Konstr., Admin.
Beiträge: 197 Registriert: 20.08.2004 Direct Drafting 20.1 Direct Modeling 20.1 ModelManager 20.1 SimufactForming
|
erstellt am: 14. Mrz. 2006 13:18 <-- editieren / zitieren --> Unities abgeben:
Auf dieser Seite war ich auch und habe mir einige macros angeschaut. Aber was nützt es mir wenn ich nicht einmal weiß was ich in excel eingeben muß um das macro zu starten und ob ich dein macro richtig eingebunden habe. Ich habe heute zum erstenmal den VBA-Editor gestartet und weiß nicht wie er funktioniert. Auch für Excel bin ich kein Fachmann. Jörg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 14. Mrz. 2006 13:40 <-- editieren / zitieren --> Unities abgeben: Nur für seistandhaft
Ein bisschen wirst Du auch selbst mitarbeiten muessen. Immerhin hast Du Dir ja schon die Problemanalyse gespart, und Beispielcode in mehreren Sprachen hast Du nun auch von mir bekommen. Alles in allem war ich damit zwei Tage beschaeftigt - jemandem auch noch von der Pike auf das Programmieren beizubringen, dafuer reicht mein Zeitbudget nicht, sorry. Aber es gibt ja zum Glueck genuegend andere Wege, um sich die paar Handgriffe anzueignen: Buecher, Kurse, Tutorien, allerlei Websites, Foren. Vielleicht gibt es ja im VBA-Forum Leute, die Dir auch die letzten fehlenden Handgriffe abnehmen koennen und wollen. Ob das ratsam ist, ist eine andere Frage: Immerhin wirst Du den Code vermutlich fuer Eure Firma pflegen muessen; dafuer sollte man ihn auch einigermassen verstehen. Aber vielleicht gibt es ja auch in Eurer Firma Leute, die programmieren koennen? Claus
------------------ OneSpace Designer Modeling FAQ: http://www.clausbrod.de/Osdm/ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
seistandhaft Mitglied Zeichner, Konstr., Admin.
Beiträge: 197 Registriert: 20.08.2004 Direct Drafting 20.1 Direct Modeling 20.1 ModelManager 20.1 SimufactForming
|
erstellt am: 14. Mrz. 2006 14:03 <-- editieren / zitieren --> Unities abgeben:
Und genau das ist der Grund, warum ich ein OSDD-Macro schreiben wollte. Da hat mann ein wenig Ahnung. Natürlich würde ich mich auch gerne mit VBA befassen aber da ist halt die fehlende Zeit. Mal sehen ob ich Zuhause dazu komme. Wäre ja Schade wenn deine Bemühungen umsonst gewesen wären. Also nochmals Vielen Dank Claus Gruß Jörg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 14. Mrz. 2006 16:43 <-- editieren / zitieren --> Unities abgeben: Nur für seistandhaft
Zitat: Original erstellt von seistandhaft: Und genau das ist der Grund, warum ich ein OSDD-Macro schreiben wollte.
Geht aber wegen der Limitationen der OSDD-Makrosprache vermutlich nur dann, wenn Du in der Lage waerest, meine Loesung von einer rekursiven in eine iterative Loesung zu verwandeln. Wozu es dann wieder allgemeine Erfahrung mit Algorithmen und mit dem Programmieren braucht. Wie Du Dich also drehst und wendest, wirst Du halt was lernen muessen! Claus
------------------ OneSpace Designer Modeling FAQ: http://www.clausbrod.de/Osdm/ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
H.annes Mitglied CAD-Pfriemler
Beiträge: 482 Registriert: 02.07.2001 OSDD 8.7 - 13.20 ; OSDM 13.00
|
erstellt am: 15. Mrz. 2006 07:38 <-- editieren / zitieren --> Unities abgeben: Nur für seistandhaft
Morgen! Interessant ist, dass Rekursion im Makro prinzipiell funktioniert - bzw. funktioniert hat. Irgendwann tritt halt ein "Makro-Stapelregisterüberlauf" auf. Das Blöde dran ist, dass dieses Stapelregister ab der Version 13 mit 2500 begrenzt wurde - warum auch immer. Probiert mal diese Sequenz in OSDD 14, 13 und 12 aus: Code: LET Ii 0DEFINE Rekursiv LET Ii (Ii+1) DISPLAY_NO_WAIT Ii Rekursiv END_DEFINE Rekursiv
In OSDD 13 & 14 ist bei genau 2499 Schluss, in OSDD 12 hab ich das Makro bei 5000000 abgebrochen. Damit werden rekursive Makros ab der Version 13 praktisch verhindert. Schade! Hannes ------------------ schön langsam. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 15. Mrz. 2006 09:11 <-- editieren / zitieren --> Unities abgeben: Nur für seistandhaft
Interessante Beobachtung! Man betrachte aber nun folgendes Makro: Code:
DEFINE Foo PARAMETER N DISPLAY_NO_WAIT N IF (N>0) Foo (N-1) END_IF END_DEFINE
In OSDD 11.6 ist bei etwa 'Foo 1250' Schicht im Schacht. In aktuellen Versionen kommt man so etwa bis 'Foo 832'. Das ist zwar immer noch ein Unterschied, aber nicht mehr ein so prinzipiell erscheinender wie bei Deinem Makro. Unterschiede zwischen unseren Makros: Ich verwende Uebergabeparameter und ein IF. Beides koennte Einfluss auf die Stapeltiefe haben. Ich werde mich mal intern schlau machen, was es damit auf sich hat. Claus
------------------ OneSpace Designer Modeling FAQ: http://www.clausbrod.de/Osdm/ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 15. Mrz. 2006 22:43 <-- editieren / zitieren --> Unities abgeben: Nur für seistandhaft
Zitat: Original erstellt von H.annes: Das Blöde dran ist, dass dieses Stapelregister ab der Version 13 mit 2500 begrenzt wurde - warum auch immer.
Ich habe nachgehakt - die maximale Stapeltiefe hat sich nicht geaendert; die war schon frueher begrenzt. Was sich eventuell geaendert hat, ist die Art, wie der Stapel beim Ablauf von Makros verwendet wird. Offenbar verbrauchen bestimmte Operationen inzwischen also mehr Speicher auf dem Stapel als frueher. Details weiss ich noch nicht. Die Nachforschungen haben mich dann noch einmal inspiriert, mich mit der Makrosprache zu beschaeftigen. Das Ergebnis ist nun unter http://www.clausbrod.de/Osdm/MacroSubsetSum zu begutachten. Vielleicht kann seistandhaft damit ja nun etwas anfangen... Claus
------------------ OneSpace Designer Modeling FAQ: http://www.clausbrod.de/Osdm/ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 16. Mrz. 2006 07:24 <-- editieren / zitieren --> Unities abgeben: Nur für seistandhaft
Zitat: Original erstellt von clausb: Das Ergebnis ist nun unter http://www.clausbrod.de/Osdm/MacroSubsetSum zu begutachten. Vielleicht kann seistandhaft damit ja nun etwas anfangen...
In der ersten Version, die bis gerade eben (etwa 7:20 Uhr) auf meiner Website stand, war noch ein Fehler, den ich gerade korrigiert habe; er fuehrte dazu, dass Ergebnisse mehrfach ausgegeben wurden. Falls sich also jemand den Code bereits vorher geholt haben sollte, dann sollte er das jetzt nochmal tun. Claus ------------------ OneSpace Designer Modeling FAQ: http://www.clausbrod.de/Osdm/
[Diese Nachricht wurde von clausb am 16. Mrz. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
seistandhaft Mitglied Zeichner, Konstr., Admin.
Beiträge: 197 Registriert: 20.08.2004 Direct Drafting 20.1 Direct Modeling 20.1 ModelManager 20.1 SimufactForming
|
erstellt am: 16. Mrz. 2006 12:33 <-- editieren / zitieren --> Unities abgeben:
Hallo Claus, habe gerade Dein OSDD-Macro mit aktuellen Daten aus unserer Datenbank gefüttert. 21 Zeilen mit Werten von 1,5 bis 114. Als Target habe ich 150 eingeben. Habe mit ca. 5-6 passenden Kombinationen gerechnet. Gefunden wurden jedoch 16 mögliche Kombinationen. Das ist einfach SUUUPER. Ich möchte Dir hiermit noch mal recht herzlich für Deine Mühe danken. Gruß Jörg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 16. Mrz. 2006 13:37 <-- editieren / zitieren --> Unities abgeben: Nur für seistandhaft
Freut mich, dass der Code nun Anwendung findet! Was ich noch anmerken wollte: Mein Beispielcode geht von ganzzahligen Werten aus. Bei Fliesskommawerten, wie sie in Deinem konkreten Beispiel vorkommen, sollte man mit Epsilontik arbeiten, um nicht gueltige Loesungen zu verpassen. Naeheres dazu beispielsweise unter http://www.clausbrod.de/Osdm/OsdmFaqLisp#RoundingErrors . Beispiel fuer eine Anpassung: Statt "IF Target == 0" schreibt man bei Fliesskommazahlen besser "IF (ABS(Target) < Epsilon)", wobei "Epsilon" ein kleiner, nach der gewuenschten Genauigkeit gewaehlter Wert ist, also beispielsweise 0.001. Es kommen noch ein paar weitere Vergleiche im Code vor, die sinngemaess angepasst werden sollten. Claus
------------------ OneSpace Designer Modeling FAQ: http://www.clausbrod.de/Osdm/ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 17. Mrz. 2006 12:26 <-- editieren / zitieren --> Unities abgeben: Nur für seistandhaft
Zitat: Original erstellt von H.annes:
Code: LET Ii 0DEFINE Rekursiv LET Ii (Ii+1) DISPLAY_NO_WAIT Ii Rekursiv END_DEFINE Rekursiv
In OSDD 13 & 14 ist bei genau 2499 Schluss
Ich habe das uebrigens weitergegeben, und siehe da, es stellte sich heraus, dass das nicht von einer prinzipiellen Umstellung herruehrt, sondern schlicht von einem Fehler, der ab OSDD 2005 zuschlaegt. Danke nochmals fuer die Meldung und das Codebeispiel! Claus
------------------ OneSpace Designer Modeling FAQ: http://www.clausbrod.de/Osdm/ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
H.annes Mitglied CAD-Pfriemler
Beiträge: 482 Registriert: 02.07.2001 OSDD 8.7 - 13.20 ; OSDM 13.00
|
erstellt am: 21. Mrz. 2006 14:35 <-- editieren / zitieren --> Unities abgeben: Nur für seistandhaft
Zitat: Original erstellt von clausb: Ich habe das uebrigens weitergegeben, und siehe da, es stellte sich heraus, dass das nicht von einer prinzipiellen Umstellung herruehrt, sondern schlicht von einem Fehler, der ab OSDD 2005 zuschlaegt. Danke nochmals fuer die Meldung und das Codebeispiel!Claus
Vielen Dank! Dann brauch ich unseren Supporter nicht zu quälen Hannes ------------------ schee kloaweis ... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |