Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  einfarb lisp änderung

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:  einfarb lisp änderung (1403 mal gelesen)
kickdown
Mitglied



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

Beiträge: 39
Registriert: 23.08.2006

erstellt am: 30. Okt. 2007 12:03    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

hab das lisp "einfarb" von CADwiesel. brächte aber eine kleine Änderung in dem Lisp.
Ich habe schon versucht es selbst zu ändern, aber dann hat das lisp nicht mehr funktioniert.

das lisp stellt zuerst eine abfrage, welche objekte man einfärben will. genau das will ich ändern.

ich will die Objekte zuerst auswählen und dann das lisp aufrufen.
Dann sollte dieAuswahl eingefärbt werden.

hoff ihr könnt mir helfen.

danke.

--------

(defun C:einfarb (/        SS1      SS1Len  i        NumChg  EName
                  Elist    EType    ZNACZNIK MD_ERR  M:FEHLER m:farbe
                  )
  (setq MD_ERR  *ERROR*
        *ERROR* M:FEHLER
        ) ;_ end of setq
  ;;Marke für Zurück nach Abbruch setzen
  (command "_.UNDO" "_MARK")
  (setvar "cmdecho" 0)
  (setvar "tilemode" 1)
  (command "_.-Layer" "_unlock" "*" "")
  (prompt
    "\nElemente wählen zum ändern, oder Return für alle... "
    ) ;_ end of prompt
  (setq SS1 (ssget))
  (if
    (null SS1)
    (setq
      SS1 (ssget "X" '((-4 . "<NOT") (0 . "VIEWPORT") (-4 . "NOT>")))
      ) ;_ end of setq
    ) ;_ end of if
  (if ss1
    (progn
      (prompt
        "\nObjekt für Farbe picken, oder Return für Farbwahl:"
        ) ;_ end of prompt
      (setq M:Lay (entsel))
      (if (null M:LAY)
        (progn
          (setq m:farbe (acad_colordlg 256))
          (if (null m:farbe)
            (prompt
              "\nDu musst schon 'ne Farbe wählen sonst wird das nix."
              ) ;_ end of prompt
            ) ;_ end of if
          ) ;_ end of progn
        (progn
          (if
            (null (assoc 62 (entget (car M:LAY))))
            (setq m:farbe
                    (cdr
                      (assoc
                        62
                        (tblsearch "LAYER"
                                  (cdr (assoc 8 (entget (car M:LAY))))
                                  ) ;_ end of tblsearch
                        ) ;_ end of assoc
                      ) ;_ end of cdr
                  ) ;_ end of setq
            (setq m:farbe (cdr (assoc 62 (entget (car M:LAY)))))
            ) ;_ end of if
          ) ;_ end of progn
        ) ;_ end of if
      (M:ARBEITE m:farbe)
      ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of defun
(defun M:ARBEITE (m:farbe /)
  (setq SS1Len (sslength SS1)
        i      0
        NumChg 0
        ) ;_ end of setq
  (prompt "\n  Arbeite.")
  (terpri)
  (while (< i SS1Len)
    (cond
      (ZNACZNIK
      (setq ZNACZNIK NIL)
      (princ (strcat (itoa NumChg) "\r \\ "))
      )
      (t
      (setq ZNACZNIK
              (princ (strcat (itoa NumChg) "\r / "))
            ) ;_ end of setq
      )
      ) ;_ end of cond
    (setq EName (ssname SS1 i)
          EList (entget EName)
          EType (cdr (assoc 0 EList))
          ) ;_ end of setq
    (cond
      ((= EType "INSERT")
      (setq
        EList (zeroz 62 EList M:farbe)
        ) ;_ end of setq
      (if (null (tblsearch "BLOCK" (cdr (assoc 2 EList))))
        (progn
          (setq EARX_BTAA (tblnext "BLOCK" T))
          (while
            (/= EARX_BTAA nil)
              (if
                (wcmatch (cdr (assoc 2 EARX_BTAA)) (cdr (assoc 2 EList)))
                (progn
                  (setq EARX_BTAB EARX_BTAA)
                  (setq EARX_BTAA nil)
                  ) ;_ end of progn
                (setq EARX_BTAA (tblnext "BLOCK"))
                ) ;_ end of if
              ) ;_ end of while
          ) ;_ end of progn
        (setq EARX_BTAB (tblsearch "BLOCK" (cdr (assoc 2 EList))))
        ) ;_ end of if
      (setq EARX_BLK (cdr (assoc -2 EARX_BTAB)))
      (while EARX_BLK
        (cond
          (ZNACZNIK (setq ZNACZNIK NIL) (princ "\r \\ "))
          (t (setq ZNACZNIK (princ "\r / ")))
          ) ;_ end of cond
        (setq ELIST (entget EARX_BLK)
              EType (cdr (assoc 0 EList))
              ) ;_ end of setq
        (setq EList (zeroz 62 EList M:farbe))
        (if ELIST
          (entmod ELIST)
          ) ;_ end of if
        (entupd ENAME)
        (setq EARX_BLK (entnext EARX_BLK))
        ) ;_ end of while
      (if (= (cdr (assoc 66 (setq EList (entget ENAME)))) 1)
        (while (/= (cdr (assoc 0 EList)) "SEQEND")
          (setq
            EList (zeroz 62 EList M:farbe)
            EList (entget (entnext (cdr (assoc -1 EList))))
            ) ;_ end of setq
          (entupd ENAME)
          ) ;_ end of while
        ) ;_ end of if
      )
      (T
      (setq EList (zeroz 62 EList M:farbe))
      )
      ) ;_ end of cond
    (setq i (1+ i))
    ) ;_ end of while
  (vla-regen
    (vla-get-activedocument
      (vlax-get-acad-object)
      ) ;_ end of vla-get-activedocument
    acAllViewports
    ) ;_ end of vla-regen
  (princ)
  ) ;_ end of defun

(prompt
  "\nProgramm zum Verändern aller ausgewählten Objekte auf eine auszuwählende Farbe.\nAufruf des Programms mit: \"einfarb\" !"
  ) ;_ end of prompt
(princ) ;_ Fängt das nil vom prompt ab

(defun M:FEHLER (MSG)
  (command "_.UNDO" "_BACK")
  (setq *ERROR* MD_ERR)
  (princ
    (strcat "Fehler! AutoCAD meldet: \"" MSG "\" als Ursache.")
    ) ;_ end of princ
  (princ)
  ) ;_ end of defun

(defun zeroz (key ZEList col / OPList NPList)
  (if (= (cdr (assoc 0 ZEList)) "ATTRIB")
    (setq test nil)
    ) ;_ end of if
  (setq OPList (assoc key ZEList))
  (if (/= OPList nil)
    (setq NPList (cons key col)
          ZEList (subst NPList OPList ZEList)
          ) ;_ end of setq
    (setq ZEList
          (append (reverse (member (assoc 8 ZEList) (reverse zelist)))
                  (cons (cons key col)
                        (cdr (member (assoc 8 ZEList) zelist))
                        ) ;_ end of cons
                  ) ;_ end of append
          ) ;_ end of setq
    ) ;_ end of if
  (entmod ZEList)
  ZELIST
  ) ;_ end of defun

;|«Visual LISP© Format Options»
(72 2 40 1 T "end of " 60 9 0 0 0 nil T nil T)
;*** KEINEN Text unterhalb des Kommentars hinzufügen! ***|;


kann mit jemand weiterhelfen?

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

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 31. Okt. 2007 13:26    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 kickdown 10 Unities + Antwort hilfreich

Hi,
Schieb die Zeile (setq ss1 (ssget)) nach oben,
vor (setq MD_...)
sollte dann gehen...
Diese Einstellungen sollten vor der Auswahl gesetzt sein:
(setvar "cmdecho" 0)
  (setvar "tilemode" 1)
  (command "_.-Layer" "_unlock" "*" "")
...
...hab es aber nicht getestet

mfg heiko

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

kickdown
Mitglied



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

Beiträge: 39
Registriert: 23.08.2006

erstellt am: 06. Nov. 2007 09:29    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

danke für die antwort. funktioniert leider trotzdem nicht.

hat jemand eine andere idee?

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: 06. Nov. 2007 09:53    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 kickdown 10 Unities + Antwort hilfreich

meine Idee


aber speziell zu deinem Problem:
guck dir auch mal folgenden Konstrukt und die Optionen für SSGET an:

(or(and(=(getvar "PICKFIRST")1)
       (setq AUSWAHL(ssget "_i"))
   )
   (setq AUSWAHL (ssget))
)


------------------
      - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

wronzky
Ehrenmitglied V.I.P. h.c.
CAD-Dienstleistungen für Architekten



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

Beiträge: 2154
Registriert: 02.05.2005

CAD:
AutoCAD 2.6 bis 2014
ADT 2005 - 2014
Arcibem
System:
Windows 2000, XP, NO VISTA
Internet-Startseite:
http://www.archi.de

erstellt am: 06. Nov. 2007 10:13    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 kickdown 10 Unities + Antwort hilfreich

Hi,
benutze statt (ssget) (ssgetfirst):
Code:
(or (setq aws (cadr (ssgetfirst))) (setq aws (ssget)))
und schieb es vor alle command-Befehle.
Grüsse, Henning

------------------
VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure

      http://www.voxelman.de

[Diese Nachricht wurde von wronzky am 06. Nov. 2007 editiert.]

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

kickdown
Mitglied



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

Beiträge: 39
Registriert: 23.08.2006

erstellt am: 07. Nov. 2007 08: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

@wronzky
funktioniert leider auch nicht oder ich mache etwas falsch.

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 07. Nov. 2007 09:09    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 kickdown 10 Unities + Antwort hilfreich

Hallo,
ich habe CADmiums Variante eingebaut, ersetze den ersten Teil des Programms mit folgenden Code:
Code:

(defun C:einfarb (/        SS1      SS1Len  i        NumChg  EName
                  Elist    EType    ZNACZNIK MD_ERR  M:FEHLER m:farbe
                  )
  (setq MD_ERR  *ERROR*
        *ERROR* M:FEHLER
        )
  (and(=(getvar "PICKFIRST")1)
      (setq SS1(ssget "_I"))
  )
  ;_ end of setq
  ;;Marke für Zurück nach Abbruch setzen
  (command "_.UNDO" "_MARK")
  (setvar "cmdecho" 0)
  (setvar "tilemode" 1)
  (command "_.-Layer" "_unlock" "*" "")
 
  (or SS1
  (progn
  (prompt
    "\nElemente wählen zum ändern, oder Return für alle... "
    ) ;_ end of prompt
  (setq SS1 (ssget))))

vor die Zeilen
(if
  (null SS1)


Anmerkung: das
(and(=(getvar "PICKFIRST")1)
      (setq SS1(ssget "_I"))
habe ich zum Anfang gesetzt, weil die darauf folgenden Command-Aufrufe die Auswahl "vor Programmablauf" zrücksetzen.

------------------
viele Grüße

Jörn

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

kickdown
Mitglied



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

Beiträge: 39
Registriert: 23.08.2006

erstellt am: 08. Nov. 2007 09: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

danke für die arbeit, aber leider funktioniert es noch immer nicht.
er fragt mich trotzdem nach einer auswahl.

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

wronzky
Ehrenmitglied V.I.P. h.c.
CAD-Dienstleistungen für Architekten



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

Beiträge: 2154
Registriert: 02.05.2005

CAD:
AutoCAD 2.6 bis 2014
ADT 2005 - 2014
Arcibem
System:
Windows 2000, XP, NO VISTA
Internet-Startseite:
http://www.archi.de

erstellt am: 08. Nov. 2007 13:05    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 kickdown 10 Unities + Antwort hilfreich

Hi,
ich komm' noch mal auf meinen Vorschlag zurück, obwohl der von Jörn genausogut funktioniert! (Hast Du es auch exakt so gemacht, wie Jörn es geschrieben hat?)
Code:
(defun C:einfarb (/        SS1      SS1Len  i        NumChg  EName
                  Elist    EType    ZNACZNIK MD_ERR  M:FEHLER m:farbe
                  )
  (setq MD_ERR  *ERROR*
        *ERROR* M:FEHLER
        ) ;_ end of setq
  ;;Marke für Zurück nach Abbruch setzen
  (setq SS1 (cadr (ssgetfirst)))
  (command "_.UNDO" "_MARK")
  (setvar "cmdecho" 0)
  (setvar "tilemode" 1)
  (command "_.-Layer" "_unlock" "*" "")
  (if
    (null SS1)
    (or
      (progn
        (prompt "\nElemente wählen zum ändern, oder Return für alle... ") ;_ end of prompt
        (setq SS1 (ssget))
      )
      (setq  SS1 (ssget "X" '((-4 . "<NOT") (0 . "VIEWPORT") (-4 . "NOT>"))))
      )
    )
  (if ss1.......
UND PICKFIRST muss 1 sein!

Grüsse, Henning


------------------
VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure

      http://www.voxelman.de

[Diese Nachricht wurde von wronzky am 08. Nov. 2007 editiert.]

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

kickdown
Mitglied



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

Beiträge: 39
Registriert: 23.08.2006

erstellt am: 09. Nov. 2007 12: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

ok danke funktioniert.

war mein fehler. wenn ich das lisp start, kommt trotzdem die abfrage "Objekt wählen". es funktioniert aber, einfach rechtsklick und fertig.

das habe ich falsch verstanden.

danke für die mühe.

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

wronzky
Ehrenmitglied V.I.P. h.c.
CAD-Dienstleistungen für Architekten



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

Beiträge: 2154
Registriert: 02.05.2005

CAD:
AutoCAD 2.6 bis 2014
ADT 2005 - 2014
Arcibem
System:
Windows 2000, XP, NO VISTA
Internet-Startseite:
http://www.archi.de

erstellt am: 09. Nov. 2007 12: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 kickdown 10 Unities + Antwort hilfreich

Das liegt daran, das 2x eine Objektabfrage eingebaut ist:
1. Objekte wählen, die eingefärbt werden sollen,
2. Objekt wählen, das die Farbe liefert.
Wenn Du unter 2. kein Objekt wählst, kommt der Farbwahldialog.

Grüsse, Henning

------------------
VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure

  http://www.voxelman.de

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