|  |  | 
|  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | 
|  |  | 
|  | Jetzt verfügbar: NVIDIA RTX PRO 6000 Blackwell Server Edition, eine Pressemitteilung 
 | 
| Autor | Thema:  If not mit or verknüpfen (579 mal gelesen) | 
 | Hänk Mitglied
 
 
   
 
      Beiträge: 126Registriert: 10.05.2004
 ADT 2004 / AutoCAD 2004 |    erstellt am: 02. Feb. 2006 08:17  <-- editieren / zitieren -->    Unities abgeben:            
  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üsseHänk
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Brischke Moderator
 CAD on demand GmbH
 
         
 
  
 
      Beiträge: 4201Registriert: 17.05.2001
 AutoCAD 20XX, defun-tools (d-tools.eu) |    erstellt am: 02. Feb. 2006 08:22  <-- editieren / zitieren -->    Unities abgeben:           Nur für Hänk   
  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
 
 
   
 
      Beiträge: 126Registriert: 10.05.2004
 ADT 2004 / AutoCAD 2004 |    erstellt am: 02. Feb. 2006 08:32  <-- editieren / zitieren -->    Unities abgeben:            | 
                        | marc.scherer Ehrenmitglied V.I.P. h.c.
 CAD-Administrator
 
 
  
 
      Beiträge: 2494Registriert: 02.11.2001
 Windows 10 64bitAutoCAD 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 / zitieren -->    Unities abgeben:           Nur für Hänk   
  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
 
 
   
 
      Beiträge: 126Registriert: 10.05.2004
 ADT 2004 / AutoCAD 2004 |    erstellt am: 02. Feb. 2006 10:27  <-- editieren / zitieren -->    Unities abgeben:            
  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
 
         
 
  
 
      Beiträge: 13533Registriert: 30.11.2003
 . |    erstellt am: 02. Feb. 2006 10:34  <-- editieren / zitieren -->    Unities abgeben:           Nur für Hänk   
  (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
 
 
  
 
      Beiträge: 2494Registriert: 02.11.2001
 Windows 10 64bitAutoCAD 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 / zitieren -->    Unities abgeben:           Nur für Hänk   
 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
 
 
   
 
      Beiträge: 126Registriert: 10.05.2004
 ADT 2004 / AutoCAD 2004 |    erstellt am: 02. Feb. 2006 12:54  <-- editieren / zitieren -->    Unities abgeben:            
  @Cadmium Danke an Cadmium, mit diesem kleinen Eingriff hat's geklappt. Habe Or und And verwechselt. @marc.scherrerDu hast natürlich Recht, werde mir deine Antwort (jetzt wo das Ding läuft) auch nochmals genauer anschauen
 GrüsseHänk
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |