Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  bitte Mini-Lisp prüfen , danke

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:  bitte Mini-Lisp prüfen , danke (1037 mal gelesen)
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: 02. Okt. 2002 09:39    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 erstmal.

Kurzversion: überspringen der nachfolgenden Zeilen, Lispzeilen
            lesen, sind die so OK ? - Antwort!
           
Langversion: wenn man mein Lispkenntnisse mit meinen Griechisch-
Kenntnissen vergleicht, so sind diese sehr ähnlich, Griechisch
kann ich nicht einen Satz und in Lisp kenn ich nur 10 Wörter,
die Bedeutung allerdings ist mir noch nicht soo geläufig.
Dies sollen aber die ersten nützlichen Lispzeilen von mir
werden.

also ich möchte eine Verz. mit dem Inhalt:
Dwg´s die als Blockdefinitionen dienen (als Block einfügen...)
überarbeiten.
Das eigentliche: Attributsbezeichnung & Eingabeaufforderung
ändern und das möglichst automatisch!

so "schnickschnack" wie: ist das gesuchte Objekt überhaupt in der
Zeichnung?  ist erstmal außer Acht gelassen...oder: das geht ja
viiieel kürzer, oder mit dem Befehl...oder nur als Script usw usw
Nehme aber als Antwort ALLES gerne an...auch wenn es mir erstmal
darum geht das die Zeilen als "in Ordnung" oder eben nicht
abgetan werden können...

dachte in dem Moment an ein Stapelscript-ablauf der in jeder Zchng
das Lisp ausführt...oder so ähnlich

und hier endlich die paar Zeilen:

---------------------------------------------------------------------
(setq aws (ssget "x" '((0 . "Attdef") (2 . "AKS_NR"))))
(setq aks (ssname aws 0))
(setq alt_entity (entget aks))
(setq neu_entity (subst '(3 . "ID_NR") '(3 . "AKS_NR") alt_entity))
(setq neu_entity (subst '(2 . "ID_NR") '(2 . "AKS_NR") neu_entity))
(entmod neu_entity)
---------------------------------------------------------------------

was mich schon jetzt stört ist der "doppelte" subst-Aufruf, würde
lieber den String AKS_NR durch ID_NR ersetzen, geht dem?
und die erste Zeile, muß der aws so gebildet werden? "X"....

und wie gesagt, das wichtigst bei der Anfrage ist hier für mich
erstmal das kein böser Fehler drinsteckt; funktionieren tut es so !

und? - ach ja: keine Hemmung, habe mich auf das SCHLIMMSTE
eingestellt

Tutorial kenne ich , habe nur kaum Zeit mich zZ damit zu beschäftigen.
Meine (irgendwie unpraktische) Hilfe ist: Buch von G.Scheuerman-Staehler


Danke schonmal...ich geh jetzt in "Deckung"...

------------------
Gruß Sebastian ,FFM

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 02. Okt. 2002 13:22    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 cadffm 10 Unities + Antwort hilfreich

Hallo Sebastian,

wenn ich jetzt ehrlich bin, dann weiß ich nicht wirklich was Du tatsächlich möchtest.
Aber nun zu Deinen konkreten Fragen:
1) (ssget...) - Aufruf:
Geht prinzipiell so. Du läufst allerdings die Gefahr, dass es verschiedene Blöcke gibt, in denen Attribute mit gleicher Bezeichnung definiert sind. Es ist nicht klar, welchen Block Du dann änderst.
Wenn es um generelle Änderungen eines Attributes mit dieser Bezeichnung geht (unabhängig davon in welcher Blockdefinition es vorkommt), dann solltest du den gesamten Auswahlsatz abarbeiten.

Code:

(defun c:hr (/ as elemli)
(setq as (ssget ..))
(if as
(setq elemli(bau_elemli as))
(if elemli
(mapcar '(lambda (elem)
(entmod (subst '(2 . "ID_NR") '(2 . "AKS_NR") (subst '(3 . "ID_NR") '(3 . "AKS_NR") (entget elem)))
)
);lambda
elemli
);mapcar
);if
);defun
(defun bau_elemli (asatz / n elemli)
(setq n 0)
(repeat (sslength asatz)
(setq elemli(cons (ssname asatz n) elemli)
n (1+ n))
)
elemli
)


Ich habe das jetzt mal ohne Prüfung hier so reingepostet.
Als weiteres sollte untersucht werden, wie sich die Blöcke verhalten in denen die Attribute vorkommen. Es kann sein, dass diese auch noch upgedatet werden müssen.
Weiterhin gilt es zu klären, wie sich die eingefügten Blöcke verhalten sollen. In denen steht nach wie vor die alte Attributsbezeichnung. diese müßte also auf gleichem Wege jedoch für den Elementtyp ATTRIB durchgeführt werden. Das kann man aber auch gleich mit in die ssget- abfrage einbauen.
Code:

(setq as (ssget "_X"
(list
'(-4 . "<and")
'(2 . "AKS_NR")
'(-4 . "<or")
'(0 . "Attdef")
'(0 . "Attrib")
'(-4 . "or>")
'(-4 . "and>")
)
)
)


Ich hoffe, Dir hilft's weiter.
So, die Sitzung geht weiter, ich muß los!
Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
CADlon

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: 02. Okt. 2002 13: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

Ich nehme die Antwort:

1) (ssget...) - Aufruf: Geht prinzipiell so.

an, und danke !


zu den anderen Punkten:
es sind ja keine Blöcke definiert, weder 1er noch mehrere !
die dwg dient mir als Block !
soll heißen: diese DWG wird in einer anderen Zchng. als Block einfügen....

somit gibt es keine Verwechslung da dieses Attribut nur 1x in
JEDER dieser Dwg´s vorkommt !

also:
Habe davon ca. 300 DWG´s , diese dienten in einem bestimmten
Projekt als "Blockdefinition"
Nun möchte ich diese DWG´s weiterverwenden für andere Projekte
aber ich habe halt andere Ansprüche wie der der damalige Kunde. Zum Beispiel: anderen Attributsbezeichnungen+dazugehörige Attributs-Eingabe-Bezeichnungen!
somit ist auch eine Syncronisierung der Blöcke nicht Nötig da ich ja erst in Zukunft damit meine Pläne erstelle möchte.

und da dachte ich mir das dies ein guter erster PRAKTISCHER Test für
ein Lisp wäre!

also Danke nochmal !

------------------
  Gruß Sebastian ,FFM

[Diese Nachricht wurde von cadffm am 02. Oktober 2002 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