|
AutoLisp : assoc??
Brischke am 14.03.2004 um 19:31 Uhr (0)
Hallo Moony, folgend zwei weitere Lösungen, etwas schlanker als CADmiums Ansatz. Code: (setq pl (car (entsel));LWPolyline-Wählen, Elementname ermitteln ptds(vl-remove-if-not;Alle Werte, die keine Stützpunktdaten enthalten, aus der Elementdatenliste entfernen (lambda (ED) (= (car ED) 10) ) (entget pl) ) pts (mapcar cdr ptds);den Key (10) entfernen ) ;oder (setq pts (apply append (mapcar (lambda (ED) ...
|
In das Form AutoLisp wechseln |
|
AutoLisp : assoc??
Brischke am 15.03.2004 um 07:21 Uhr (0)
Hallo Moony, mit (car..) sprichst du das erste Element einer Liste an. (cdr..) gibt dir die Liste ohne das erste Element als Ergebnis zurück. Mit (nth..) sprichst du ein Listenelement direkt an, und erhältst auch nur dieses als Ergebnis. Deine Liste sieht so aus: ((10 67.8505 29.062) (10 80.7359 29.062) (10 80.7359 39.4718) (10 67.8505 39.4718)) Du möchtest von jedem Element den Schlüssel, also die 10, entfernen. Für ein einzelnes Element macht man das dann mit (cdr..) - für alle auf einmal mit (mapcar c ...
|
In das Form AutoLisp wechseln |
|
AutoLisp : Liste mit Linienstücken zusammensetzen
Brischke am 15.03.2004 um 14:37 Uhr (0)
Hallo Andrea, ein Ansatz: Errechne die Entfernungen der einenzelnen Punkte (der nur die Start und Enpunkte der einzelnen Punkt/Liniengruppierungen) zueinander, dann kannst du anhand der geringsten Entfernung entscheiden, wo der Linienzug weiter geführt werden muss. Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! AutoLISP-Programmierung für AutoCAD Da weiß man, wann man s hat!
|
In das Form AutoLisp wechseln |
|
AutoLisp : Liste mit Linienstücken zusammensetzen
Brischke am 15.03.2004 um 14:47 Uhr (0)
Hallo Andrea, warum sind die Linien überhaupt einzeln .. kann man da nicht schon vorher einen anderen Ansatz verfolgen? Irgendwie sind diese Linien ja auch entstanden. Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! AutoLISP-Programmierung für AutoCAD Da weiß man, wann man s hat!
|
In das Form AutoLisp wechseln |
|
AutoLisp : Tabelle erstellen
Brischke am 16.03.2004 um 11:34 Uhr (0)
Hallo dakneifer, Suche bitte nach ATT-CLONE oder schaue dir die gestrigen Beiträge im Rund um AutoCAD Forum an, da wurde dieses Thema bereits besprochen. Das die Blöcke dann untereinander gesetzt werden, solltest du mit einer Schleife machen, in der dann die Y-Koordinate des Einfügepunktes entsprechend geändert wird. Bei Fragen ... Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! AutoLISP-Programmierung für AutoCAD Da weiß man, wann man s hat!
|
In das Form AutoLisp wechseln |
|
AutoLisp : Variable in Variable?
Brischke am 23.03.2004 um 09:43 Uhr (0)
Hallo Holger, (setq a Hallo b (strcat a Du da ) c (strcat b was machst du? ) d (strcat a b c) e (strcat Trallala a b c Dumdidum ) f (strcat Trallala a e Igitigitt c Dumdidum ) ) du siehst, du kannst das in dem (Strcat..) Befehl beliebig anordnen. Du solltest dir mal die Grundlagen anschauen, denn eine Variable einer anderen zuzuweisen, bedeutet etwas ganz anderes, als Zeichenketten zu verbinden. Das ist doch das was du möchtest - oder? Bei Fragen ... Grüße Holger ------------------ Holger Brisc ...
|
In das Form AutoLisp wechseln |
|
AutoLisp : Attribute umbenennen
Brischke am 23.03.2004 um 10:07 Uhr (0)
Hallo Manuel, deine Aufgabenbeschreibung ist etwas ungenau. In der Programmierung muss man ganz hart unterscheiden, ob es sich um die Benennung einer Attributdefinition handelt, oder um den Wert eines Attributes. Handelt es sich um die Benennung, dann sind die Attributdefinition in der Blockdeifinition UND die Attributsbezeichnungen der Blockreferenzen (INSERT s, eingefügte Blöcke) zu ändern. Das Ändern ist in beiden fällen möglich, auch in der Originalzeichnung, falls dieser Block als Zeichnungsdatei vorl ...
|
In das Form AutoLisp wechseln |
|
AutoLisp : Variable in Variable?
Brischke am 23.03.2004 um 10:32 Uhr (0)
Hallo Holger, es macht mich etwas ärgerlich, wenn ein Thread so aufgeblasen wird, weil nicht von Anfang an gesagt wird, was der Fragende eigentlich möchte. Bei nächsten mal: Bitte die Aufgabe konkret beschreiben, und dann auch die Dinge, die nicht funktionieren mit Fehlermeldung posten. Eine Koordinate ist ja keine Zeichenkette. Deshalb kannst du diese auch nicht mit der Funktion (strcat..) nutzen. Du musst nun also entweder die Koordinate komplett (also die Liste), oder die einzelnen Koordinatenwerte in e ...
|
In das Form AutoLisp wechseln |
|
AutoLisp : Attribute umbenennen
Brischke am 23.03.2004 um 10:42 Uhr (0)
ich darf auch antworten? Du willst also in vielen Vorgabezeichnungen die Attributdefinition mit dem Namen ARTICLENUMBER die Vorgabewerte, wenn sie einem Suchmuster TISCH_11-222- ## entsprechen, mit der Zeichenkette _N_K erweitern? In bereits eingefügten Blöcken soll sich nichts ändern? Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! AutoLISP-Programmierung für AutoCAD Da weiß man, wann man s hat!
|
In das Form AutoLisp wechseln |
|
AutoLisp : Attribute umbenennen
Brischke am 23.03.2004 um 11:05 Uhr (0)
die Frage ist, welche Abhängigkeit besteht, um Programmtechnisch die Entscheidung des Anhängsels treffen zu können. Wenn das jedoch notwendig ist, dann sollte dir folgende Zeilen helfen Code: (defun chg:attdef_vg (/ aws) (setq aws (ssget _X ((0 . ATTDEF )(2 . ARTICLENUMBER )(1 . TISCH_##-###-## )))) (if aws (mapcar (lambda (AD) (entmod (subst (cons 1 (strcat (cdr(assoc 1 AD)) _N_K )) (assoc 1 AD) ...
|
In das Form AutoLisp wechseln |
|
Lisp : Daten speichern
Brischke am 23.03.2004 um 11:47 Uhr (0)
Hallo Michael,bevor du XDatas anhängen kannst musst du mit (regapp..) die Applikation registrieren.Grüße Holger------------------Holger Brischke(defun - Lisp over night!AutoLISP-Programmierung für AutoCADDa weiß man, wann mans hat!
|
In das Form Lisp wechseln |
|
Lisp : Daten speichern
Brischke am 23.03.2004 um 12:34 Uhr (0)
Hallo Michael,die XDatas werden einer bestimmten, bekannten Applikation zugeordnet - (list -3 (cons AppName xd))Damit das funktioniert, muss man Acad mitteilen, dass es die mit Applikation eines bestimmten Namens auch gibt. Das macht man mit (regapp "MEINSUPERAPPLOKATIONSNAME")Die LISP-Hilfe schreibt dazu: Zitat:Registers an application name with the current AutoCAD drawing in preparation for using extended object data(regapp application) Argumentsapplication A string naming the application. The name must ...
|
In das Form Lisp wechseln |
|
Lisp : Daten speichern
Brischke am 23.03.2004 um 13:42 Uhr (0)
in jeder Zeichnung.Du kannst ja vorher Checken, ob es schon einen entsprechenden Eintrag in der Tabelle der Applikationseinträge gibt.(if (tblobjname "APPID" "DEINSUPIAPPNAME"))(alert "Ja, gibts schon")(alert "Nö, gibts noch nicht"))Grüße Holger------------------Holger Brischke(defun - Lisp over night!AutoLISP-Programmierung für AutoCADDa weiß man, wann mans hat!
|
In das Form Lisp wechseln |