Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Highlighten (Markieren) von mittel "entsel" gewählten Objekten?

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:  Highlighten (Markieren) von mittel "entsel" gewählten Objekten? (972 mal gelesen)
holgerka75
Mitglied



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

Beiträge: 15
Registriert: 19.03.2004

erstellt am: 19. Mrz. 2004 09:36    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 Lispler,

wie kann ich Objekte, die mittels entsel vom Benutzer angeklickt wurden, nach erfolgreichem Anklicken, markieren (hervorheben)?

Hintergrund ist der, das der User in einer AutoCad-Zeichnung mehrere dicht zusammenliegende Objekte anklicken muss, und mittels ge-highlightetem Objekt Bescheid wissen sollte, welche er bereits angeklickt hat....

Bitte entschuldigt, falls das eine blöde Frage sein sollte, aber ich bin absoluter LISP-Anfänger, lerne es (im Praxissemester) erst seit einer Woche....

Gruß
Holger

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: 19. Mrz. 2004 09:39    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 holgerka75 10 Unities + Antwort hilfreich

hiermit :

(defun AUSLEUCHTEN (AUSWAHLSATZ EIN / ELEMENTNUMMER ELEMENT ZAEHLER)
  (if(=(type AUSWAHLSATZ) 'PICKSET)
    (progn
      (setq ZAEHLER 0)
      (while (and AUSWAHLSATZ (setq ELEMENT (ssname AUSWAHLSATZ ZAEHLER)))
        (if EIN                                                 
          (redraw ELEMENT 3)                                    
          (redraw ELEMENT 4)                                    
        ) 
        (setq ZAEHLER (1+ ZAEHLER))
      )
    )  
  )
  (princ)                                                       
)
ist EIN 'T ..wird ausgeleuchtet sonst wird ausleuchten abgeschaltet
- Funktion bezieht sich auf Auswahlsätze...
bei entsel ... reicht nur (redraw (car(entsel)) 3) usw.

------------------
  - Thomas -

[Diese Nachricht wurde von CADmium am 19. Mrz. 2004 editiert.]

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

holgerka75
Mitglied



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

Beiträge: 15
Registriert: 19.03.2004

erstellt am: 19. Mrz. 2004 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

CADmium,

vielen Dank, mit (redraw (entsel... )3 ) funktioniert das wunderbar!

Gruß
Holger

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


Ex-Mitglied

erstellt am: 19. Mrz. 2004 13:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Zitat:
Original erstellt von CADmium:
hiermit :

(defun AUSLEUCHTEN (AUSWAHLSATZ EIN / ELEMENTNUMMER ELEMENT ZAEHLER)
  (if(=(type AUSWAHLSATZ) 'PICKSET)
    (progn
      (setq ZAEHLER 0)
      (while (and AUSWAHLSATZ (setq ELEMENT (ssname AUSWAHLSATZ ZAEHLER)))
        (if EIN                                                 
          (redraw ELEMENT 3)                                   
          (redraw ELEMENT 4)                                   
        ) 
        (setq ZAEHLER (1+ ZAEHLER))
      )
    ) 
  )
  (princ)                                                       
)
ist EIN 'T ..wird ausgeleuchtet sonst wird ausleuchten abgeschaltet
- Funktion bezieht sich auf Auswahlsätze...
bei entsel ... reicht nur (redraw (car(entsel)) 3) usw.


Der Wert für AUSWAHLSATZ in Deiner WHILE Bedingung ist immer "wahr", denn auch ein leerer Auswahlsatz ist nicht NIL, sondern immer noch ein Pickset. Und statt der ständig zu prüfenden WHILE-Bedingung kann man natürlich vereinfachend einmal die Anzahl für eine REPEAT Schleife angeben. Man kann das also beispielsweise so etwas eleganter machen:

(defun AUSLEUCHTEN (AUSWAHLSATZ EIN / ZAEHLER)
  (setq ZAEHLER 0)
  (if(=(type AUSWAHLSATZ) 'PICKSET)
    (repeat (sslength AUSWAHLSATZ)
        (if EIN                                                 
          (redraw (ssname AUSWAHLSATZ ZAEHLER) 3)                                   
          (redraw (ssname AUSWAHLSATZ ZAEHLER) 4)                                   
        ) 
        (setq ZAEHLER (1+ ZAEHLER))
    ) 
  )                                               
)

Das PRINC am Ende der Funktion würde ich immer weglassen, wenn es kein mittels (DEFUN C:function ...) erzeugter Befehl ist. Und eigentlich würde ich die Prüfung des korrekten Datentyps (if(=(type AUSWAHLSATZ) 'PICKSET) ...) immer der aufrufenden Funktion überlassen - bei wie in LISP üblich zahlreich verschachtelten Funktionen würdest Du sonst nämlich ein und denselben Datentyp zigfach prüfen.

Noch eleganter wäre IMOIn my opinion = Meiner Meinung nach, wenn Du den Auswahlsatz erst in eine Liste umwandelst, und diese dann mit MAPCAR abarbeitest. Das Umwandeln in eine Liste hat viele Vorteile, denn die PICKSETs sind keine echten LISP-Konstrukte und können böse Seiteneffekte (nicht in dem Fall) haben.

(defun sset2list (sset / result counter)
  (setq counter 0)
  (repeat (sslength sset)
    (setq result (cons (ssname sset counter) result))
  )
  result
)

(defun highlight (sset flag)
  (mapcar (function (lambda (entity)
      (if flag
        (redraw entity 3)
        (redraw entity 4)
      )
      ))
      (sset2list sset)
  )
)

Gruß
Tom Berger

------------------
Architekturwerkzeuge für AutoCAD: http://www.archtools.de

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: 19. Mrz. 2004 13: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 holgerka75 10 Unities + Antwort hilfreich

ja ja ja .....   ... ist ne Art "Jugendsünde" , die ich einfach schnell reinkopiert habe.. sonst haste natürlich recht ...

Bloß ob die Überprüfung der übergebenen Parameter wirklich soooviel Zeit kostet?? Da verfolge ich eine andere Philosophie : Für jede Funktion gilt bei mir : Führe nur aus, was du sicher kannst!
Ich laß mich aber auch durch Argumente überzeugen...

Jetzt fehlt bloß noch , daß Axel seinen Senf dazu gibt .. <lach>

------------------
  - Thomas -

[Diese Nachricht wurde von CADmium am 20. Mrz. 2004 editiert.]

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



Entwicklungsingenieur (m/w/d)
Die besten Köpfe für die unterschiedlichsten Aufgaben zu finden sowie Menschen und Technologien zu verbinden, und zwar täglich aufs Neue - dafür schätzen unsere Kunden FERCHAU. Unterstütze uns: als ambitionierte:r Kolleg:in, der:die wie wir Technologien auf die nächste Stufe bringen möchte. Wir realisieren spannende Projekte für namhafte Kunden in allen Technologiebereichen und für alle Branchen und übernehmen Verantwortung für komplexe Entwicklungsprojekte....
Anzeige ansehenEntwicklung
CADwiesel
Moderator
CAD4FM UG




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

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 21. Mrz. 2004 18:31    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 holgerka75 10 Unities + Antwort hilfreich




Mann kann es natürlich auch übertreiben.
Meint Ihr nicht, die Antwort  (redraw [ename] 3) hätte gereicht?
Nur weil mann Programmieren kann, muss mann doch nicht gleich eine einfache Antwort in ein Programm verpacken!

------------------
Gruß
CADwiesel
Besucht uns im CHAT

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