Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Lsp wird nicht geschlossen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Lsp wird nicht geschlossen (1070 mal gelesen)
Bauvermesser
Mitglied
Vermesser


Sehen Sie sich das Profil von Bauvermesser an!   Senden Sie eine Private Message an Bauvermesser  Schreiben Sie einen Gästebucheintrag für Bauvermesser

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


kpitd.txt

 
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


Sehen Sie sich das Profil von reltro an!   Senden Sie eine Private Message an reltro  Schreiben Sie einen Gästebucheintrag für reltro

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Bauvermesser 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Bauvermesser an!   Senden Sie eine Private Message an Bauvermesser  Schreiben Sie einen Gästebucheintrag für Bauvermesser

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von spider_dd an!   Senden Sie eine Private Message an spider_dd  Schreiben Sie einen Gästebucheintrag für spider_dd

Beiträge: 1111
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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Bauvermesser 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von reltro an!   Senden Sie eine Private Message an reltro  Schreiben Sie einen Gästebucheintrag für reltro

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Bauvermesser 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Bauvermesser an!   Senden Sie eine Private Message an Bauvermesser  Schreiben Sie einen Gästebucheintrag für Bauvermesser

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von reltro an!   Senden Sie eine Private Message an reltro  Schreiben Sie einen Gästebucheintrag für reltro

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Bauvermesser 10 Unities + Antwort hilfreich

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz