Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Alle Elemente auf Farbe Von Layer setzen

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:  Alle Elemente auf Farbe Von Layer setzen (6736 mal gelesen)
Squall
Mitglied



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

Beiträge: 12
Registriert: 10.11.2009

Windows Vista Home Premium SP2, 32 Bit; AMD Phenom 8450 3x2.10 GHz; 4GB RAM; NVIDIA GeForce 9400 GT; AutoCAD 2010

erstellt am: 07. Jul. 2010 11:18    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,

ich habe gestern ein kleines Visual-Lisp-Script geschrieben, das alle Layer der aktuellen Zeichnung auf eine graue Farbe setzt, damit ich die Zeichnung als XRef in einer anderen als Unterlage verwenden kann.
Falls jemand ebenfalls Verwendung dafür findet, stelle ich es hier zur Verfügung:

Code:
(vl-load-com)

(defun c:layer-gray (/ layer)
  (vlax-for layer (vla-get-Layers
                    (vla-get-ActiveDocument
                      (vlax-get-acad-object)
                    )
                  )
    (cond
      ((member (vla-get-color layer) (list 16 18 19 26 28 29 36 38 39 46 48 49 56 58 59 66 68 69 76 78 79 86 88 89 96 98 99 106 108 109 116 118 119 126 128 129 136 138 139 146 148 149 156 158 159 166 168 169 176 178 179 186 188 189 196 198 199 206 208 209 216 218 219 226 228 229 236 238 239 246 248 249)) (vla-put-color layer 251))
      ((member (vla-get-color layer) (list 12 14 17 22 24 27 32 34 37 42 44 47 52 54 57 62 64 67 72 74 77 82 84 87 92 94 97 102 104 107 112 114 117 122 124 127 132 134 137 142 144 147 152 154 157 162 164 167 172 174 177 182 184 187 192 194 197 202 204 207 212 214 217 222 224 227 232 234 237 242 244 247)) (vla-put-color layer 252))
      ((member (vla-get-color layer) (list 1 2 3 4 5 6 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 180 185 190 195 200 205 210 215 220 225 230 235 240 245)) (vla-put-color layer 253))
      ((member (vla-get-color layer) (list 11 13 21 23 31 33 41 43 51 53 61 63 71 73 81 83 91 93 101 103 111 113 121 123 131 133 141 143 151 153 161 163 171 173 181 183 191 193 201 203 211 213 221 223 231 233 241 243)) (vla-put-color layer 254))
    )
  )
)


Nun zu meinem eigentlichen Problem:
Obwohl nach Aufruf des Scripts alle Layer eine Graustufe zugewiesen bekommen haben, ist doch noch einiges bunt: alle Elemente, bei denen eine andere Farbe als "Von Layer" gesetzt wurde, haben sich nicht verändert.
Also: wie - am liebsten ebenfalls mit Visual Lisp - setze ich alle Eigenschaften aller Elemente, die etwas mit Farbe zu tun haben, auf "Von Layer"? Mit "alle Eigenschaften" meine ich nun beispielsweise auch die (Hilfs)Linien- und Textfarbe von Bemaßungen.

Gruß und vielen Dank für jede Hilfe
- Squall 

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: 07. Jul. 2010 11: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 Squall 10 Unities + Antwort hilfreich

<<Klick>>

ansonsten guck dir auch mal den Befehl _setbylayer an

und wenn du das mit Objekten machen willst .. mußt du eben statt durch die Layer ,durch die Blocktabelle und da durch jeden einzelnen Block laufen ....


------------------
      - 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

Squall
Mitglied



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

Beiträge: 12
Registriert: 10.11.2009

Windows Vista Home Premium SP2, 32 Bit; AMD Phenom 8450 3x2.10 GHz; 4GB RAM; NVIDIA GeForce 9400 GT; AutoCAD 2010

erstellt am: 07. Jul. 2010 11: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

Im Layout sollte eigentlich nichts drin sein, komme ich nicht über
Code:
vla-get-ModelSpace
auch zu meinen Objekten?
Oder muss ich ModelSpace und Blöcke durchgehen?

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: 07. Jul. 2010 11:41    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 Squall 10 Unities + Antwort hilfreich

Layout und Modell sind auch Blöcke  

Probier doch mal einen Block mit dem Namen *Model* zu erstellen ..

------------------
      - 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

Squall
Mitglied



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

Beiträge: 12
Registriert: 10.11.2009

Windows Vista Home Premium SP2, 32 Bit; AMD Phenom 8450 3x2.10 GHz; 4GB RAM; NVIDIA GeForce 9400 GT; AutoCAD 2010

erstellt am: 07. Jul. 2010 12: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

Mit Sternchen kann ich (zumindest in der GUI) sowieso keinen Block erzeugen, da sie zu den nicht-zugelassenen Zeichen gehören.
Aber ja, nur die Blöcke zu bearbeiten funktioniert, danke. 

Hier der Code, habe ich einen kleinen Counter eingebaut.

Code:
(vl-load-com)

(defun c:layer-gray (/ block i layer object)
  (setq i 0)
  (vlax-for layer (vla-get-Layers
                    (vla-get-ActiveDocument
                      (vlax-get-acad-object)
                    )
                  )
    (cond
      ((member (vla-get-color layer) (list 16 18 19 26 28 29 36 38 39 46 48 49 56 58 59 66 68 69 76 78 79 86 88 89 96 98 99 106 108 109 116 118 119 126 128 129 136 138 139 146 148 149 156 158 159 166 168 169 176 178 179 186 188 189 196 198 199 206 208 209 216 218 219 226 228 229 236 238 239 246 248 249))
        (progn
          (vla-put-color layer 251)
          (setq i (+ i 1))
        )
      )
      ((member (vla-get-color layer) (list 12 14 17 22 24 27 32 34 37 42 44 47 52 54 57 62 64 67 72 74 77 82 84 87 92 94 97 102 104 107 112 114 117 122 124 127 132 134 137 142 144 147 152 154 157 162 164 167 172 174 177 182 184 187 192 194 197 202 204 207 212 214 217 222 224 227 232 234 237 242 244 247))
        (progn
          (vla-put-color layer 252)
          (setq i (+ i 1))
        )
      )
      ((member (vla-get-color layer) (list 1 2 3 4 5 6 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 180 185 190 195 200 205 210 215 220 225 230 235 240 245))
        (progn
          (vla-put-color layer 253)
          (setq i (+ i 1))
        )
      )
      ((member (vla-get-color layer) (list 11 13 21 23 31 33 41 43 51 53 61 63 71 73 81 83 91 93 101 103 111 113 121 123 131 133 141 143 151 153 161 163 171 173 181 183 191 193 201 203 211 213 221 223 231 233 241 243))
        (progn
          (vla-put-color layer 254)
          (setq i (+ i 1))
        )
      )
    )
  )
  (princ (strcat (itoa i) " Layer veraendert\n"))
  (setq i 0)
  (vlax-for block (vla-get-Blocks
                    (vla-get-ActiveDocument
                      (vlax-get-acad-object)
                    )
                  )
    (vlax-for object block
      (if (/= (vla-get-color object) 256)
        (progn
          (vla-put-color object 256)
          (setq i (+ i 1))
        )
      )
    )
  )
  (princ (strcat (itoa i) " Objekte veraendert\n"))
  (princ)
)


Danke nochmals für die Hilfe. 

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