| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Tage addieren mit VBScript (2109 mal gelesen)
|
Niggemann Mitglied
Beiträge: 159 Registriert: 31.10.2003 XP Home ACAD 2004, ACAD 2007, Office 2003, RAM 1 GB, Prozessor AMD Athlon 64 x 2 Dual Core 3800+
|
erstellt am: 22. Jun. 2013 22:35 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum, ich hab mir was zusammengebastelt aus anderen Beiträgen und möchte ein Datum herausbekommen bei dem 20 Tage hinzugerechnet wurden. (setq datum "22.06.2013") (defun Tageaddieren ( datum / VBS ret ) (vl-load-com) (setq VBS (vlax-get-or-create-object "ScriptControl")) (vlax-put VBS "Language" "VBScript") (if (= -1 (vlax-invoke VBS "EVAL" (strcat "IsDate(\"" datum "\")"))) (setq ret (vlax-invoke VBS "EVAL" (strcat "DateAdd(\"d\", 20, \"" datum "\")" ))) (setq ret nil) ) (vlax-release-object VBS) ret ) als Rückgabe bekomme ich aber nur eine Zahl "41467.0" und kein Datum. Da meine Kenntnisse was vlax-XXX angeht nahezu gleich 0 sind komme ich einfach nicht weiter. Kann mir vieleicht einer auf die Sprünge helfen? Dank im Voraus. Gruß Niggemann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
alterHausmeister Mitglied Hausmeister
Beiträge: 470 Registriert: 02.02.2009
|
erstellt am: 24. Jun. 2013 08:40 <-- editieren / zitieren --> Unities abgeben: Nur für Niggemann
|
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 24. Jun. 2013 08:41 <-- editieren / zitieren --> Unities abgeben: Nur für Niggemann
Hallo Niggemann, ich habe Deinen Programmcode nicht kontrolliert, da ich auch immer mit den bsagten Funktionen kämpfe. In der Anlage ist aber meine Funktion zu Ermittlung des Datums. Edit: Aufruf zum Beispiel: (datum_ermitteln 20 "" "" "dd.mo.yyyy") Viele Grüße Bernd
[Diese Nachricht wurde von Bernd10 am 24. Jun. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
Beiträge: 1968 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 24. Jun. 2013 11:47 <-- editieren / zitieren --> Unities abgeben: Nur für Niggemann
das Datum, sowie die Uhrzeit steckt in der Systemvariablen 'CDATE' hier mal ein codeschnipsel um diese auszulesen und zu verarbeiten: Code: (defun EARX:AUX:DATUM (/ ;;;Deklaration von lokalen Variablen EARX_DATUM ;Wert der Systemvariablen CDATE[String] ) (setq EARX_DATUM (rtos (getvar "CDATE") 2 10)) ;;;Rückgabe des Datumstextes (strcat (substr EARX_DATUM 7 2) ;Tag "." (substr EARX_DATUM 5 2) ;Monat "." (substr EARX_DATUM 3 2) ;Jahr " " (substr EARX_DATUM 10 2) ;Stunden ":" (substr EARX_DATUM 12 2) ;Minuten " UHR" ) ;_ Ende von strcat ) ;_ Ende von defun EARX:AUX:DATUM
Rein theoretisch könntest du jetzt die Zeile:
Code: (substr EARX_DATUM 7 2)
durch
Code: (rtos(+ 20(atoi(substr EARX_DATUM 7 2)))2 0)
ersetzen. Aber wenn du zum 25. 20 Tage hinzuzählst, kommt der 45. raus - und den kannsde auf dem Kalender ewig suchen ------------------ Gruß CADwiesel Besucht uns im CHAT
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
xem Mitglied Zeichner
Beiträge: 847 Registriert: 07.08.2008 Software: AutoCAD 2022 - 64bit Windows 10 Pro - 64bit PDFCreator 1.0.2 - 32bit Ghostscript 9.0 - 64bit PDF-XChange Viewer - 64bit GIMP 2.6.8 - 64bit MS Office 2013 - 32bit Opera 12 - 32bit MacroX - 32bit 7-zip - 64bit ----------------------- Hardware: Intel i5 680 3,6GHz @ 4GHz 8GB RAM 1333MHz nVidia GTX 460 1024MB Intel SSD 2.5 80GB X25-M Samsung SyncMaster 245B+ Iiyama ProLite E1900s Logitech mx518 Logitech G11 Roccat Sense Glacier Blue
|
erstellt am: 24. Jun. 2013 13:49 <-- editieren / zitieren --> Unities abgeben: Nur für Niggemann
|
Niggemann Mitglied
Beiträge: 159 Registriert: 31.10.2003 XP Home ACAD 2004, ACAD 2007, Office 2003, RAM 1 GB, Prozessor AMD Athlon 64 x 2 Dual Core 3800+
|
erstellt am: 24. Jun. 2013 20:37 <-- editieren / zitieren --> Unities abgeben:
@ Hausmeister, die Idee ist nicht schlecht werde meinen Beitrag dort nochmal reintellen weil ich mir denke das irgetetwas mit VL... davor oder dahinter stehen muß. @Bernt, mit deinem Vorschlag kann ich schon mal super weiter machen, mein Problem ist nur das ich ein Datum vorgegeben bekomme und eben X Tage drauf rechnen muß. Danke. @Cadwiesel, bei den 45 war ich auch schon und habe gemerkt das es nicht klappt. Grüße Niggemann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Niggemann Mitglied
Beiträge: 159 Registriert: 31.10.2003 XP Home ACAD 2004, ACAD 2007, Office 2003, RAM 1 GB, Prozessor AMD Athlon 64 x 2 Dual Core 3800+
|
erstellt am: 01. Jul. 2013 22:51 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, geht doch: (defun Tageaddieren (DATUM TAGE / VBS RET XX ) (vl-load-com) (setq VBS (vlax-get-or-create-object "ScriptControl")) (vlax-put VBS "Language" "VBScript") (if (= -1 (vlax-invoke VBS "EVAL" (strcat "IsDate(\"" DATUM "\")"))) (progn (setq XX (fix (vlax-invoke VBS "EVAL" (strcat "DateAdd(\"d\",\"" TAGE "\", \"" DATUM "\")"))) RET (vlax-invoke VBS "EVAL" (strcat "FormatDateTime(\""(itoa XX)"\", vbShortDate)"))));FormatDa (setq RET nil);sonst );ende if (vlax-release-object VBS) RET ) Damit kannst du auf jede belibige Datum X Tage auf oder abrechnen. Schaltjahre und der 29.Feb. werden auch berücksichtigt. Vieleicht hilft es dir. Gruß Niggemann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |