Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  If not mit or verknüpfen

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 not mit or verknüpfen (493 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: 02. Feb. 2006 08:17    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

Bei einem Lisp habe ich eine If-Verknüpfung drin um von der gesamten Auswahl ein bestimmtes Objekt einer Farbe herauszufilter, das funktioniert soweit gut. Der Code dazu:

Code:

(if
  (not
      (and (= (strcase (vla-get-objectname item)) "OBJEKTNAME")
      (= (vla-get-color item) 10)
      ) ; ENDE AND
  ) ; ENDE NOT
); ENDE IF

Nun möchte ich einen zweiten Objekttyp hinzufügen der in derselben Auswahl herausgefiltert wird. Ich habe gedacht man kann das mit einem zusätzlichen OR machen, aber irgendwie will es nicht. Wieso nicht? Das Lisp ist nicht vollständig, es geht lediglich um diese IF-Verzweigung.

Code:

(if
  (not
    (or
      (and (= (strcase (vla-get-objectname item)) "OBJEKTNAME1")
      (= (vla-get-color item) 10)
      ) ; ENDE AND

      (and (= (strcase (vla-get-objectname item)) "OBJEKTNAME2")
      (= (vla-get-color item) 10)
      ) ; ENDE AND
      ( ;ENDE OR
  ) ; ENDE NOT
); ENDE IF


Wäre super wenn mir jemand helfen könnte.

Grüsse
Hänk

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. Feb. 2006 08: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 Hänk 10 Unities + Antwort hilfreich

imho so:

(if(not(and (or(= (strcase (vla-get-objectname item)) "OBJEKTNAME1")
               (= (strcase (vla-get-objectname item)) "OBJEKTNAME2")
            )  
            (= (vla-get-color item) 10)
       )
   )
  (progn
    .
    .
    .
  ) 
)

Macht was mit Objekten, die nicht vom Typ "OBJEKTNAME1" oder "OBJEKTNAME1" sind und nicht Farbe 10 haben..
------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.

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: 02. Feb. 2006 08:32    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

Vielen Dank, wenn aber die Farbe nicht zwingend identisch ist bei den beiden Filterobjekten kann ich das nicht so definieren. Wie würde es dann aussehen?

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

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 02. Feb. 2006 09: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 Nur für Hänk 10 Unities + Antwort hilfreich

Hi,
es gibt doch auch noch andere Möglichkeiten Bedingungen abzuprüfen...
Guckst Du mal hier:
Code:

(if
  (not
    (and (member (strcase (vla-get-objectname ITEM))
                (mapcar 'strcase '("AcDb2dPolyline" "AcDbCircle" "AcDbLine"))
        )
        (member (vla-get-color ITEM) '(10 20 256))
    )
  )
  (princ "\nNicht gefiltert.")
  (princ "\nGefiltert.")
)

oder hier mit wcmatch statt mit member

Code:

(if (not (and (wcmatch (strcase (vla-get-objectname ITEM))
                      (strcase "*line,AcDbCircle")
              )
              (member (vla-get-color ITEM) '(10 20 256))
        )
    )
  (princ "\nNicht gefiltert.")
  (princ "\nGefiltert.")
)


...

------------------
Ciao,
Marc

[Diese Nachricht wurde von marc.scherer am 02. Feb. 2006 editiert.]

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: 02. Feb. 2006 10:27    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

Es gibt immer div. Arten zum Ziel, ich möchte aber einmal die erste Variante erfolgreich zu Ende führen. Hier mein Versuch, der aber nicht funktioniert,e r ignoriert die Auswahl um wählt alles aus. Ich habe irgendwas mit or und and verwechselt denke ich, aber weiss nicht weiter:

Code:

(if (not
  (and
      (or (= (strcase (vla-get-objectname item)) "CIRCLE")
      (= (vla-get-color item) 8)
  ) ; ENDE OR
      (or (= (strcase (vla-get-objectname item)) "ACDBLINE")
      (= (vla-get-color item) 9)
  ) ; ENDE OR
  ) ; ENDE AND
) ; ENDE NOT

Alles soll gewählt werden ausser Kreise mit der Farbe 8 und Linien mit der Farbe 9.

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 02. Feb. 2006 10: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

(if(not(or(and(=(strcase (vla-get-objectname item)) "CIRCLE")           
              (= (vla-get-color item) 8)
          )
          (and(= (strcase (vla-get-objectname item)) "ACDBLINE")
              (= (vla-get-color item) 9)
          )         
      )
  )     
  (progn
  ) 
)

------------------
- Thomas -
"Du bist einen uns unbekannten Weg in eine andere Form des Seins gegangen. - Wir sehen uns wieder in deinem Paradies!"

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

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 02. Feb. 2006 10:46    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:
Es gibt immer div. Arten zum Ziel

Klar gibt es das.
Aber willst Du jedesmal, wenn Du weitere Objekttypen ausgrenzen willst eine weitere aufwändige Bedingung in Deinen Code frickeln, wenn die Erweiterung einer Liste bzw. eines Strings ausreichend ist?
Dein Ansatz ist IMHO schlichtweg umständlich.

------------------
Ciao,
Marc

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: 02. Feb. 2006 12:54    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

@Cadmium
Danke an Cadmium, mit diesem kleinen Eingriff hat's geklappt. Habe Or und And verwechselt.

@marc.scherrer
Du hast natürlich Recht, werde mir deine Antwort (jetzt wo das Ding läuft) auch nochmals genauer anschauen

Grüsse
Hänk

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