| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: Lsp wird nicht geschlossen (1081 mal gelesen)
|
Bauvermesser Mitglied Vermesser
Beiträge: 460 Registriert: 18.03.2006 AMD 2600, 2024RAM ,WIN XP PROF-SP3, ACAD 2005, Firmenrechner,
|
erstellt am: 29. Mai. 2013 22:02 <-- editieren / zitieren --> Unities abgeben:
Hallo, habe ein Problem mit einer selbst zusammengebastelten lsp. Mit der lsp lese ich Station und Rechtswert aus um schnell mal ein Profil zu erstellen. 1. Die lsp kann nicht über ein Butten nach Bedarf geladen werden. Da ich diese jedoch selten brauche, wollte ich diese nicht beim Hochfahren immer mit Laden, dann läuft sie. 2.wenn Lsp abgearbeitet, kann die erstellte Punktdatei nicht gelöscht oder bearbeitet werden, es kommt der Hinweis das diese bereits verwendet wird. Es geht erst wenn ACAD geschlossen wird. ich hänge mal die lsp an und würde um hilfe bitten
------------------ Gruß vom Bauvermesser; Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
reltro Mitglied student
Beiträge: 125 Registriert: 08.11.2009 Acad 2012 - VBA,Lisp Revit 2012 3dsMax 2012 Rhino 5 - GH,Pyhton 3,rhino.Common<P>Win 7 - i7 4x3.2GHz - 8Gb DDR3
|
erstellt am: 29. Mai. 2013 22:27 <-- editieren / zitieren --> Unities abgeben: Nur für Bauvermesser
hello ungetestet... ganz zu beginn des lisps öffnest du eine Datei hin zur Variable 'file' Kurz darunter ist zwar ein (close file) welches jedoch auskommentiert ist. Versuch das mal auszubessern und gib bescheid... bzw. Warum öffnest du die Datei 2mal? es sollte einmal doch genügen, weil der Pfad ja der selbe ist. lg Reltro [Diese Nachricht wurde von reltro am 29. Mai. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bauvermesser Mitglied Vermesser
Beiträge: 460 Registriert: 18.03.2006 AMD 2600, 2024RAM ,WIN XP PROF-SP3, ACAD 2005, Firmenrechner,
|
erstellt am: 30. Mai. 2013 09:21 <-- editieren / zitieren --> Unities abgeben:
Ja das ist alles etwas verschnippselt, weil ich eben schon mehrere Versuche mit 'close' und 'datei öffnen' und schließen gemacht habe, komme aber zu keiner Verbesserung. Unklar ist, was für den nicht möglichen Start über ein Butten, verantwortlich ist. Ich denke dort liegt das Problem. Da ich aber mehrere LSP zum Auslesen von Koordinaten und Texten und Atrib in Anwendung habe, ist mir eben beim Vergleich, die Lösung unklar. Versuche heute nochmal die zwei Vorschläge zu testen, denke aber das ich das alles schon durch habe. ------------------ Gruß vom Bauvermesser; Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 30. Mai. 2013 10:30 <-- editieren / zitieren --> Unities abgeben: Nur für Bauvermesser
Hallo Bauvermesser, zu 1) Die lsp kann nicht über ein Butten nach Bedarf geladen werden: Wie versuchst Du das denn? Bei mir sieht das immer etwa so aus: (if (not c:kpitd) (load "ggf. und name deiner Lisp datei")) kpitd In der Lisp sind dann IMHO noch ein paar struktuelle "Eier", der (defun dt:str ...) Block z. B. kann außerhalb der Hauptroutine stehen, erhöht einfach die Lesbarkeit. Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
reltro Mitglied student
Beiträge: 125 Registriert: 08.11.2009 Acad 2012 - VBA,Lisp Revit 2012 3dsMax 2012 Rhino 5 - GH,Pyhton 3,rhino.Common<P>Win 7 - i7 4x3.2GHz - 8Gb DDR3
|
erstellt am: 30. Mai. 2013 10:42 <-- editieren / zitieren --> Unities abgeben: Nur für Bauvermesser
Hello... Ich habs das ganze jetzt mal rauskopiert und neu zusammengestellt... hab den Fehler, sofern überhaupt einer vorhanden ist nicht gefunden. Bei mir tritt das selbe wie von dir beschriebene verhalten der Datei auf... Hab am ende die Datei einfach 2x ge'closed'd und dann hauts hin, weiß aber nicht warum... [EDIT]: da war wohl zu voreilig... es klappt natürlich auch mit einem close... Hab um die while-schleife noch ein vl-catch-all-apply gepackt damit dieser Teil auch wirklich durchläuft und das (close file) erreicht wird. Zu dem Button. Wenn ich dich richtig verstehe soll das Lisp auf ButtonDruck laufen? würde folgendes vorschlagen:
Den ausführbaren Code in eine lambda-expr packen und dann per Button loaden... Button tut dann: (load "D:as/ist/der/Pfad/der/Lisp/Datei.lsp") Mit dem Inhalt der Datei.lsp:
Code:
( (lambda ( / file DT:STR-STRINGFILL txt1 txt2 txt1e txt2e antw) (alert (strcat "\n möglichst nur mit Höhen mit reinem 'TEXT' wählen " "\n Station wird Y Wert " ) ) (defun DT:STR-STRINGFILL(STRING FILLCHAR MAXLENGTH RIGHT?) (if (and (=(type STRING) 'STR) (=(type FILLCHAR) 'STR) (=(type MAXLENGTH) 'INT) ) (progn (while(< (strlen STRING) MAXLENGTH) (if RIGHT? (setq STRING (strcat STRING FILLCHAR)) (setq STRING (strcat FILLCHAR STRING)) ) ) STRING ) ) ) (setq file (open "D:/ProfilPU.txt" "a")) (write-line (strcat " NR Stat/RW/Y Höhe/X__ Z-Wert__LL__COD neuer Profildatensatz ") file) (vl-catch-all-apply '(lambda (/) (while (or (not antw) (= antw "J")) (setq txt1 (entsel "\nStationstext wählen:") txt1 (if txt1 ; Station (cdr (assoc 1 (entget (setq txt1e (car txt1))))) ) ) (if txt1 (progn (setq txt2 (entsel "\nzugehörige Geländehöhe wählen:") txt2 (if txt2 ; Höhe Punkt (cdr (assoc 1 (entget (setq txt2e (car txt2))))) ) ) ) (princ "\n!!!Keinen Stationstext gewählt!!!") ) (if (and txt1 txt2) (progn (write-line (strcat "000 " (DT:STR-STRINGFILL txt1 "0" 9 nil) " " (DT:STR-STRINGFILL txt2 "0" 8 'T) " " "000000 00 000" ) file ) ;; In datei steht dann : 000 000000100 374.0200 000000 00 000 ;; 000 Station Höhe.... höhe.. lin cod ;; 000 y x z 00 000 (redraw txt1e 2) ;; 2= wird nach Auswahl ausgeblendet (redraw txt2e 1) ;; 1= bleibt sichtbar ) (princ "---Fehlende Werte ->Keine Daten in Datei geschrieben---" ) ) (initget "J N") (setq antw (getkword "\nWeiter Ja/Nein<J>")) ) ) ) (close file) (princ) ) )
[Diese Nachricht wurde von reltro am 30. Mai. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bauvermesser Mitglied Vermesser
Beiträge: 460 Registriert: 18.03.2006 AMD 2600, 2024RAM ,WIN XP PROF-SP3, ACAD 2005, Firmenrechner,
|
erstellt am: 31. Mai. 2013 22:31 <-- editieren / zitieren --> Unities abgeben:
danke für die Hilfe, eigentlich müsste es laufen vermute aber das mein 2005 ACAD mit etwas nicht klar kommt. Fehler #<SUBR @061a1190 -lambda-> wenn Zeile mit -lambda- auskommentiert und die klammer korrigiert dann Syntaxfehler bitte noch einen Versuch ------------------ Gruß vom Bauvermesser; Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
reltro Mitglied student
Beiträge: 125 Registriert: 08.11.2009 Acad 2012 - VBA,Lisp Revit 2012 3dsMax 2012 Rhino 5 - GH,Pyhton 3,rhino.Common<P>Win 7 - i7 4x3.2GHz - 8Gb DDR3
|
erstellt am: 01. Jun. 2013 08:49 <-- editieren / zitieren --> Unities abgeben: Nur für Bauvermesser
Hey... hab kein acad2005... bei mir läuft das ganze einwandfrei... welches lambda hast du denn auskommentiert? das ganz oben oder jenes nach (vl-catch-all-apply ...) ? sollte es 2teres sein musst du natürlich auch das vl-catch-all-apply entfernen... versuch mal das ganze in eine benannte funktion zu packen. sprich, das erste lambda ersetzten durch eben (defun C:... du weißt schon wenns dann nicht läuft muss es wohl das "vl-catch-all-apply"-konstrukt sein... Versuch dort das '(lambda (/) ... durch (function (lambda (/) ... zu ersetzen... oder eben weck lassen... in diesem fall wäre eine *error*-function von nöten die ein drücken der ESC-Taste abfängt um das schließen der Datei zu garantieren... schwer ohne testumgebung... lg
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |