Zunächst mal: Fast immer lautet die Antwort auf "so eine Frage": Gibt es nicht in Lisp.
Man muss sich die benötigten Funktionen selbst erstellen.
Man muß sich im CAD-Programm auskennen um die eigenen Wünsche klar definieren zu können,
man muss das Objektmodell kennen und verstehen, um alle notwendigen Schritte und Wege erkennen zu können
und die paar Lispfunktionen selbst, sind dass geringste Problem bei der Sache.
Kurz: So schnell geht das nicht.
http://www.tutorial.autolisp.info/
Und in ein paar Monaten oder Jahren lächelst du dann darüber.
Zum Thread:
(command "_.select" "ALL" "") ;alles selektieren
Funktioniert nicht wie gewünscht, du suchst Befehle(besser gesagt eine Lispfunktion) dafür.
Frage: Wenn (command "_.select" "ALL" "") nicht dass macht was du wünscht,
woher sollen wir wissen was du möchtest?
Die Objektwahl lässt sich in Lisp durch Verwendung von SSGET ansprechen.
(command "_.layer" "L" "RAHMEN") ;layer RAHMEN löschen
Ist das in Bricscad so, dass man nach Eingabe von "RAHMEN" den Layerbefehl verlassen hat?
Ich frage nur weil die Entwurfsvorlage von Bricscad weiterhin im Layerbefehl aktiv wäre,
dieser ist erst mit einer Leereingabe beendet.
Zudem verwirrt die Mischung von internationalem und deutschen Befehlszeileneingaben,
_.Layer und _delete oder .Layer und löschen. International ist aber freilich netter.
Frage: Wenn (command "_.layer" "L" "RAHMEN") nicht dass macht was du wünscht,
woher sollen wir wissen was du möchtest?
Layer bereinigen kann man nur wenn der Layer nicht verwendet wird (Befehl LAyer, Option löschen ist genau das).
Vielleicht suchst du nicht bereinigen, sondern 'Objekte eines Layers löschen'. Dann schau mal in die Expresstools / LAYDEL).
Um es selbst zu programmieren: Dafür mußt du die ganze Datenbank kennen, denn du mußt alle Objekte, grafische wie nichtgrafische, ändern wenn sie diesen Layer refernzieren.
Danach ist der Layer nicht mehr genutzt und kann bereinigt werden.
(command "_.LAYZUSF"
Huch, den Befehl gibts - Wußte ich nicht
Immer wieder: Datenbank, ObjektLayer ändern, ungenutzte Layer bereinigen.
Aber irgendwie kommt es mir so vor als wäre eine orde3ntliche eigene Programmierlösung
überhaupt nicht dein Fall, zudem überhaupt nicht notwendig.
Du solltest die Themen splitten und die Einzelnen klarer definieren.
BEISPIEL: "Alles löschen" Was willst du da verbessern/ändern?
A: Es soll auch Objekte auf gesperrten Layern löschen.
Antwort: Geht nicht.
Auch mit Lisp kannst du keine (Layer-)Gesperrten Objekte bearbeiten,
also müßtest du zunächst die aktuellen Layereinstellungen merken, die Layer entsperren, Objekt bearbeiten, Layereigenschaften wieder setzen.
B: Es sollten auch Objekte außerhalb des aktuellen Bereiches gelöscht werden(andere Layouts).
Dann durchlaufe deine Liste von Objekten und lösche diese über ENTDEL.
Aber denke auch dabei an gesperrte Layer, assoziave Zusammenhänge usw.
Bin auf deine Antwort gespannt
------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD
[Diese Nachricht wurde von cadffm am 28. Mrz. 2017 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP