Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Farbe Button ändern (dcl)

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
  
Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
Autor Thema:  Farbe Button ändern (dcl) (1895 mal gelesen)
AB
Mitglied



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

Beiträge: 255
Registriert: 24.05.2002

Mechanical Desktop 6
AutoCAD 2002

erstellt am: 24. Mai. 2004 16:25    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 zusammen,

kann man in einer dcl-Datei die Farbe eines image_button ändern?
D.h., ich habe allen image_button die Farbe(color) schwarz zugeordnet.
Nun soll der Button, der angeklickt wurde, eine andere Farbe erhalten.
Geht das? Variablen scheinen ja nicht anerkannt zu werden
(z.B. (setq Farbe 2)
: image_button {
      width = 5;
      color = Farbe}
)

Viele Grüße
Andrea

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

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: 1989
Registriert: 05.09.2000

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

erstellt am: 24. Mai. 2004 16:30    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 AB 10 Unities + Antwort hilfreich

nein
du kannst nur dias einbauen, die eine Farbe haben

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

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: 4187
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 24. Mai. 2004 20: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 Nur für AB 10 Unities + Antwort hilfreich

Hallo Andrea,

klar geht das,

schau dazu mal unter dem Stichwort fill_image in der Hilfe nach.

Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
Da weiß man, wann man's hat!

Treffen Sie (defun auf dem Autodesk Anwendertreffen am 15.06. in Steyr/Österreich!

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

benwisch
Mitglied
Bautechniker, CAD-Konstrukteur


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

Beiträge: 375
Registriert: 01.02.2001

erstellt am: 25. Mai. 2004 09:38    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 AB 10 Unities + Antwort hilfreich

Moin Andrea
Zitat:

... Nun soll der Button, der angeklickt wurde, eine andere Farbe erhalten.
Geht das?

In Lisp ja ! Holger's Antwort -> fill_image

Hier mal zwei kleine Beispiele, was man so alles damit "anstellen" kann :-)

DIE DCL DATEI -> speichern unter test-image_button.DCL

Code:

TEST : dialog {
label="Sonnen->Regenbogenfarben";
        : image_button {
            key = "pic";
            width = 35;
            height = 17;
            aspect_ratio = 1.0;
            color = graphics_background;
        }
ok_cancel;
}

Mit dem folgenden Lisp siehst du, wie sich jeweils die Farbe bei Klick ändert.

Aufruf mit (c:test-image) aus Lisp heraus

Code:

;;; Hauptroutine. Ruft bei jedem Klick auf die
;;; Schaltfläche im action_tile
;;; die Funktion img-button-event auf
(defun c:test-image (/ dcl_id *col)
(setq dcl_id (load_dialog "test-image_button.DCL")
      *col  0
)
(new_dialog "TEST" dcl_id)
(action_tile "pic" "(img-button-event \"pic\")")
(start_dialog)
(unload_dialog dcl_id)
) ;_ end defun C:TEST-IMAGE

;;; -----------------------------------------------------------------

;;; Fnktion füllt ein image-button mit Farbe
;;; Argumente : diakey = Key der Schaltfläche
;;;            color  = Farbewert als Ganzzahl
(defun fillimage (diakey color /)
(start_image diakey)
(fill_image 0 0 (dimx_tile diakey) (dimy_tile diakey) color)
(end_image)
) ;_ end function FILLIMAGE

;;; ****

;;; diese Funktion wird im action_tile aufgerufen
;;; und erzeugt eine "Halb"-Globale Farbvariable
;;; und übergibt diese an die Funktion -> fillimage
;;; Argument: key = schaltflächen-key
(defun img-button-event (key /)
(if (> 90 (setq *col (1+ *col)))
  (fillimage key *col)
  (done_dialog)
)
) ;_ end function IMG-BUTTON-EVENT



Ja, sogar Diagramme oder ein Graph kann man erzeugen...
Das nächste Beispiel erzeugt bei jedem Klick einen Punkt mit wechselnder Farbe "irgendwo" auf der Schaltfläche. Die Stärke des Punktes ist 2 (Pixel). Nach jedem erneuten Klick entsteht so langsam ein Kurve rechts oben...

Aufruf mit (c:test-image-2) aus Lisp heraus

Code:

(defun c:test-image-2 (/ dcl_id *col)
(setq dcl_id (load_dialog "test-image_button.DCL")
      *col  0
)
(new_dialog "TEST" dcl_id)
(action_tile "pic" "(img-button-event-2 \"pic\")")
(start_dialog)
(unload_dialog dcl_id)
) ;_ end defun C:TEST-IMAGE-2

;;; -----------------------------------------------------------------

;;; Wandelt eine Gradzahl in Radiant um
(defun deg->rad (ang) (* pi (/ ang 180.0)))

;;; ****

;;; wird im action_tile (der Hauptfunktion) aufgerufen
;;; und startet die Funktion math
(defun img-button-event-2 (key /)
(if (> 90 (setq *col (1+ *col)))
  (math key *col *col 150)
  (done_dialog)
)
)

;;; ****

;;; einfache Testfunktion zur Erzeugung eines Halbkreises
;;; rechts oben in der Image_button Schaltfläche
;;; Punkt ist 2 Pixel stark
;;; ang = winkel in Grad
(defun math (key color ang rad /)
(start_image key)
(fill_image
  (- (dimx_tile key) (round_up (* rad (cos (deg->rad ang)))))
  (round_up (* rad (sin (deg->rad ang))))
  2
  2
  color
)
(end_image)
)

;;; ****

;;; Funktion rundet eine reale Zahl auf oder ab
;;; und gibt einen Integer zurück
(defun round_up (real /)
(if (<= (/ 1 (- real (setq real (fix real)))) 2)
  (1+ real)
  (fix real)
)
)



Fazit...
Macht richtig Spaß oder :-)

------------------
www.benwisch.de

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

AB
Mitglied



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

Beiträge: 255
Registriert: 24.05.2002

Mechanical Desktop 6
AutoCAD 2002

erstellt am: 25. Mai. 2004 12:35    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

Ja, dass ist super.

Funktioniert toll.
Jetzt habe ich diesbezüglich nur noch eine kleine Frage.

Wenn ich mehrere image_button nebeneinander darstellen möchte, dann habe ich immer eine Lücke zwischendurch und kann sie nicht direkt aneinander legen, oder?

Viele Grüße
Andrea

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

benwisch
Mitglied
Bautechniker, CAD-Konstrukteur


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

Beiträge: 375
Registriert: 01.02.2001

erstellt am: 25. Mai. 2004 14: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 Nur für AB 10 Unities + Antwort hilfreich

Soweit mir bekannt ist, entsteht immer eine Lücke.
Wenn du aber gerne einen Kacheleffekt machen möchtest, dann erzeuge doch einfach ein einzelnes großes image_button.
Ein image_button gibt auch die Koordinaten des jeweiligen Klicks aus...siehe Bsp.
Die untenstehende Routine erzeugt vom Mittelpunkt aus eine Linie (hier rot) zum Click-Point. In diesem Bsp. wird mit Operationsausdrücken gearbeitet ($Key = Schlüsselattribut; $x und $y = Bildkoordinaten)

Aufruf mit (c:test-image-3) aus Lisp heraus

Code:

(defun c:test-image-3 (/ dcl_id *col)
(setq dcl_id (load_dialog "test-image_button.DCL")
      *col  0
)
(new_dialog "TEST" dcl_id)
(action_tile "pic" "(pick->line $key $x $y)")
(start_dialog)
(unload_dialog dcl_id)
)
(defun pick->line (key x y /)
(start_image key)
(vector_image (/ (dimx_tile key) 2) (/ (dimy_tile key) 2) x y 1)
(end_image)
)


Mit diesen Info's kannst du nun dir was zurecht-"basteln" :-)

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)2024 CAD.de | Impressum | Datenschutz