Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Koordinaten als Variabel

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:  Koordinaten als Variabel (2104 / mal gelesen)
Andrina08
Mitglied
Vermessung


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

Beiträge: 11
Registriert: 17.06.2019

AutoCAD 2020

erstellt am: 17. Jun. 2019 08:46    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

Hallo zusammen!
Also mal vorneweg - ich bin ein absoluter LISP-Anfänger, daher bitte ich jetzt schon um etwas Verständnis für meine Anfänger-Fragen... 

Ich möchte eine Linie zeichnen, die sich aus Koordinaten zusammenstellt, welche in einer .txt Datei gespeichert sind.
Ist es nun möglich dass ich einen ganzen Koordinatensatz (sprich, X, Y und Z - Koordinate) in eine einzige Variabel packen kann? Damit ich nachher den (command "Linie" "A" "B" "") ausführen kann?

Vielen Dank jetzt schon für eure Hinweise & Tipps.

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 17. Jun. 2019 08:58    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 Andrina08 10 Unities + Antwort hilfreich

(setq A '( 0.0 0.0 0.0) B '(1.0 10.0 0.0))
(command "_line" A B "")

------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

Alles

erstellt am: 17. Jun. 2019 09:08    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 Andrina08 10 Unities + Antwort hilfreich

Als absoluter Lisp-Anfänger solltest du wohl erst mal Syntax und Funktionen lernen, aber die Antwort ist JA, kann man.

TXT und Koordiniaten klingt aber mehr danach als ob es davon mehr wie nur 2 gibt, und wenn du einfach nur Linien oder Polylinien
erstellen möchtest aus einer ganzen Reihen von Koordinaten, dann formatiere doch einfach die Liste in Excel AutoCAD-Mundgerecht
(also 501.4,322.5,200.9 anstatt 501,4 322,5 200,9 und erste ein Script: 501.4,322.5,200.9 >> http://ww3.cad.de/foren/ubb/Forum54/HTML/009421.shtml )

Ansonsten: Schau in der Hilfe nach den Lispfunktionen
OPEN
READ-LINE

SETQ STRCAT
SUBSTR
vl-string-subst

..

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

Andrina08
Mitglied
Vermessung


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

Beiträge: 11
Registriert: 17.06.2019

AutoCAD 2020

erstellt am: 17. Jun. 2019 13:10    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

Erstmal vielen Dank für eure schnellen Antworten!

Das verstehe ich grundsätzlich, solange ich die Werte eingeben kann, so wie du's gemacht hast..
Jedoch nicht, wenn ich die Werte in einem File gespeichert habe...

meine Idee das umzusetzen.....:
  (setq file (getfiled "Verzeichnisliste" "" "" 2))
  (if file
    (progn
      (setq file (open file "r"))
      (while (setq zeile (read-line file))


(setq LISTE (read(strcat "(" (vl-string-left-trim "0"zeile) ")")))

(setq A '((nth 1 LISTE) (nth 2 LISTE) (nth 3 LISTE))
      B '((nth 4 LISTE) (nth 5 LISTE) (nth 6 LISTE))  ); setq

        (cond
  ((= (nth 0 LISTE) Punktnummer)
  (progn
      (command "_line" A B "")
  (princ)
  ) ); progn
) ; cond

der will so aber nicht arbeiten....

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

Alles

erstellt am: 17. Jun. 2019 13: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 Andrina08 10 Unities + Antwort hilfreich

Du hast da noch einige Baustellen, aber ohne die "Importdatei" gehe ich nicht weiter darauf ein.
Das nachgefragte Thema betreffend:

(setq A (list (nth 1 LISTE) (nth 2 LISTE) (nth 3 LISTE))
      B (list (nth 4 LISTE) (nth 5 LISTE) (nth 6 LISTE))  ); setq

Wobei, wenn du die Koordinaten nur einmalig für den command benötigst, dann muß man diese ja nicht speichern:

                    (command "_line"
      (list (nth 1 LISTE) (nth 2 LISTE) (nth 3 LISTE))
      (list (nth 4 LISTE) (nth 5 LISTE) (nth 6 LISTE))


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

Andrina08
Mitglied
Vermessung


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

Beiträge: 11
Registriert: 17.06.2019

AutoCAD 2020

erstellt am: 17. Jun. 2019 15:58    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


Vektorlinien.lsp

 
den Baustellen bin ich mir total bewusst, als LISP-Anfänger werde ich die wohl nicht so schnell rausbringen.. 
Vielen Dank für den Tipp, hat soweit mal geklappt.

Vielleicht muss ich kurz mein Vorhaben erläutern:
Ich möchte Kontrollmessungen einer Verschiebung mit Vektorpfeilen visualisieren. Dazu gibt's verschieden Punkte mit Punktnummern und jeweilige Kontrollmessungen. Da soll jedesmal eine Linie von A nach B gezeichnet werden. Und weil ich jedesmal wieder jede Punktnummer habe, muss ich die Nummer abfragen um die Linie dann dem entsprechenden Layer zuweisen zu können....

Ich bin gerade an einem Punkt angekommen, wo ich mich frage, ob man zwei while-schleifen gleichzeitig laufen lassen kann?
ich habe die eine für das Lesen des Files und die Andere möchte ich jetzt, um die Punktnummern aufsteigen zu lassen... ich habe mein LISP mal im Anhang, vielleicht kannst du mir da einen kleinen Tipp geben, wo dass es stockt...

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: 17. Jun. 2019 16:26    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 Andrina08 10 Unities + Antwort hilfreich

Hallo Andrina,

als Lisp-Anfänger kann ich Dir erstmal das hier zum Durcharbeiten wärmstens ans Herz legen.

Zu Deinen Problemen. Ja man kann verschachtelte While-Schleifen laufen lassen. Deine obere While-Schleife wird aber noch gar nicht richtig geschlossen, es fehlt zumindest eine schließende Klammer.
Dennoch würde ich das Problem etwas anders angehen, nämlich zuerst einmal alle Datensätze der Datei  einlesen und in eine Liste packen und anschließend die Liste durcharbeiten und die Linien zeichnen.
Wenn Du uns noch ein paar Zeilen Deiner Datendatei zukommen lässt, können wir auch noch besser helfen, so bleibt es noch ein bisschen Rätselraten.

Gruß
Thomas

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

Andrina08
Mitglied
Vermessung


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

Beiträge: 11
Registriert: 17.06.2019

AutoCAD 2020

erstellt am: 17. Jun. 2019 16:34    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


Kontrollmessung.txt

 
Das hab ich bereits mal versucht und schlage dort auch immer wieder nach.. bleibe aber doch des öfteren mal klemmen und finde allein nicht raus.. 

Die Datei ist im Anhang.
Auf einer Zeile befinden sich immer die Koordinaten der 0 - Messung und der 1. Kontrollmessung der gleichen Punktnummer.
Ich bin jedoch total flexibel was das File anbelangt, es könnte auch anders formatiert werden... 

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: 17. Jun. 2019 17:03    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 Andrina08 10 Unities + Antwort hilfreich

Mal ein paar erste Anmerkungen. Die Datendatei ist ok so. Nun zu Code:

Code:

(defun c:V2 (/ file zeile)
  (setq Kontrollmessung (getint "\n Wievielte Kontrollmessung hat stattgefunden?")) ; brauchst Du das? Verwendest es bisher nicht.
  (setq P1 (getint "\n Startnummer angeben: "))  ; brauchst Du das? Steht doch in Datei
  (setq Px (getint "\n Höchste Punktnummer angeben: " ))  ; dito
  (setq Eingabe (- Px P1)) ; kann also wahrscheinlich entfallen

  (setq file (getfiled "Verzeichnisliste" "" "" 2))
  (if file
    (progn
      (setq file (open file "r"))
      (while (setq zeile (read-line file))  ; und jetz alle Daten einlesen
        (setq Ges_LISTE (cons (read(strcat "(" (vl-string-left-trim "0"zeile) ")")) GES_LISTE))
      ) ; while beenden, jetzt hast Du in GES_LISTE alle Datenreihen enthalten
      (setq LISTE (reverse LISTE)) ; kann aber ggf. auch entfallen, wenn die Daten auch von hinten nach vorne abgearbeitet werden können.

;  nun alle LISTE in GES_LISTE abarbeiten:
      (foreach LISTE GES_LISTE
          (progn
            (;nun mit LISTE alles machen, was Du willst,



(car LISTE) liefert Dir Punktnummer (als Zahl), daraus ließe sich der Layername erzeugen und mit "Layer" _make ... aktiv setzen bzw. anlegen. Wenn Du danach die Linie zeichnest, landet sie auch gleich auf diesem Layer und muss nicht nachträglich geändert werden.

Lass mal hören, ob Duhiermit weiterkommst.

HTH
Gruß
Thomas

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

Andrina08
Mitglied
Vermessung


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

Beiträge: 11
Registriert: 17.06.2019

AutoCAD 2020

erstellt am: 17. Jun. 2019 17:18    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

wow, vielen Dank für deine Tipps!
ich werde mir das mal in Ruhe ansehen und mich dann wieder melden.. kann aber wohl einige Tage dauern   

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

Andrina08
Mitglied
Vermessung


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

Beiträge: 11
Registriert: 17.06.2019

AutoCAD 2020

erstellt am: 19. Jun. 2019 15:19    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

Bin dran und denke weiter...   
Eine kleine Zwischenfrage:
Wieso bekomme ich für Hdiff keinen Wert? ich nehme an, es liegt am Typ der Resultate... weiss aber nicht, was ich ändern muss...

Es erscheint der Fehler:  Fehlerhafter Argumenttyp: stringp 0.022

      (setq H1 (nth 3 LISTE)
            H2 (nth 6 LISTE)
              Hdiff (atof (- (nth 6 LISTE) (nth 3 LISTE)) )
      A '(0 0 0)
      B '(5 Hdiff 0)
      Bez_Layer (itoa (car LISTE))
      Layername (strcat "ÜW_Nr_"Bez_Layer) ) ; setq

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

Alles

erstellt am: 19. Jun. 2019 15:25    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 Andrina08 10 Unities + Antwort hilfreich

EDITIERT


Fehlerhafter Argumenttyp: stringp 0.022

Bedeutet: Eine Funktion erwartet einen STRING, erhählt aber 0.022, also  REAL
Schaue ich dann in deine Zeilen sehe ich als erste Funktion die Strings erwartet ATOF,
anstatt eines Strings erhält diese aber die Differenz aus (nth 6 LISTE)und (nth 3 LISTE), ein REAL(0.022).

PS: Neuer Account? Oder Firma/Privat?

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

Andrina08
Mitglied
Vermessung


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

Beiträge: 11
Registriert: 17.06.2019

AutoCAD 2020

erstellt am: 19. Jun. 2019 15:55    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

OK, ich hab kein Plan wieso, aber jetzt hat's geklappt. ich hab nichts geändert, nur nochmal ne neue Zeichnung aufgemacht und den Code nochmal neu geladen.    habe aber vorher mehrere Male !Hdiff abgefragt und da kam immer nil raus... naja...

Danke Dir auf alle Fälle. Ich bleib dran. sehe schon das nächste Problem aber ich probier mal selber noch ein Weilchen rum... 

...mit dem Account einer Kollegin vom Büro / habs dann aber noch gemerkt und für Verständnisgründe geändert. 

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: 19. Jun. 2019 16: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 Andrina08 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Andrina08:
  (setq H1 (nth 3 LISTE)
            H2 (nth 6 LISTE)
              Hdiff (atof (- (nth 6 LISTE) (nth 3 LISTE)) )
      A '(0 0 0)
      B '(5 Hdiff 0)
      Bez_Layer (itoa (car LISTE))
      Layername (strcat "ÜW_Nr_"Bez_Layer) ) ; setq

Kleiner Formhinweis: Lisp arbeitet von links nach rechts, wenn Du Hdiff belegst, sind H1 und H2 schon bekannt (und Zahlen). Es sollte also folgendes funktionieren:

(setq H1 (nth 3 LISTE)
      H2 (nth 6 LISTE)
      Hdiff (- H2 H1)
     ...
)

Gruß
Thomas

[Diese Nachricht wurde von spider_dd am 19. Jun. 2019 editiert.]

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