Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Punkte mit Linien verbinden

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:  Punkte mit Linien verbinden (2567 mal gelesen)
cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 07. Feb. 2012 14:40    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

Ich habe eine Zeichnung in der points mit Punktnummer als text stehen
Ich möchte gern diese Punkte entsprechend der Nummerierung verbinden durch Linien, oder 3d polylines

Meine Ansatz ist der erst festzulegen in welchem Abstand x/y der Punkt vom Text liegt
und anschliessend in der Auswahl aller Punkte und Texte die Liste für den Linienpunkt zu schreiben

Danach soll eine 3dpolyline entsprechend fortlaufender Nummerierung gezeichnet werden

Meine Frage ist: wie kann ich den Linienpunkt der in ent steht mit seiner dazugehörigen Nummer, die in pnr steht in eine Liste legen

Code:

; Auswahl von Linienpunkt (e1) und dazugehöriger Punktnr. e2
(princ "\nDefinition for line-point-selection")
(while
  (not
    (and
      (setq e1 (car (entsel "\nSelect point ! ")))
      (wcmatch (cdr (assoc 0 (entget e1))) "POINT")
      )
    )
  (princ "\nNo point select")
  )
(while
  (not
    (and
      (setq e2 (car (entsel "\nSelect text ! ")))
      (wcmatch (cdr (assoc 0 (entget e2))) "TEXT")
      )
    )
  (princ "\nNo text select")
  )
;Ermittelt den Abstand vom Textursprung (pnr) zum Linienpunkt (pkt)

(if (setq pkt (cdr (assoc 10 (entget e1))))
  (if (setq pnr (cdr (assoc 10 (entget e2))))
    (setq l1 (list (cdr (assoc 1 (entget e2)))
  (+ (car pnr) (setq dpx (- (car pkt) (car pnr))))
  (+ (cadr pnr) (setq dpy (- (cadr pkt) (cadr pnr))))
  )
  )
    )
  )

; Ausfahl aller Punktnummern (Texte) und Linienpunkte

(princ "\nSelect drawing area")
(setq ss (ssget '((0 . "POINT,TEXT")))
      i 0)
(if ss
  (progn
    (repeat (sslength ss)
      (setq ent (entget (ssname ss i)))
      (if ent (cdr (assoc 0 ent)) "TEXT")
      (setq elist (list (cdr (assoc 1 ent))))
      (if ent (cdr (assoc 0 ent)) "POINT")
      (setq elist (cons (list (cdr (assoc 10 ent)))))


     
      )))))


 


 
     

     


------------------
Gruss Dirk

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

tunnelbauer
Ehrenmitglied V.I.P. h.c.
Bauingenieur



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

Beiträge: 7085
Registriert: 13.01.2004

ich hab eh keine Probleme damit...

erstellt am: 07. Feb. 2012 14:43    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 cadplayer 10 Unities + Antwort hilfreich

Bisschen kompliziert?

Schreibt die Blöcke mit den Punktnummern raus, lade das in Excel und sortiere anhand der Punktnummer.

Anschließend löscht du die Punktnummer und holst dir die Koordinatenliste mittels Script und vorgestelltem "_3dpoly" wieder rein.
Fertig.

------------------
Grüsse

Thomas

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 07. Feb. 2012 14:59    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


Drawing2.dwg.txt

 
Ich habe keine Blöcke vorliegen sondern nur Punkte (point) mit den nebenstehenden Punktnummern (text).

------------------
Gruss Dirk

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

tunnelbauer
Ehrenmitglied V.I.P. h.c.
Bauingenieur



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

Beiträge: 7085
Registriert: 13.01.2004

ich hab eh keine Probleme damit...

erstellt am: 07. Feb. 2012 15:17    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 cadplayer 10 Unities + Antwort hilfreich

Lösung 1)

Variante 3

Lösung 2)
Wenn Abstand der Punkte zu den Texten immer gleich, die Einfügepunkte der Texte rausschreiben und dann um den X/Y-Wert reduzieren/erhöhen...


------------------
Grüsse

Thomas

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

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 07. Feb. 2012 15: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 Nur für cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadplayer:
...
Meine Frage ist: wie kann ich den Linienpunkt der in ent steht mit seiner dazugehörigen Nummer, die in pnr steht in eine Liste legen
...


siehe dotted pair in der Entwicklerhilfer
und dan mit vl-sort... sortieren

Anstelle von entsel die Punkte mit ssget einsammeln, den zugehörigen Text über ein Fenster am Punkt fangen und prüfen und dann dotted...

------------------
Mfg Heiko

Elefantenjagd in Afrika
"... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..."
-Lots of irritating superfluous parentheses!-

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 07. Feb. 2012 15:41    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

Ich stimme dir überein, dass es eine Möglichkeit ist die Koord der Textpunkte auszulesen. Nur die z-koord steckt im Punkt. Daran scheitert das Vorhaben. (Allerdings 2dimensional ist es ok)
In meinem code habe ich die delta koord. der Texte bezgl. der Punkte rausgeschrieben.
Kann es vllt funktionieren, wenn ich jetzt anhand der Koord.differenz zw. Punkt und Text den Punkt raussuche.

------------------
Gruss Dirk

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

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 07. Feb. 2012 15:57    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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadplayer:
...
In meinem code habe ich die delta koord. der Texte bezgl. der Punkte rausgeschrieben.
Kann es vllt funktionieren, wenn ich jetzt anhand der Koord.differenz zw. Punkt und Text den Punkt raussuche.
...


  dein code sieht super aus 

ssget bietet dir einige "sel-method" an - siehe Entwicklerhilfe
Du hast die Koordinaten der Punkte, nimm einen Punkt und dessen Koordinaten, dann rechne dir zwei Koordinaten aus in denen dein Text liegt und filtere dir gleich die Texte raus, prüfe diesen Auswahlsatz.
Wenn er die Prüfung nicht besteht (weil nil oder mehr als 1) dann zoome zum Punkte und lasse den Text mittels entsel fangen oder vergib ne Nummer 99999+1.

------------------
Mfg Heiko

Elefantenjagd in Afrika
"... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..."
-Lots of irritating superfluous parentheses!-

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

tunnelbauer
Ehrenmitglied V.I.P. h.c.
Bauingenieur



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

Beiträge: 7085
Registriert: 13.01.2004

ich hab eh keine Probleme damit...

erstellt am: 08. Feb. 2012 07: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 cadplayer 10 Unities + Antwort hilfreich

Was ich aber noch nicht verstehe:

Warum verwendest du nicht das fertige LISP-File aus meinem verlinkten Beitrag?

(Natürlich ist es schön eigene Erfolge zu erzielen - mir fehlt leider jedoch meist die Zeit dazu...)

------------------
Grüsse

Thomas

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 13. Feb. 2012 13:01    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

@tunnelbauer:
Ich suche nach einer Vereinfachung um die Punkte mit 3dpolyline zu verbinden, dass nach Möglichkeit in der Zeichnung

@Dorfy:
Jetzt habe ich mir mal Gedanken gemacht, wie ich das vllt umsetzen kann von dir
In tdata sollte eigentlich die Punktnummer zu finden sein, es wird aber immer nur der Punkt gefunden. Nur ist die selection methode bissel komplizert - geht das auch einfacher ?

Im Anschluss wäre mein nächster Schritt eine neue Liste zu erzeugen, wo die Punktnummer mit der Koordinate zu finden ist.

Code:

; Zur Ermittlung vom Textabstand zum Punkt

(defun option ()
  (progn
    (while
      (not
(and
  (setq e1 (entget (car (entsel "\nSelect point ! "))))
  (wcmatch (cdr (assoc 0 e1)) "POINT")
  (setq e2 (entget (car (entsel "\nSelect text ! "))))
  (wcmatch (cdr (assoc 0 e2)) "TEXT")
  )
)
      (princ "\nNot correct") (princ)
      )
    )
  )


;Selectiere Punkte und dazugehörige Texte

(defun sel ()
  (princ "\nSelect drawing area")
  (setq dx (- (car (cdr (assoc 10 e2))) (car (cdr (assoc 10 e1))))); Differenz Punktnummer
  (setq dy (- (cadr (cdr (assoc 10 e1))) (cadr (cdr (assoc 10 e2))))); zum Punkt
  (if
    (setq ss (ssget '((0 . "POINT"))))
    (progn
      (setq i 0)
      (repeat (sslength ss)
(setq ename (ssname ss i))
        (setq edata (entget ename))
        (cond
  ((= (cdr (assoc 0 edata)) "POINT")
  (foreach n1 edata
    (cond
      ((= (car n1) 10)
(setq plist (cons (cdr n1) plist)); Koordinaten aller Punkte in eine Liste
(setq tname (ssname (ssget "c"
  (list (+ (- (caar plist) 0.01) dx) (+ (- (cadar plist) 0.01) dy)); suche Text im Ausschnit
  (list (+ (caar plist) dx 0.35) (+ (cadar plist) dy 0.13)); links unten nach rechts oben
  ) 0))
(setq tdata (cdr (assoc 1 (entget tname))))
(setq i (1+ i))
)
      )
    )
  )
  )
))))


------------------
Gruss Dirk

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

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 13. Feb. 2012 14: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 cadplayer 10 Unities + Antwort hilfreich

dann nimm mal nicht das Element "0" sondern 1 bzw schau dir dein selection set genauer an
ggef ist dein "Fenster" um den Punkt zuklein

Ps du kannst gleich auf Texte filtern lassen ;-)

------------------
Mfg Heiko

Elefantenjagd in Afrika
"... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..."
-Lots of irritating superfluous parentheses!-

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 13. Feb. 2012 16:52    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 funktioniert jetzt perfekt.

Ich komme jetzt nicht richtig weiter mit foreach soll eine Liste aus pnr und pkt erstellt werden.

als test probierte ich (foreach n1 edata (princ edata)) und jups kommen alle Punkte
das möchte ich gern in die var plist schreiben - weiss nicht wie das geht!

dann sollte in die plist noch die pnr eingefügt werden.
Kann mir einer weiter helfen?

Code:

;Selectiere Punkte und dazugehörige Texte

(defun sel ()
  (princ "\nSelect drawing area")
  (setq dx (- (car (cdr (assoc 10 e2))) (car (cdr (assoc 10 e1))))); Differenz Punktnummer
  (setq dy (- (cadr (cdr (assoc 10 e1))) (cadr (cdr (assoc 10 e2))))); zum Punkt
  (if
    (setq ss (ssget '((0 . "POINT"))))
    (progn
      (setq i 0)
      (repeat (sslength ss)
(setq ename (ssname ss i))
        (setq edata (entget ename))
(setq pkt (assoc 10 edata))
(setq pnr (ssname (ssget "c"
(list (- (+ (car pkt) dx) 0.03) (+ (cadr pkt) dy)); suche Text im Ausschnit
(list (+ (car pkt) dx 0.35) (+ (cadr pkt) dy 0.13)); links unten nach rechts oben
'((0 . "TEXT"))
)
  0)
      )
(setq pnr (cdr (assoc 1 (entget pnr))))
(foreach n1 (cdr pkt)
  (setq plist (cons (cdr n1) pkt))
  )

)
      )
    )
  )


------------------
Gruss Dirk

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

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 13. Feb. 2012 21:16    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 cadplayer 10 Unities + Antwort hilfreich

in deiner repeat schleife gehst du die Punkte durch und suchst dir den Text im näheren Umfeld
(Fehlerbetrachtung iwan noch bedenken --> kein Text, mehr als ein Text...)

somit hast du Punktnummer und Koordinaten --> die "kleine Liste"  (punktnummer . (koordlist))
(ich würde ihmo auf cons zurückgreifen... für die kl. Liste)
diese kleinen Listen hängst du dann munter aneinander mittels cons oder append

(
(punktnummer1 . (koordlist1))
(punktnummer2 . (koordlist2))
(punktnummer3 . (koordlist3))
...
(punktnummern . (koordlistn))
)

am Ende der repeat-Schleife könnte eine derartig Liste entstehen ... andere ggf bessere Herangehensweisen sind natürlich immer möglich
... eine Liste mit vielen "kleinen" Listen....
hier schießt du mit der großen Kanonoe zum sortieren drauf... hatten wir erst das Thema ;-)
(mapcare und lambda und vl-sort... oder so)

------------------
Mfg Heiko

Elefantenjagd in Afrika
"... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..."
-Lots of irritating superfluous parentheses!-

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 14. Feb. 2012 10: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

(setq plist (cons (cons (atoi pnr) pkt) plist))

liefert mir

((1830 158139.0 6.4271e+006 18.5165)
(1831 158139.0 6.4271e+006 18.5373)
(1829 158139.0 6.4271e+006 19.185))

(vl-sort plist '< ); hier müsste ich sagen, dass nach dem ersten element (pnr) sortiert weren soll.

Mit mapcar und lambda etwas zu konstruieren steigt über meinen Horizont

(mapcar '(lambda (x) (+ 1 x)) (list 1 2 3)) leuchtet mir ein,

reicht mir aber nicht für mein Vorhaben


Wenn ich die Funktion aufdrusel
(lambda (x) (+ 1 x)) => #<SUBR @000000003da647c8 -lambda->
(mapcar '(lambda (x) (+ 1 x)) (list 1 2 3)) => (2 3 4)

Bezogen auf mein Vorhaben: Wie muss ich denken wenn das Argument (x) nun die Punktnummer sein soll ... (denke ich falsch???

------------------
Gruss Dirk

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 14. Feb. 2012 10:23    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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Bezogen auf mein Vorhaben: Wie muss ich denken wenn das Argument (x) nun die Punktnummer sein soll ... (denke ich falsch???

(car x) ???

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 14. Feb. 2012 10:50    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


Ergebnis:

(vl-sort (mapcar '(lambda (x) (car x)) plist) '< )

=> (1829 1830 1831)

Jetzt sind zwar die Punktnummern sortiert, wie bekomme ich die dazugehörigen Koordinaten wieder rein.

Ziel soll es sein dass (erstmal) alle Punkte mir 3dpolyline verbunden werden.

------------------
Gruss Dirk

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 14. Feb. 2012 11:12    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 cadplayer 10 Unities + Antwort hilfreich

(vl-sort plist '(lambda(e1 e2)(< (car e1)(car e1)))

Hallo Dirk, habe das vohin ein bißchen schnell überflogen, also Du nimmst Vl-sort, die Variablen dazu sind e1 und e2. Weil Du den ganzen Listeneintrag übergibst kannst Du für die Punktnummer als erstes Element (car e1) und (car e2) nehmen.


------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

[Diese Nachricht wurde von joern bosse am 14. Feb. 2012 editiert.]

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 14. Feb. 2012 12:12    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

Es ist sieht so einleuchtend aus, aber selbst so etwas zu basteln braucht Erfahrung. Was ich nicht ganz verstehe, wie lambda weiss dass e2 der Rest der Liste ist. Man kann irgendwie lambda schlecht prüfen!

------------------
Gruss Dirk

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 14. Feb. 2012 12:43    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 cadplayer 10 Unities + Antwort hilfreich

Hallo Dirk,
mit folgender Version kannst Du auch durchdebuggen, einfach einen Haltepunkt setzen:

(vl-sort plist (function(lambda(e1 e2)(< (car e1)(car e1))))

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

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

archtools
Mitglied



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

Beiträge: 823
Registriert: 09.10.2004

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

erstellt am: 14. Feb. 2012 12:56    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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadplayer:
Es ist sieht so einleuchtend aus, aber selbst so etwas zu basteln braucht Erfahrung. Was ich nicht ganz verstehe, wie lambda weiss dass e2 der Rest der Liste ist. Man kann irgendwie lambda schlecht prüfen!


Der Debug-Hinweis wird Dir da nicht weiter helfen. Das LAMBDA weiss das einfach deshalb, weil das VL-SORT so programmiert ist, dass es eine Liste und eine Vergleichsfunktion übernimmt.

Am LAMBDA ist nix geheimnisvoll - es ist eine anonym definierte Funktion. Du kannst das, was im LAMBDA definiert wird, auch ganz genau so mit DEFUN definieren und dann genau so an das VL-SORT übergeben.

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 14. Feb. 2012 15: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

Danke für eure Beiträge - es Bedarf noch ein wenig übung mit mapcar/lambda&Co
Da kann man echt zaubern.

Vllt. krieg ich´s auch noch hin Punktlücken zu finden, um das zeichnen der 3dpolyline zu unterbrechen.

------------------
Gruss Dirk

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