|
Lisp : Schnittpunkt ermitteln
Dorfy am 24.01.2012 um 13:22 Uhr (0)
Zitat:Original erstellt von cadplayer:phanominal, das hatte ich auch noch nicht: obwohl die var "erg" nicht klar definiert ist, erfüllt sie den Zweck (bloss ungleich 0 von was) erg = nil wenn nicht deklariert(/= erg 0) -- T somit ist die Bedingung immer erfüllterg deklariert (alles außer 0)(/= erg 0) -- Terg deklariert mit 0(/= erg 0) -- NILund dann schau dir nochmal cond in der Hilfe an!oder teste unter cond mal als erstes auf((/= erg 0)(alert "Lines no parallel")) ... klar?------------------Mfg Heiko El ...
|
In das Form Lisp wechseln |
|
Lisp : Schleifen kontrollieren
Dorfy am 01.02.2012 um 10:04 Uhr (0)
heute noch nicht munter?Code:(setq cplist (("TB" "BRUNN" "LAYER1") ("SS" "SCHACHT" "LAYER2") ("BL" "MAST" "LAYER3")))(setq relist (assoc "BL" cplist))und dann mit car, cdr... weiterEdit: oder du wertest den Rückgabewert weiter aus, falls dein gesuchter Wert öfters vorkommt, auf die schnell und ungetestetCode:(setq cplist (("TB" "BRUNN" "LAYER1") ("SS" "SCHACHT" "LAYER2") ("BL" "MAST" "LAYER3") ("BL" "MAST1" "LAYER4") ))(setq re ())(mapcar (lambda (x) (and (= "BL" (car x)) (setq re (cons ...
|
In das Form Lisp wechseln |
|
Lisp : Schleifen kontrollieren
Dorfy am 01.02.2012 um 13:24 Uhr (0)
zu1) siehe CADmiumzu2) dein Rückgabewert, den du weiter verarbeiten kannst(die "Unterlisten" welche die Bedingung erfüllen)geht sicher schönerCode:(vl-remove-if-not (lambda (x) (= (car x) "BL"))oder gleich Code:(mapcar cdr (vl-remove-if-not (lambda (x) (= (car x) "BL")) cplist))------------------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!-
|
In das Form Lisp wechseln |
|
Lisp : Schleifen kontrollieren
Dorfy am 01.02.2012 um 09:26 Uhr (0)
setze sinnvolle Haltepunkte im Editor und überwache die Variablenvllt. liegt es an der Gorß/Kleinschreibung und strcase könnte Abhilfe schaffen ------------------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!-
|
In das Form Lisp wechseln |
|
Lisp : Schleifen kontrollieren
Dorfy am 01.02.2012 um 14:48 Uhr (0)
X liefert dir die "subliste" dein Elementx1 = ("TB" "BRUNN" "LAYER1")x2 = ("SS" "SCHACHT" "LAYER2")x3 = ("BL" "MAST" "LAYER3")(mapcar ; führe aus cdr ; liefert die Subliste ab zweitem Listenelement zbsp ("MAST" "LAYER3")(vl-remove-if-not ; ??? -- schmeißt alles raus, was die Bedingung nicht erfüllt (lambda (x) (= (car x) "BL")) ; entspricht das einer if-schleife so ähnlich - ja cplist)); in Verbindung mit mapcar eine Liste(setq re ()) ;leere liste(mapcar (lambda (x) (and (= "BL" (car x))(setq re (cons x re ...
|
In das Form Lisp wechseln |
|
Lisp : Schleifen kontrollieren
Dorfy am 01.02.2012 um 15:10 Uhr (0)
Code:(setq erg (vl-remove-if-not (lambda (x) (= (car x) "BL"))cplist))(mapcar cdr erg )vllt ist es so verständlichermit member, vl-member..., foreach, while, car, cdr, cons und ... kannst du deine Listen auch beackernListenfunktionen...alles eine Frage des Geschmacks und der Stilblütenbau dir eine kleine Bibo auf und mach es universal(vl-remove-if-not (lambda (x) (= (car x) key))lst) pack es in ein (defun ... ein, kommt immer wieder------------------Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer ...
|
In das Form Lisp wechseln |
|
Lisp : Blöcke auflösen
acad184 am 12.08.2012 um 15:32 Uhr (0)
Hallo,kann mir jemand helfen?Ich arbeite mit Zeichnungen die sehr viele Blöcke beinhalten.Nun ist es oft notwendig diese Blöcke Aufzulösen. Dies mache ich immer mit dem Befehl Ursprung. Da die Blöcke oft sehr verschachtelt sind bedeutet das sehr viel arbeit.Ich habe den Befehl XXPLODE gefunden, der ist super man kann sogar die Anzahl der Ebenen bestimmen. Leider kann man diesen Befehl nur Global anwenden.Nun würde ich mir zwei Sachen wünschen:Wäre es möglich den Befehl auf eine Auswahl zu beschränken?Kann ...
|
In das Form Lisp wechseln |
|
Lisp : Schleifen kontrollieren
archtools am 02.02.2012 um 21:41 Uhr (0)
Zitat:Original erstellt von cadplayer:Ja super danke Dorfy - toll für deine Mühe - sicher ich möchte gern mehr erfahren, aber nix infrage stellen. Hab ja selbst wenig Ahnung davon. Ich denke jetzt weiterzukommen, evtl kommen noch fragen. Ich hoffe es nervt nicht alzu sehr.Dorfy hat da eine Technik verwendet, die eine gewisse Bekanntheit mit Lisp voraussetzt. Statt einer IF oder COND Konstruktion verwendet er etwas, worauf letztlich die IF und COND Funktionen beruhen: das AND.AND gibt genau dann T zurück, ...
|
In das Form Lisp wechseln |
|
Lisp : Schleifen kontrollieren
Dorfy am 03.02.2012 um 11:12 Uhr (0)
Zitat:Original erstellt von cadplayer:Ja hat ´ne Weile gedauert bis der Funke gefallen ist - verflixt&zugenähtCode:; Kodeliste(setq cplist (("TB" "TB" "LAYER1") ("T" "LÖVTRÄD" "LAYER2") ("BS" "BEL-STOLPE" "LAYER3") ("AV" "AV" "LAYER4") ) ); Hauptprogramm(defun demo ( / ) ;(/ i ss ssl ent elist) (setq i 0 ss (ssget ((0 . "TEXT"))) ssl (sslength ss) ) (repeat ssl (setq ent (entget (ssname ss i))) (setq erg (mapcar cdr (vl-remove-if-not (lambda (x) (= (car x) ...
|
In das Form Lisp wechseln |
|
Lisp : Punkte mit Linien verbinden
Dorfy am 07.02.2012 um 15:57 Uhr (0)
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 EntwicklerhilfeDu 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, p ...
|
In das Form Lisp wechseln |
|
Lisp : Punkte mit Linien verbinden
Dorfy am 07.02.2012 um 15:33 Uhr (0)
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 Entwicklerhilferund dan mit vl-sort... sortierenAnstelle 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, da ...
|
In das Form Lisp wechseln |
|
Lisp : Kombination aus member und wcmatch
neurosis am 10.02.2012 um 09:50 Uhr (0)
hallo cadblue,hier mal eine moeglichkeit ohne "vl-" aus der "stdlib" von http://xarch.tu-graz.ac.at/autocad/stdlib/ (vielleicht gefaellt dir das mehr.)Code:;;; Returns first position of match in str or nil;;; case-sensitive, no regex, plain substring, first index = 1;;; Boyer-Moore method by Serge Pashkov, faster than old strpos below;;; Lisp translation of Modula-2 program from the book;;; "Algorithms and data structure", N.Wirth, Prentice-Hall, Inc. 1986;;; see contrib/boyer-moore.lsp for benchmarks and ...
|
In das Form Lisp wechseln |
|
Lisp : Punkte mit Linien verbinden
Dorfy am 13.02.2012 um 14:27 Uhr (0)
dann nimm mal nicht das Element "0" sondern 1 bzw schau dir dein selection set genauer anggef ist dein "Fenster" um den Punkt zukleinPs 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!-
|
In das Form Lisp wechseln |