Forum:Rund um AutoCAD
Thema:Lisp für alles von Block setzten innerhalb von Blöcken?
Möchten Sie sich registrieren?
Wer darf antworten? Registrierte Benutzer können Beiträge verfassen.
Hinweise zur Registrierung Sie müssen registriert sein, um Beiträge oder Antworten auf Beiträge schreiben zu können.
Ihr Benutzername:
Ihr Kennwort:   Kennwort vergessen?
Anhang:    Datei(en) anhängen  <?>   Anhänge verwalten  <?>
Grafik für den Beitrag:                                                
                                                       
Ihre Antwort:

Fachbegriff
URL
Email
Fett
Kursiv
Durchgestr.
Liste
*
Bild
Zitat
Code

*HTML ist AUS
*UBB-Code ist AN
Smilies Legende
Netiquette

10 20 40

Optionen Smilies in diesem Beitrag deaktivieren.
Signatur anfügen: die Sie bei den Voreinstellungen angegeben haben.

Wenn Sie bereits registriert sind, aber Ihr Kennwort vergessen haben, klicken Sie bitte hier.

Bitte drücken Sie nicht mehrfach auf "Antwort speichern".

*Ist HTML- und/oder UBB-Code aktiviert, dann können Sie HTML und/oder UBB Code in Ihrem Beitrag verwenden.

T H E M A     A N S E H E N
nena23

Beiträge: 461 / 0

win 7 pro 64bit, immer aktuell
Acad Architecture 2013/2017, fast immer aktuell

Noch jemand wach? 

meinte ich hätte sowas mal gehabt.
Müllzeichnungen mit reichlich Blöcken müssen aufgehübscht werden. Und jeden Blocktyp einzeln öffnen und Eigenschaften auf "von Block" umlegen dauert zu lange.

Danke

spider_dd

Beiträge: 1038 / 42

Win 10Pro
Intel(R) Core(TM) i7-7700
NVIDIA Quadro P1000
ACAD, Civil-3D 2018

Ist zwar schon etwas älter, aber könnte das sein was Du meinst.
Klick

HTH
Gruß
Thomas

nena23

Beiträge: 461 / 0

win 7 pro 64bit, immer aktuell
Acad Architecture 2013/2017, fast immer aktuell

Danke, aber läuft nicht. "Fehlerhafte DXF-Gruppe: ((-1 . <Objektname: 6...."
Andreas Kraus

Beiträge: 1193 / 1

Win 10
ACAD 2019

Hallo nena23,
hier mal ein Lisp dass die Farbe aller Objekte in allen Blöcken auf vonblock stellt.

Kannst du erweitern für Linientyp, Linienstärke, usw.

Code:
(vlax-for blk (vla-get-blocks
(vla-get-activedocument (vlax-get-acad-object))
      )
  (if (= (vla-get-IsLayout blk) :vlax-false)
    (vlax-for obj blk
      (vla-put-color obj 0)
    )
  )
)

EDIT: Da ist jetzt noch nichts mit Layer tauen, entsperren oder irgend eine Fehlerbehandlung dabei
------------------
Geht nicht, gibts nicht

Gruß
Andreas

http://kraus-cad.de

[Diese Nachricht wurde von Andreas Kraus am 09. Dez. 2019 editiert.]

nena23

Beiträge: 461 / 0

win 7 pro 64bit, immer aktuell
Acad Architecture 2013/2017, fast immer aktuell

Danke. Aber irgendwie passiert da nix. Habs mit appload geladen.
Meldung: Keine Umwandlung des lisp-Wertes in VARIANT mit folgendem Typ:  0

Dirk

Andreas Kraus

Beiträge: 1193 / 1

Win 10
ACAD 2019

Vielleicht so:

Code:
(vl-load-com)
(vlax-for blk (vla-get-blocks
(vla-get-activedocument (vlax-get-acad-object))
      )
  (if (= (vla-get-IsLayout blk) :vlax-false)
    (vlax-for obj blk
      (if (vlax-property-available-p obj "color")
      (vla-put-color obj 0)
    )
    )
  )
)

Ich hab mal reingeschrieben dass die Farbe nur geändert wird wenn das Objekt auch "Farbe hat"

Ach ja ... danach bitte regenerieren

------------------
Geht nicht, gibts nicht

Gruß
Andreas

http://kraus-cad.de

[Diese Nachricht wurde von Andreas Kraus am 09. Dez. 2019 editiert.]

CADmium

Beiträge: 13456 / 249

Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.

(vl-load-com)
(defun C:BLKOBJCOLOR(/ blk obj TC-OBJ)
(vlax-for blk (vla-get-blocks
(vla-get-activedocument (vlax-get-acad-object))
      )
  (if (= (vla-get-IsLayout blk) :vlax-false)
    (vlax-for obj blk
      (cond
        ((and(not(vl-catch-all-error-p                             
                  (setq TC-OBJEKT(vl-catch-all-apply
                                    'vlax-property-available-p
                                      (list OBJ 'TrueColor)
                                    )
                  )
                )
            )
            TC-OBJEKT
            (not(vl-catch-all-error-p                             
                  (setq TC-OBJEKT(vl-catch-all-apply
                                    'vla-Get-TrueColor
                                    (list OBJEKT)
                                  )     
                  )
                )
            )
          )   
          (vla-put-ColorMethod TC-OBJEKT acColorMethodByLayer)
       
          (vlax-release-object TC-OBJEKT)
        )                       
        ((vlax-property-available-p obj "color")
            (vla-put-color obj acbyBlock)
        )
      )                 
    )
  )
)
(vla-Regen(vla-get-activedocument(vlax-get-acad-object))acAllViewports)
)

------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

nena23

Beiträge: 461 / 0

win 7 pro 64bit, immer aktuell
Acad Architecture 2013/2017, fast immer aktuell

Danke erstmal, werde ich nochmal ausprobieren.
Habe inzwischen im x-ten Versuch eine lsp gefunden ("fixblockII") die es ohne Fehlermeldung tut. Zwar auf vonLayer, aber das passt hierfür auch.
Dirk


cadffm

Beiträge: 20120 / 1053

System: F1
und Google

Schau das die verwendeten Codeschnipsel nicht alle Blöcke bearbeiten, denn es ist nicht
wirklich was du möchtest (je nach Datei/Inhalt/Stilen).

Die Beispiele hier im Thread sind dann doch eher fürs programmierende Volk
die sich derartige Sicherungen noch selbst einbauen.

Bemaßungen, StandardBemaßungspfeile, , Tabellen oder auch Anordnungn und mehr noch sind auch alles "Blöcke",
ich denke nicht das du wirklich ALLE bearbeiten willst.
(falls doch, ist es ein diskussionswürdiges Vorhaben   )

Musicus

Beiträge: 682 / 3

AutoCAD 2018
Linear Building 18
Linear CAD Solutions 18
C.A.T.S.
Windows 10 64bit

Zitat:
Original erstellt von nena23:
Danke erstmal, werde ich nochmal ausprobieren.
Habe inzwischen im x-ten Versuch eine lsp gefunden ("fixblockII") die es ohne Fehlermeldung tut. Zwar auf vonLayer, aber das passt hierfür auch.
Dirk



Wenn das Ergebnis VONLAYER auch passt, dann sollte es der Befehl _-SETBYLAYER eigentlich auch tun.