| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: anhand Farbe Layer und Objekte ändern (1501 mal gelesen)
|
Bernd P Ehrenmitglied V.I.P. h.c. cook-general
Beiträge: 3358 Registriert: 07.06.2001 W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365
|
erstellt am: 18. Jun. 2014 08:06 <-- editieren / zitieren --> Unities abgeben:
Servus, Ich will anhand der Farbe des Layers und der Farbe der Objekte Linienbreite und Plotstil zuweisen. Die Strichstärke der Layer zu ändern funktioniert, die Plotstyle wollen nicht. Es bricht ab mit "Fehler: Automatisierungsfehler Schlüssel nicht gefunden.". Es ist eine STB Zeichnung. Hintergrund die leidige Geschichte mit CTB>STB Konvertierung, es sind mehrere CTBs vorhanden. Und will zumindest die Vorlagen und die aktuell in Bearbeitung befindlichen Zeichnungen auf Standard bringen. Quelle des LSP
Code: (defun c:vox-lay-switch ( / l CO PS LW) ;(setq switch-list-CO '((1 7) (2 8) (3 12) (4 34) (5 124) (7 253))); (Farbe neue_Farbe) (setq switch-list-LW '((1 18) (2 35) (3 50))); (Farbe Linienbreite) (setq switch-list-PS '((1 1) (2 7) (3 5))); (Farbe Plotstil) ;(setq switch-list-CO (mapcar 'reverse switch-list));Zuordnung ggf. umkehren für andere Richtung (vl-load-COm) (vlax-for l (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))) (if (setq LW (cadr (assoc (vla-get-color l) switch-list-LW))) (vla-put-Lineweight l LW) ) (if (setq PS (cadr (assoc (vla-get-color l) switch-list-LW))) (vla-put-PlotStyleName l PS) ) ;(if (setq CO (cadr (assoc (vla-get-color l) switch-list-CO))) ; (vla-put-color l CO) ;) ) )
------------------ <----- Bitte Systeminfo eintragen, warum siehst du hier. "Warum Einfach es geht auch kompliziert". Schöne Grüsse aus der Steiermark Bernd P. Sport ist Mord Rekorde: Scalelist>11727, Fehler>34365, Layerfilter>XXXX Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 18. Jun. 2014 08:17 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd P
Drei Dinge 1. habe ich mir den Code nicht im Detail angesehen (nocht nicht) 2. warum kannst du nichteinfach mit convertplstyles arbeiten, das habe ich noch nicht ganz verstanden 3. Bist du sicher das du eine stb-abhängige Datei hast ?? Davon abgesehen sind PlotstilNAMEN sicherlich STRINGs und keine Zahelnwerte (setq switch-list-PS '((1 1) (2 7) (3 5))); (Farbe Plotstil) In dem konkreten Fall wäre die zughörige Datei sicher ein Anreiz das es mehr Helfer gibt, denn ohne die Datei muß man schon wieder selber basteln um dein Problem zu nachvollziehen zu können.
------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd P Ehrenmitglied V.I.P. h.c. cook-general
Beiträge: 3358 Registriert: 07.06.2001 W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365
|
erstellt am: 18. Jun. 2014 08:43 <-- editieren / zitieren --> Unities abgeben:
Servus, 2. convertpstyles ändert mir schon die Zeichnung anhand einer mit convertctb erstellten ctb, aber dann hab ich eine Zeichnung die zwar Plotstilabhängig ist aber mit der falschen STB und in den CTBs sind auch Strichstärken definiert die wir im Layer einstellen. 3. die Standard.stb enthält alle Indexfarben 1=1 2=2 etc. und noch andere. Davon abgesehen sind PlotstilNAMEN sicherlich STRINGs und keine Zahlenwerte klingt logisch, nur leider keinen Schimmer wie das ändere ------------------ <----- Bitte Systeminfo eintragen, warum siehst du hier. "Warum Einfach es geht auch kompliziert". Schöne Grüsse aus der Steiermark Bernd P. Sport ist Mord Rekorde: Scalelist>11727, Fehler>34365, Layerfilter>XXXX
[Diese Nachricht wurde von Bernd P am 18. Jun. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 18. Jun. 2014 08:53 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd P
ja die Ansprüche sind hoch: Warum denn eine Zip, das nervt unnötig Dazu hast du die STB hoch geladen, wichtig wäre jedoch die DWG (wegen der Fehlermeldung die du erwähntest)JAJA, bei stb ist das Zip natürlich richtig, habe einfach nicht damit gerechnet - SORRY Zitat: Original erstellt von Bernd P:
Davon abgesehen sind PlotstilNAMEN sicherlich STRINGs und keine Zahlenwerte klingt logisch, nur leider keinen Schimmer wie das ändere
1 = INT (Zahl) 1.0 = REAL (Zahl) "1" = String (Text) "1.0" = String (Text) [Diese Nachricht wurde am 17.06.2014 von cadffm editiert]
------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd P Ehrenmitglied V.I.P. h.c. cook-general
Beiträge: 3358 Registriert: 07.06.2001 W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365
|
erstellt am: 18. Jun. 2014 09:11 <-- editieren / zitieren --> Unities abgeben:
Selbe Fehler ; Fehler: Automatisierungsfehler Schlüssel nicht gefunden Code: (defun c:vox-lay-switch ( / l CO PS LW) ;(setq switch-list-CO '((1 7) (2 8) (3 12) (4 34) (5 124) (7 253))); (Farbe neue_Farbe) (setq switch-list-LW '((1 18) (2 35) (3 50))); (Farbe Linienbreite) (setq switch-list-PS '((1 "1") (2 "7") (3 "5"))); (Farbe Plotstil) ;(setq switch-list-CO (mapcar 'reverse switch-list));Zuordnung ggf. umkehren für andere Richtung (vl-load-COm) (vlax-for l (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))) (if (setq LW (cadr (assoc (vla-get-color l) switch-list-LW))) (vla-put-Lineweight l LW) ) (if (setq PS (cadr (assoc (vla-get-color l) switch-list-PS))) (vla-put-PlotStyleName l PS) ) ;(if (setq CO (cadr (assoc (vla-get-color l) switch-list-CO))) ; (vla-put-color l CO) ;) ) )
------------------ <----- Bitte Systeminfo eintragen, warum siehst du hier. "Warum Einfach es geht auch kompliziert". Schöne Grüsse aus der Steiermark Bernd P. Sport ist Mord Rekorde: Scalelist>11727, Fehler>34365, Layerfilter>XXXX Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 18. Jun. 2014 09:23 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd P
Zitat: Original erstellt von Bernd P: Es bricht ab mit "Fehler: Automatisierungsfehler Schlüssel nicht gefunden.".
Die Meldung kommt wenn der Plotstil nicht vorhanden ist (in deinem Fall mußt du also erst mal einen STRING übergeben statt einer Zahl..). "Vorhanden" bedeutet nicht das die Plotstiltabelle des aktiven Bereiches einen Plotstil mit dem Namen hat, das reicht leider nicht aus. Der Plotstil muß wohl erst "bekannt" gemacht werden in der Datei, wie das geht, damit habe ich mich noch nicht beschäftigt. Ich habe es getestet in dem ich einem Objekt den gewünschten Plotstil zugeordnet habe, danach ging es. ;---schnipp--- KREIS 0,0 5 _.change _l _p _plotstyle 13 _.erase _l ;---schnipp--- ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 18. Jun. 2014 09:35 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd P
Nachtrag weil es mich interessierte (und ich es hier immer wieder finden werde ) von MichelLoftus: Klick. Code: (defun AddPlotStyle (name / ps eps ph) (setq ps (vlax-vla-object->ename (vla-item (vla-get-dictionaries (vla-get-activedocument (vlax-get-acad-object) ) ) "ACAD_PLOTSTYLENAME" ) ) ;get PlotStyleName dictionary eps (entget ps) ;get object definition data ) (if (and (= (type name) 'str) (snvalid name) (null (member (cons 3 name) eps))) ;check name is a valid string and the plot style isn't already loaded (progn (setq ph ;create new placeholder object referenced to PlotStyleName dictionary (entmakex (list '(0 . "ACDBPLACEHOLDER") '(102 . "{ACAD_REACTORS") (cons 330 (cdr (assoc -1 eps))) '(102 . "}") (cons 330 (cdr (assoc -1 eps))) ) ) ) (dictadd ps name ph) ;add placeholder to plotStylename Dictionary ) ) (princ) )
------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd P Ehrenmitglied V.I.P. h.c. cook-general
Beiträge: 3358 Registriert: 07.06.2001 W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365
|
erstellt am: 18. Jun. 2014 11:33 <-- editieren / zitieren --> Unities abgeben:
Danke durch vorheriges laden der Plotstile funktioniert es! ------------------ <----- Bitte Systeminfo eintragen, warum siehst du hier. "Warum Einfach es geht auch kompliziert". Schöne Grüsse aus der Steiermark Bernd P. Sport ist Mord Rekorde: Scalelist>11727, Fehler>34365, Layerfilter>XXXX [Diese Nachricht wurde von Bernd P am 18. Jun. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd P Ehrenmitglied V.I.P. h.c. cook-general
Beiträge: 3358 Registriert: 07.06.2001 W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365
|
erstellt am: 18. Jun. 2014 14:02 <-- editieren / zitieren --> Unities abgeben:
Soda anbei mein Ergebnis (sieht sicher furchtbar für profis aus) sys_plotstile.dwg enthält alle 254 Plotstile der Indexfarben. Die Listen hab ich durch Goverts PlotStyleViewer exportiert und in Excel ins richtige Format gebracht. den Teil mit der Objektänderung hab ich von hier Verbesserung: direktes Verwenden der TXT vom PlotStyleViewer für die switch-list-LW und switch-list-PS Verbesserung Wunschkonzert: Direkt aus der CTB die switch-list-LW und switch-list-PS Code: (defun c:vox-switch-PS-LW ( / l CO PS LW) (command "_-insert" "sys_plotstile=sys_plotstile.dwg" "0,0" "1" nil) ;(setq switch-list-CO '((1 7) (2 8) (3 12) (4 34) (5 124) (7 253))); (Farbe neue_Farbe) (setq switch-list-LW ' ( (1 50)(2 25)(3 25)(4 35)(5 25)(6 25)(7 25)(8 50)(9 50)(10 50)(11 25)(12 18)(13 25)(14 25)(15 25)(16 25)(17 25)(18 25)(19 25)(20 35)(21 70)(22 25)(23 25)(24 25)(25 25)(26 25)(27 25)(28 25)(29 25)(30 25)(31 25)(32 25)(33 25)(34 25)(35 25)(36 25)(37 25)(38 25)(39 25)(40 25)(41 25)(42 25)(43 25)(44 25)(45 25)(46 25)(47 25)(48 25)(49 25)(50 25)(51 35)(52 25)(53 25)(54 25)(55 25)(56 25)(57 25)(58 25)(59 25)(60 25)(61 25)(62 25)(63 25)(64 25)(65 25)(66 25)(67 25)(68 25)(69 25)(70 25)(71 25)(72 25)(73 25)(74 25)(75 25)(76 25)(77 25)(78 25)(79 25)(80 25)(81 35)(82 25)(83 25)(84 25)(85 25)(86 25)(87 25)(88 25)(89 25)(90 25)(91 25)(92 25)(93 25)(94 25)(95 25)(96 25)(97 25)(98 25)(99 25)(100 50)(101 25)(102 25)(103 25)(104 25)(105 25)(106 25)(107 25)(108 25)(109 25)(110 25)(111 25)(112 25)(113 25)(114 25)(115 25)(116 25)(117 25)(118 25)(119 25)(120 25)(121 25)(122 25)(123 25)(124 25)(125 25)(126 25)(127 25)(128 25)(129 25)(130 50)(131 25)(132 25)(133 25)(134 25)(135 25)(136 25)(137 25)(138 25)(139 25)(140 35)(141 25)(142 25)(143 25)(144 25)(145 25)(146 25)(147 25)(148 25)(149 25)(150 25)(151 25)(152 25)(153 25)(154 25)(155 25)(156 25)(157 25)(158 25)(159 25)(160 25)(161 25)(162 25)(163 25)(164 25)(165 25)(166 25)(167 25)(168 25)(169 25)(170 25)(171 25)(172 25)(173 25)(174 25)(175 25)(176 25)(177 25)(178 25)(179 25)(180 25)(181 25)(182 25)(183 25)(184 25)(185 25)(186 25)(187 25)(188 25)(189 25)(190 25)(191 25)(192 25)(193 25)(194 25)(195 25)(196 25)(197 25)(198 25)(199 25)(200 25)(201 25)(202 25)(203 25)(204 25)(205 25)(206 25)(207 25)(208 25)(209 25)(210 25)(211 25)(212 25)(213 25)(214 25)(215 25)(216 25)(217 25)(218 25)(219 25)(220 70)(221 25)(222 25)(223 25)(224 25)(225 25)(226 25)(227 25)(228 25)(229 25)(230 25)(231 25)(232 25)(233 25)(234 25)(235 25)(236 25)(237 25)(238 25)(239 25)(240 25)(241 18)(242 25)(243 25)(244 25)(245 25)(246 25)(247 25)(248 25)(249 25)(250 50)(251 50)(252 50)(253 50)(254 50) ) ); (Farbe Linienbreite) (setq switch-list-PS ' ( (1 7)(2 7)(3 7)(4 7)(5 7)(6 7)(7 7)(8 7)(9 7)(10 1)(11 11)(12 1)(13 13)(14 14)(15 15)(16 16)(17 17)(18 18)(19 19)(20 1)(21 1)(22 22)(23 23)(24 24)(25 25)(26 26)(27 27)(28 28)(29 29)(30 1)(31 31)(32 32)(33 33)(34 34)(35 35)(36 36)(37 37)(38 38)(39 39)(40 40)(41 41)(42 42)(43 43)(44 44)(45 45)(46 46)(47 47)(48 48)(49 49)(50 40)(51 40)(52 52)(53 53)(54 54)(55 55)(56 56)(57 57)(58 58)(59 59)(60 60)(61 61)(62 62)(63 63)(64 64)(65 65)(66 66)(67 67)(68 68)(69 69)(70 70)(71 71)(72 72)(73 73)(74 74)(75 75)(76 76)(77 77)(78 78)(79 79)(80 3)(81 3)(82 82)(83 83)(84 84)(85 85)(86 86)(87 87)(88 88)(89 89)(90 90)(91 91)(92 92)(93 93)(94 94)(95 95)(96 96)(97 97)(98 98)(99 99)(100 7)(101 101)(102 102)(103 103)(104 104)(105 105)(106 106)(107 107)(108 108)(109 109)(110 110)(111 111)(112 112)(113 113)(114 114)(115 115)(116 116)(117 117)(118 118)(119 119)(120 3)(121 121)(122 122)(123 123)(124 124)(125 125)(126 126)(127 127)(128 128)(129 129)(130 5)(131 131)(132 132)(133 133)(134 134)(135 135)(136 136)(137 137)(138 138)(139 139)(140 5)(141 141)(142 142)(143 143)(144 144)(145 145)(146 146)(147 147)(148 148)(149 149)(150 5)(151 151)(152 152)(153 153)(154 154)(155 155)(156 156)(157 157)(158 158)(159 159)(160 160)(161 161)(162 162)(163 163)(164 164)(165 165)(166 166)(167 167)(168 168)(169 169)(170 170)(171 171)(172 172)(173 173)(174 174)(175 175)(176 176)(177 177)(178 178)(179 179)(180 180)(181 181)(182 182)(183 183)(184 184)(185 185)(186 186)(187 187)(188 188)(189 189)(190 190)(191 191)(192 192)(193 193)(194 194)(195 195)(196 196)(197 197)(198 198)(199 199)(200 200)(201 201)(202 202)(203 203)(204 204)(205 205)(206 206)(207 207)(208 208)(209 209)(210 210)(211 211)(212 212)(213 213)(214 214)(215 215)(216 216)(217 217)(218 218)(219 219)(220 7)(221 221)(222 222)(223 223)(224 224)(225 225)(226 226)(227 227)(228 228)(229 229)(230 230)(231 231)(232 232)(233 233)(234 234)(235 235)(236 236)(237 237)(238 238)(239 239)(240 240)(241 7)(242 242)(243 243)(244 244)(245 245)(246 246)(247 247)(248 248)(249 249)(250 7)(251 7)(252 252)(253 7)(254 7) ) ); (Farbe Plotstil) ;(setq switch-list-CO (mapcar 'reverse switch-list));Zuordnung ggf. umkehren für andere Richtung (vl-load-COm) (vlax-for l (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))) (if (setq LW (cadr (assoc (vla-get-color l) switch-list-LW))) (vla-put-Lineweight l LW) ) (if (setq PS (cadr (assoc (vla-get-color l) switch-list-PS))) (vla-put-PlotStyleName l PS) ) ;(if (setq CO (cadr (assoc (vla-get-color l) switch-list-CO))) ; (vla-put-color l CO) ;) ) (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 (if (setq LW (cadr (assoc (vla-get-color object) switch-list-LW))) (vla-put-Lineweight object LW) ) (if (setq PS (cadr (assoc (vla-get-color object) switch-list-PS))) (vla-put-PlotStyleName object PS) ) (setq i (+ i 1)) ) ) ) ) (Command "_-purge" "_all" "*" "n") )
------------------ <----- Bitte Systeminfo eintragen, warum siehst du hier. "Warum Einfach es geht auch kompliziert". Schöne Grüsse aus der Steiermark Bernd P. Sport ist Mord Rekorde: Scalelist>11727, Fehler>34365, Layerfilter>XXXX Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 18. Jun. 2014 14:06 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd P
|
Bernd P Ehrenmitglied V.I.P. h.c. cook-general
Beiträge: 3358 Registriert: 07.06.2001 W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365
|
erstellt am: 18. Jun. 2014 14:15 <-- editieren / zitieren --> Unities abgeben:
geht als zahl auch sie fehlten nur in der zeichnung ------------------ <----- Bitte Systeminfo eintragen, warum siehst du hier. "Warum Einfach es geht auch kompliziert". Schöne Grüsse aus der Steiermark Bernd P. Sport ist Mord Rekorde: Scalelist>11727, Fehler>34365, Layerfilter>XXXX Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |