Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  ssget filter_list aus Datei erzeugen

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:  ssget filter_list aus Datei erzeugen (1056 mal gelesen)
archi.archi
Mitglied



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

Beiträge: 77
Registriert: 08.10.2010

Windows 10
AutoCAD 2023
Revit 2023

erstellt am: 24. Feb. 2017 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


Filter.zip

 
Hallo Forum,

für die Auswahl von verschiedenen Objekten möchte ich eine (Filter)liste für ssget aus einer Datei laden.

Die Datei wird in der nachstehenden Form erstellt:
;Loeschen.nfl
(0 . "LINE")
(-4 . "<OR")
(8 . "1")
(8 . "2")
(-4 . "OR>")

Die Grundstruktur ist also enthalten.

Für ssget muss liste als Liste vorliegen.
;(setq ss1 '(0 . "LINE"))
;(setq ss2 (ssget "X" (list ss1)))

Ich kann liste als String (String kann eine Liste/keine Liste sein?) zusammensetzen.

liste wird meiner Ansicht nach als String korrekt erzeugt als (0 . "LINE")(-4 . "<OR")(8 . "1")(8 . "2")(-4 . "OR>")

Leider erzeugt die Anwendung der liste in
(setq ss2 (ssget "X" (list liste))
einen
Fehler: Fehlerhaftes Punktargument

Habt ihr einen Tipp für mich?

Gruß

Archi

[Diese Nachricht wurde von archi.archi am 24. Feb. 2017 editiert.]

[Diese Nachricht wurde von archi.archi am 24. Feb. 2017 editiert.]

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

neurosis
Mitglied
dipl.ing.


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

Beiträge: 222
Registriert: 22.08.2006

erstellt am: 24. Feb. 2017 11:04    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 archi.archi 10 Unities + Antwort hilfreich

hallo archi,
du aenders in deiner hauptfunktion den ausdruck
(setq ss2 (ssget "X" (list liste)))
in
(setq ss2 (ssget "X" (read liste)))

und du aenders die funktion filterladen so:
(defun filterladen ( dname / datei liste zeile )
;--- Filterliste laden

  (setq datei (open dname "r"))

  (setq liste "(")
  (setq zeile (read-line datei))

  ;als string erzeugen
  (while zeile
    (if liste
      (setq liste (strcat liste zeile)) ;anhängen an nichtleere Liste
      (setq liste zeile) ;leere Liste - Liste erzeugen
    )
    (setq zeile (read-line datei))
  ) ;end while

  (close datei)

  (setq filterladen (strcat liste ")"))
)

gruss
marco

------------------
Marco Heuer
www.arc-aachen.de
Airport Office

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: 24. Feb. 2017 12: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 Nur für archi.archi 10 Unities + Antwort hilfreich

Die Endung oder der inhaltliche Aufbau der Filterdatei war aber nur zum Test, oder?

Schließlich wird diese Dateiendung bereits vom Programm verwendet und der Syntax einer Filterdefinition ist umfangreicher.
Auch wenn die Datei unberücksichtig bleibt vom System (aufgrund des Dateinamens), so ist es doch
etwas mehrkwürdig die gleiche Dateiendung für (eigentlich) die gleiche Aufgabe, aber mit anderem bzw. unvollständigem Syntax zu verwenden.

Nur aus Interesse da es so merkwürdig anmutet.
OBJEKT:LINIE
<ODER
LAYER:1
LAYER:2
ODER>
So hätte ich es schon eher verstanden, weil es für Benutzer einfacher zu schreiben wäre.

In dem Fall (Nutzer legt Filterliste an) wäre es aber auch einfacher den User die
Liste über den Filterbefehl erstellen zu lassen, komfortabel, kein Klammerwald und funktioniert
auuch "manuell".

Ich möchte nur erfahren warum man so Wege geht    

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

archi.archi
Mitglied



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

Beiträge: 77
Registriert: 08.10.2010

Windows 10
AutoCAD 2023
Revit 2023

erstellt am: 24. Feb. 2017 13: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

Hallo Marco und cadffm,

vielen Dank für die schnellen Infos!

Liste ist also doch nur String "in Listenform".
Mit "read" wird es dann wohl klappen (komme aber erst Montag dazu).

Die Dateiendung werde ich ändern.

Die diversen Filterlisten (Löschen, Solids filtern und transparent setzen usw.) werden im Rohzustand mittels Filterbefehl erstellt, gespeichert und dann aus der nfl-Datei herausgeschnitten. Die weitere Bearbeitung/Ergänzung erfolgt im Editor. Das macht ein Sachkundiger.

Die Anwendung der hinterlegten Filterlisten (über die definierten Dateinamen "Loeschen" ...) erfolgt durch den unbedarften Anwender.

Daher wurde diese Form der Liste gewählt.

Gruß  und ein windstilles Wochenende

Archi

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

archi.archi
Mitglied



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

Beiträge: 77
Registriert: 08.10.2010

Windows 10
AutoCAD 2023
Revit 2023

erstellt am: 24. Feb. 2017 13: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

Hallo marco,

deinen Firmenlink habe ich gleich an die weltweit bekannte, örtliche Flughafenerrichtergesellschaft weitergeleitet.

An den Softwarekosten hätten sie nicht sparen sollen!?

Gruß

Archi

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

archi.archi
Mitglied



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

Beiträge: 77
Registriert: 08.10.2010

Windows 10
AutoCAD 2023
Revit 2023

erstellt am: 24. Feb. 2017 16: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


Filter.zip

 
Hallo Marco,

es gibt einen teilweisen Erfolg (mit read).

Der 1. Block "Loeschen" funktioniert. Die Filterliste wird korrekt erstellt.

Im 2. Block "Transparenz 50" wird die Filterliste nicht korrekt erstellt.

Leider immer ein Fehler:
_erase
Objekte wählen:  1 gefunden
Objekte wählen:
Assoziativität der Schraffurumgrenzung entfernt.
Befehl: ; Fehler: Fehlerhafte Funktion: "((0 . \"HATCH\")(2 ...

Wenn der erste Block (Loeschen) im Code entfernt wird, funktioniert der nächste Block (Transparenz 50) usw..

Hast du dafür vielleicht eine Erklärung?

Gruß

Archi

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

scj
Mitglied
 


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

Beiträge: 554
Registriert: 09.08.2001

erstellt am: 24. Feb. 2017 18:00    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 archi.archi 10 Unities + Antwort hilfreich

Der Aufruf (command "_erase" ...) funktioniert wohl nur für jeweils ein Element. Versuch mal, Dich bei laufendem i mit (ssname AUSWAHLSATZ i) durch den Auswahlsatz durchzuhangeln.
Viel Erfolg
Jochen
www.ant-ares.de

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

neurosis
Mitglied
dipl.ing.


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

Beiträge: 222
Registriert: 22.08.2006

erstellt am: 24. Feb. 2017 18:20    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 archi.archi 10 Unities + Antwort hilfreich

du ueberschreibst dir deine funktion "filterladen" am ende selbiger, indem du aus der funktion eine variable machst.
aendere die letzte zeile in
(strcat liste ")") ;Listenende erzeugen
um, und es sollte funktionieren.

nochwas: dir fehlen checks, ob es z.b. objekte im auswahlsatz gibt, die geloescht werden koennen, ob die dateien ueberhaupt vorhanden sind usw.

gruss
marco

------------------
Marco Heuer
www.arc-aachen.de
Airport Office

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

archi.archi
Mitglied



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

Beiträge: 77
Registriert: 08.10.2010

Windows 10
AutoCAD 2023
Revit 2023

erstellt am: 25. Feb. 2017 11:13    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 Marco,

"du ueberschreibst dir deine funktion "filterladen" am ende selbiger, indem du aus der funktion eine variable machst."
kleine Ursache - große Wirkung! Das kommt wohl davon, wenn man nach 10 Jahren wieder mit LISP anfängt und die Methode der Wertzuweisung in Funktionen über den Namen oder über Parameter verblasst ist!

Ein Check für Dateien (if filterliste ) war schon enthalten. Einen Check für Objekte im Auswahlsatz (if liste) eigentlich auch.

Vielen Dank für deine Hilfe - ab sofort werden alle externen Referenzen schnell und elegant bearbeitet.

Gruß

Archi

[Diese Nachricht wurde von archi.archi am 25. Feb. 2017 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