Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  If-Funktion zum Auswahl prüfen

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:  If-Funktion zum Auswahl prüfen (1615 mal gelesen)
Hänk
Mitglied



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

Beiträge: 126
Registriert: 10.05.2004

ADT 2004 / AutoCAD 2004

erstellt am: 14. Jan. 2006 16:21    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

Hi zusammen

Ich habe mit Lisp einen Auswahlsatz mittels ssget erstellt den ich dann verwende um dessen Eigenschaften zu verändern (chprop). Das funktioniert soweit, nun möchte ich noch den Fehler abfangen wenn die Auswahl ohne gefundene Objekte abbricht.

Mein Ziel ist es den Auswahlsatz zu prüfen, beinhaltet er keine Objekte soll eine Meldung erscheinen und ansonsten soll der chprop Befehl weitergeführt werden um Eigenschaften zu ändern.

Wie mache ich sowas? habe die if-Funktion studiert, aber irgendwie weiss ich nicht wie man damit umgeht.

Grüsse
Hänk

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

archtools
Mitglied



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

Beiträge: 823
Registriert: 09.10.2004

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

erstellt am: 14. Jan. 2006 16:34    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 Hänk 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Hänk:
Hi zusammen

Ich habe mit Lisp einen Auswahlsatz mittels ssget erstellt den ich dann verwende um dessen Eigenschaften zu verändern (chprop). Das funktioniert soweit, nun möchte ich noch den Fehler abfangen wenn die Auswahl ohne gefundene Objekte abbricht.

Mein Ziel ist es den Auswahlsatz zu prüfen, beinhaltet er keine Objekte soll eine Meldung erscheinen und ansonsten soll der chprop Befehl weitergeführt werden um Eigenschaften zu ändern.

Wie mache ich sowas? habe die if-Funktion studiert, aber irgendwie weiss ich nicht wie man damit umgeht.

Grüsse
Hänk



Das hört sich nach Bedarf für einen Grundkurs an :-)

(ssget) gibt NIL zurück, wenn nichts ausgewählt wird, also ist die Prüfung extrem einfach:

(if (setq auswahlsatz (ssget))
  (machwasmitdem auswahlsatz)
)

Falls Du nicht (ssget) verwendest und prüfen möchtest, ob ein vorhandener (!) Auswahlsatz (also ein Ding mit Datentyp 'PICKSET) Elemente enthält, dann gibt (sslength auswahlsatz) die Anzahl der Elemente darin zurück.

Tom Berger

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

Hänk
Mitglied



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

Beiträge: 126
Registriert: 10.05.2004

ADT 2004 / AutoCAD 2004

erstellt am: 14. Jan. 2006 16:41    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

Wie binde ich denn sowas in meinen untenstehenden code ein? Das Lisp macht nichts anderes als alles auf die Farbe 4 zu setzen, ausser LWPolylinien. Ist die Zeichnung aber leer funktionierts nicht ohne Auswahlprüfung.

(defun c:test()
(setq as (ssget "X" (list (cons -4 "<NOT") (cons 0 "LWPOLYLINE") (cons -4 "NOT>"))))
(command "_chprop" "_p" "" "f" "4" "")
)

Mein Versuch die If-Funktion zu verwenden scheiterte:

(defun c:test()
(setq as (ssget "X" (list (cons -4 "<NOT") (cons 0 "LWPOLYLINE") (cons -4 "NOT>"))))
(if (null !as))
(alert "Sorry")
(command "_chprop" "_p" "" "f" "4" "")
)


PS: Das mit dem Grundkurs sehe ich auch so, habe aber bisher nirgendwo sowas gefunden. Angel mich jetzt durch ein Buch vom Mensch und Maschine durch mit mässigem Erfolg.

[Diese Nachricht wurde von Hänk am 14. Jan. 2006 editiert.]

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

s.wickel
Mitglied
Bauingenieur Wasserwirtschaft


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

Beiträge: 422
Registriert: 17.12.2001

Bricscad V7 - V11

erstellt am: 14. Jan. 2006 18:28    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 Hänk 10 Unities + Antwort hilfreich

Hallo Hänk!

So hat Tom das gemeint:

Code:

(if (setq as (ssget .....))  ; Wenn ein Auswahlsatz erzeugt und mit setq zugewiesen wird
    (command .....)  ;dann mache...
    (alert "sorry!")  ; sonst ...
) ; Ende von If


Beachte, dass auf ein If nur drei klammern folgen dürfen (wenn, dann, sonst). Willst du beim zutreffen der Bedingung mehrere Befehle nacheinander ausführen, musst du Sie mit der Funktion (progn ....) zusammenfassen.

Grundkurs unter http://autolisp-tutorial.mapcar.net/ von MAPCAR.
Ich habe Lisp mit dem "Handbuch für Benutzeranpassungen" auf ACAD 12 gelernt. Wie ich das geschafft habe weiß isch allerdings auch nicht mehr .

Nicht Verzweifeln, sondern weiterfragen. 

------------------
Grüße aus dem Siegerland,

Stefan

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



Industrial Engineer (m/w/d)

Glenair wurde 1956 in Glendale, Kalifornien USA gegründet. Im Zuge des erfolgreichen Wachstums wurden weltweit Vertriebs-, Entwicklungs- und Produktionsstätten eröffnet, darunter u.a. in England, Italien, Deutschland, Frankreich und Schweden.

Die seit 1983 etablierte Glenair GmbH mit Sitz in Bad Homburg erweiterte neben ihrem größten Vertriebsgebiet in der EU im Jahre 2017 ihren Tätigkeitsschwerpunkt ...

Anzeige ansehenTeamleitung, Gruppenleitung
CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



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

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 14. Jan. 2006 18:56    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 Hänk 10 Unities + Antwort hilfreich

@Hänk

Das Ausrufezeichen wird in Lisp nur verwendet, um an der Konsole direkt den Wert einer Variablen auszugeben, aber niemals innerhalb eines Programmes.
also nicht

(if (null !as))...
sondern
(if (null as)
  (Tue_dies)
  (sonst_dies)
)

Und eine schließende Klammer im obigen Ausdruck war auch noch zu viel (zu früh) gesetzt.

------------------
Mit freundlichem Gruß

Udo Hübner

[Diese Nachricht wurde von CAD-Huebner am 14. Jan. 2006 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