Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  LISP: Höhenkoten platzieren

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:  LISP: Höhenkoten platzieren (1654 mal gelesen)
Lina265
Mitglied
Vermessung


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

Beiträge: 13
Registriert: 05.07.2018

AutoCAD 2018

erstellt am: 03. Aug. 2018 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


zwert.lsp


Gemini2.txt

 
Hallo zusammen

Ich habe ein LISP, mit welchem ich Punkte aus einem Aufnahmefile absetzen möchte. Die Punkte sind codiert (Spalte 4 im TXT - File)
Bei denjenigen Punkten, mit Code 140 und 150 möchte ich die Beschriftung des Z - Wertes hinzufügen.
Stand jetzt ist so, dass das Programm nach der 1. eingefügten Nummer abbricht....
Fehler: Datenfolge ist geschlossen: #<FILE internal>

(Im LISP ist nur das Absetzen der Beschriftung, der Rest hat geklappt)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 03. Aug. 2018 10: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 Lina265 10 Unities + Antwort hilfreich

Wenn du ZTW immer an den Text-Befehl übergibst, dann muß ZTW auch immer existieren (einen Textwert haben).
Also ändere den Code dahingehen das ZTW immer einen Wert hat,
ab und an den Z-Wert aus der Punktliste, oder eben einfach nur ""

Da der Text aber nur sinnvoll ist wenn ein Z-Wert dargestellt werden soll,
packst du den Command-Text Teil mit in die IF funktion, denn ohne Z-Wert
braucht es auch kein Textobjekt.

PS: Wenn man den TEXT-Befehl nutzt sollte man sicherstellen das der genutzte
Texstil (k)eine feste Höhe hat, davon hängt der Befehlsablauf ab.
Oder man erstellt zwei verschiedene Command-Text Varianten und je nach aktuellem Textstil (Feste Höhe oder nicht),
nimmt man die eine oder die andere Variante.

Und zum Schluß: Warum bitte schön TEXT unabhängig des Höhenkotenobjektes?
Erstelle dir doch einen BLOCK mit ATTRIBUTEN, bei der Attributabfrage gibst du dann entweder "" oder den Z-Wert an,
hast "Punkt" und Text in einem Objekt, kannst diese Exportieren, Importieren und nach belieben bearbeiten.

BLOCK
ATTDEF
ATTREQ
ATTDIA


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Lina265
Mitglied
Vermessung


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

Beiträge: 13
Registriert: 05.07.2018

AutoCAD 2018

erstellt am: 03. Aug. 2018 11:07    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

Beim 1. Abschnitt blicke ich nicht ganz durch... also du meinst für den Fall, falls ich eine 0 - Höhe in meinem Aufnahmefile habe?

Den Block mit Attribut erstelle ich nicht, weil ich die Textbeschriftung unabhängig vom Punktsymbol ein- und ausblenden möchte... (das geht im Block nicht, oder? )Zudem habe ich zum Punkt auch noch das Attribut der Punktnummer, welches ich auch einlese...

Habe die command Zeile in die IF - Funktion gepackt.. mir ist aber nicht ganz klar, warum der Befehl nicht durchläuft..?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Vino
Mitglied



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

Beiträge: 207
Registriert: 24.05.2005

Windows 10
BricsCAD V22

erstellt am: 03. Aug. 2018 11: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 Lina265 10 Unities + Antwort hilfreich

Hallo,

Erstens:
Dein Befehl bricht nach dem ersten Punkt ab, weil du die geöffnete Datei in der while-Schleife (beim ersten Durchgang) wieder schließt und er dann nicht weiter lesen kann.

Zweitens:
Du kannst die Blöcke so definieren, dass die Symbole und die Attribut(-definitionen) auf unterschiedlichen Layern liegen und diese dann auch unabhängig voneinander Aus- und Einschalten.


Gruß
Stefan

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 03. Aug. 2018 11:45    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 Lina265 10 Unities + Antwort hilfreich

Also zusammengefasst:

Läuft nicht durch weil, siehe Stefan, du schließt die Punktdatei wieder. Das Close-Statement gehört
hinter die While-Schleife, nicht in die While-Schleife.

Verschiedene Layer in einem Block nutzen für Text sichtbar/unsichtbar ist auch schon angesprochen worden.
Angenommen die Punkte landen alle auf Layer "PUNKTE", dann würde ich für den Z-Wert eine Attributdefinition auf Layer "PUNKT_Z-WERT" legen.
Möchte man diese nicht sehen schaltet man den Layer aus, Möcht eman die Punkte mit allem drum und dran nicht sehen, friert men den Layer "Punkte", möchte man Punkte+Z-Wert sehen, taut und schaltet beide Layer ein.
Und was ich im ersten Teil meinte:
Nehmen wir dein gepostetes Beispiel, die erste Zeile ist zufällig ein 140er Fall..

  (if
  (or
    (= (nth 3 LISTE) 140)
    (= (nth 3 LISTE) 150)
  ) ;or

    (progn
    (setq zw (nth 6 LISTE))
(setq ztw (strcat (rtos zw 2 2)))
    ) ;progn 
    (print "\n Keine Höhenbeschriftung" )
 
) ;if

ZTW wird also gesetzt und der Text wird ordentlich erstellt.
Wenn in Zeile 1 aber ein 142er Fall stehen würde, was wäre dann? Crash
Oder in Zeile eins 140 und in der nächsten Zeile ein 142er!
Dann würde es in Zeile 2 den gleichen Z-Wert sichtbar geben wie in Zeile 1.,
da ZTW noch immer den Wert aus Zeile 1 enthält.

Von daher:

Code:
...
  (if (or
    (= (nth 3 LISTE) 140)
    (= (nth 3 LISTE) 150)
      ) ;or
    (progn
(setq ztw (strcat (rtos (nth 6 LISTE) 2 2)))
        (command "Text"
  (list (nth 4 LISTE) (nth 5 LISTE) (nth 6 LISTE) )
                "" ; >= Funktioniert wenn der Textstil keine feste Texthöhe hat.
                ""
                ztw
        )
    ) ;progn 
  ) ;if
) ;while
) ;progn
(alert "Keine Datei gewählt!")
)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Lina265
Mitglied
Vermessung


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

Beiträge: 13
Registriert: 05.07.2018

AutoCAD 2018

erstellt am: 03. Aug. 2018 13:33    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 Dir! klappt alles 

Noch eine Frage... wenn ich die Punkt importiere und mit dem Zoom relativ weit aussen bin, dann schnappt's mir die vorigen Koordinaten, nicht die eingegebenen... wenn ich jedoch in dem Moment, in dem ich den Befehl start, sehr nah rangezoomt habe, kommt alles dorthin, wo es sollte. Weisst du, an welcher Einstellung das liegen kann?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 03. Aug. 2018 13: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 Lina265 10 Unities + Antwort hilfreich

Ja, ich habe dafür auch zwei Antworten:

1. Weil du nicht nicht konkret genug wirst mit deinem "Programm" was die Positionsangabe angeht.
   (wenn man explizit keinen Objektfang berücksichtigen möchte, dann sollte man das AutoCAD mitteilen)
   Man könnte also ganz einfach den Befehlsmodifizierer "_non" vor den Koordinaten in die Befehlszeile schicken.
    "_non" oder "keiner" steht dann für "für die nächste Eingabe keinen Objektfang berücksichtigen"


2. In AutoCAD gibt es die Sysvar OSNAPCOORD (welche bei mir in jedem Profil in jeder Version von 2 auf 1 gestellt wird)
   Schau dir hier die FAQ: OSNAPCOORD an <KLICK!>
   Aktuell steht die bei dir auf 2, was bedeutet: Handeingabe= kein OFang, Eingabe per Macro Script oder (send)command= berücksichtige den Ofang.

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