• Dieses Forum ist die maschinengenerierte Übersetzung von www.cad3d.it/forum1 - der italienischen Design-Community. Einige Begriffe sind nicht korrekt übersetzt.

Farbänderung zu einem Block

  • Ersteller Ersteller jim78b
  • Erstellt am Erstellt am

jim78b

Guest
ich möchte ein skript machen, das auf einen block klicken, ändert die farbe völlig unabhängig von der schicht... kannst du es tun?
 
Ist eine unvorsichtige lippe okay?


;
(defun c:ccb (/ b_name col)
(setq b_name (cdr (assoc 2 (entget (car)))))
(setq col (getstring "\nnumero colore: ")
(Befehl "-bedit" b_name "_chprop" "_all" "c" mit ""_bclose "")
)
 
du machst es einfach, aber was hast du so gut zu lernen?? ? wie kann ich ihn dazu bringen, die liste zu kopieren und ihn zu retten? verlangsamen sie autocad nicht?
 
für jim78b:
die liste in einer txt-datei, z.b. xyz.txt, speichern und in xyz.lsp umbenennen.
an diesem punkt autocad startet und dann der _appload-befehl, das anwendungs-ladefenster sollte erscheinen, sie suchen nach ihrer datei und an diesem punkt ist es usufructable wie jeder andere autocad-befehl.
folgen sie den anweisungen und ändern sie die farbe des blocks.
oder folgen sie der tristan-methode.
ich füge hinzu, dass es einen abschnitt des forums gibt, der der lisp gewidmet ist, denn fragen zu diesem thema machen die erste forschung dort und sie werden alle ihre antworten finden.
hi.
 
@jim78b, ich antworte ihnen hier.

die oben gepostete lispe fragt nach der auswahl eines blocks und der anzahl einer farbe, danach geht zu der befehlsfunktion eine reihe von befehlen, anstatt sie durch tastatur zu geben:

- was? Das Bier der BlockeditorName blockname gespeichert in der variablen b_name_chprop - > caprop befehlund - > objekte auswählen (alle)" -- > Invioc) - > farbeKolloidal --> farbzahl in der variablen gespeichert mit" -- > Invio_bclose - > schließt den blockeditor" -- > Inviowenn sie andere eigenschaften der blockobjekte ändern möchten, können sie die anleitung nach dem öffnen des blockeditors (_bedit) hinzufügen, z.b. ändern möchten auch die art der objekt, die der deckel so aussehen:

(Unterschrift c:chb (/ b_name col)
(setq b_name (cdr (assoc 2 (entget (car))))
(setq col (getstring "\nnumero colore: ')
(setq ntl (getstring) "(Befehl "-bedit" b_name "_chprop" "_all" "" "c" col ") "_chprop" "_all" "_bclose"
)

in rot weitere anweisungen.

zur verwendung der lispe:
- einfügen in einen texteditor
- mit .lsp erweiterung speichern
- befehl laden, wählen sie die datei --> laden
- nach befehlstyp chb

probleme mit ironie?
 
ich würde eine lippe brauchen, um nur auf die farbe des blocks klicken, der aus mehreren zeilen und schichten besteht.. es war in der vergangenheit, aber ich kann es nicht finden.
 
sie haben recht, aber mit ihm, wenn der block eine schicht es schicht 1 mit blauer farbe hat und ich will, dass rot sie nicht umwandelt, da die schicht 1 in farbe nicht durchschichtet hat!!

ich habe herausgefunden, warum es geschachtelte blöcke gibt... wie kann ich das machen?
 
ich habe die decke der anderen diskussion aktualisiert, die selbstverständlich die farbe zu verschachtelten blöcken verändert, die veränderung spiegelt sich auch allen anderen wider, die sie enthalten.
Code:
;;;cambia il colore ai blocchi nidificati
(defun c:ccb (/ cmd b_name col list_b en ed)
**** gp 02/12/2011 ***

(Setq cmd (getvar "cmdecho")
(Setvar "cmdecho" 0)
(Befehl "_undo" "_begin")
(setq b_name (cdr (assoc 2 (entget)))
(setq col (getstring "\nnumero colore: "))
(setq list_b (cons b_name list_b))
(setq b_def (tblsearch "block" b_name))
(setq en (cdr (assoc -2 b_def)))
(while)
(setq ed)
(if (= (cdr (assoc 0 ed)) "Insert")
(Prog.)
(setq b_name (cdr (assoc 2 ed)))
(setq list_b (cons b_name list_b))
)
)
(setq en)
)
(Repeat (Setq n (längeliste_b))
(setq b_name (nth (setq n (1- n)) list_b))
(Befehl "-bedit" b_name "_chprop" "_all" "" "c" col "" "_bclose")
)
(Setvar "cmdecho" cmd)
(Befehl "_undo" "_end")
(princ)
)
 
Alles, was sie aufnehmen kann:

(refun c:ccb2 (/ blöcke blockfarbe)
(vl-load-com)
(setq blöcke (fla-get-blöcke (fla-get-active document))
Block
farbe (mint "\nscegliere colore: "
)
(vlax-map-sammelung)
(fla-item blöcke)
'(lambda (elem)
(fla-put-color elem color)
)
)
(vl-cmdf "_regen")
)
 
vor der Zeit freundlich im Forum hatte mir diese Lispe erstellt, die die Farbe in die Blöcke verändert ok ist perfekt, aber ich möchte, dass die Achsen nicht zu ändern Farbe, in der Regel ich sie in grün Farbe Ich möchte, dass sie so bleiben können Sie?

;; ändern Sie die Farbe zu geschachtelten Blöcken
(defun c:ccb (/ cmd b_name col list_b en e)
- Ja.

(Setq cmd (getvar "cmdecho")
(Setvar "cmdecho" 0)
(Befehl "_undo" "_begin")
(setq b_name (cdr (assoc 2 (entget (car))))))
(setq col (getstring "\nnumero colore: ")
(setq list_b (cons b_name list_b))
(setq b_def (tblsearch "block" b_name))
(setq en (cdr -2 b_def)))
(sing)
(setq und (entget en)
(wenn (= cdr) "Insert")
(Progn)
(setq b_name (cdr (assoc 2 ed))))
(setq list_b (cons b_name list_b))
)
)
(setq en)
)
(Repeat (Setq n (Längeliste_b))
(setq b_name (nth (setq n (1-n)) list_b))
(Befehl "-bedit" b_name "_chprop" "_all" "c" mit ""_bclose "")
)
(Setvar "cmdecho" cmd)
(Befehl "_undo" "_end")
(princ)
)
 
Ich habe die Decke der anderen Diskussion aktualisiert, die selbstverständlich die Farbe zu verschachtelten Blöcken verändert, die Veränderung spiegelt sich auch allen anderen wider, die sie enthalten.
Code:
;;;cambia il colore ai blocchi nidificati
(defun c:ccb (/ cmd b_name col list_b en ed)
**** gp 02/12/2011 ***

(Setq cmd (getvar "cmdecho")
(Setvar "cmdecho" 0)
(Befehl "_undo" "_begin")
(setq b_name (cdr (assoc 2 (entget))))
(setq col (getstring "\nnumero colore: "))
(setq list_b (cons b_name list_b))
(setq b_def (tblsearch "block" b_name))
(setq en (cdr (assoc -2 b_def)))
(while)
(setq ed)
(if (= (cdr (assoc 0 ed)) "Insert")
(Prog.)
(setq b_name (cdr (assoc 2 ed)))
(setq list_b (cons b_name list_b))
)
)
(setq en)
)
(Repeat (Setq n (Längeliste_b))
(setq b_name (nth (setq n (1- n)) list_b))
(Befehl "-bedit" b_name "_chprop" "_all" "" "c" col "" "_bclose"")
)
(Setvar "cmdecho" cmd)
(Befehl "_undo" "_end")
(princ)
)
Guten Morgen, ich möchte nach Informationen über diese Lispe fragen, ich habe es auf einigen Blöcken versucht und es funktioniert richtig, aber einige Blöcke, die Attribute enthalten, die bleiben von der ursprünglichen Farbe, Sie können es ändern, so dass auch die Farbe der Attribute ändert?
 
Eigentlich ändern die Attribute die Farbe, aber Sie müssen sie synchronisieren. Sie geben nur die Attsync oder Sinus Befehl und wird die Farbe magisch erscheinen. ohne den Befehl zu tippen, erlaube ich mir, die Synchronisationszeile in den Deckel des guten gp hinzuzufügen.

(defun c:ccb (/ cmd b_name col list_b en e)
- Ja.

(Setq cmd (getvar "cmdecho")
(Setvar "cmdecho" 0)
(Befehl "_undo" "_begin")
(setq b_name (cdr (assoc 2 (entget (car)) (entsel "\nsel select the block: "))))))
(setq col (getstring "\nnumero colore: ")
(setq list_b (cons b_name list_b))
(setq b_def (tblsearch "block" b_name))
(setq en (cdr -2 b_def)))
(sing)
(setq und (entget en)
(wenn (= cdr) "Insert")
(Progn)
(setq b_name (cdr (assoc 2 ed))))
(setq list_b (cons b_name list_b))
)
)
(setq en)
)
(Repeat (Setq n (Längeliste_b))
(setq b_name (nth (setq n (1-n)) list_b))
(Befehl "-bedit" b_name "_chprop" "_all" "c" mit ""_bclose "")
)
(vl-cmdf "_attsync" "n" b_name)
(Setvar "cmdecho" cmd)
(Befehl "_undo" "_end")
(princ)
)
 
Eigentlich ändern die Attribute die Farbe, aber Sie müssen sie synchronisieren. Sie geben nur die Attsync oder Sinus Befehl und wird die Farbe magisch erscheinen. ohne den Befehl zu tippen, erlaube ich mir, die Synchronisationszeile in den Deckel des guten gp hinzuzufügen.

(defun c:ccb (/ cmd b_name col list_b en e)
- Ja.

(Setq cmd (getvar "cmdecho")
(Setvar "cmdecho" 0)
(Befehl "_undo" "_begin")
(setq b_name (cdr (assoc 2 (entget (car)) (entsel "\nsel select the block: "))))))
(setq col (getstring "\nnumero colore: ")
(setq list_b (cons b_name list_b))
(setq b_def (tblsearch "block" b_name))
(setq en (cdr -2 b_def)))
(sing)
(setq und (entget en)
(wenn (= cdr) "Insert")
(Progn)
(setq b_name (cdr (assoc 2 ed))))
(setq list_b (cons b_name list_b))
)
)
(setq en)
)
(Repeat (Setq n (Längeliste_b))
(setq b_name (nth (setq n (1-n)) list_b))
(Befehl "-bedit" b_name "_chprop" "_all" "c" mit ""_bclose "")
)
(vl-cmdf "_attsync" "n" b_name)
(Setvar "cmdecho" cmd)
(Befehl "_undo" "_end")
(princ)
)
Vielen Dank für die Hilfe, und warum ändert dieser Block nicht die Farbe nach Ihnen? ?
 

Anhänge

es ändert sich, es gab nur ein Problem, dass, wenn in der Zeichnung gab es keine Blöcke mit Attributen, es gab mir eine Fehlermeldung, auch wenn der Befehl regelmäßig beendet. Jedenfalls habe ich es gelöst.

(defunc c:ccb (/ cmd b_name col list_b en ed );
(Setq cmd (getvar "cmdecho")
(Setvar "cmdecho" 0)
(Befehl "_undo" "_begin")
(Setq-Block (Treiber "\nselect the block: ")
b_name (cdr (assoc 2 (entget block))
col (getstring "\nnumero colore: "
list_b (cons b_name list_b)
b_def (tblsearch "block" b_name)
(cdr (assoc -2 b_def))
)

(sing)
(setq und (entget en)
(wenn (= cdr) "Insert")
(Progn)
(setq b_name (cdr (assoc 2 ed))))
(setq list_b (cons b_name list_b))
)
)
(setq en)
)

(Repeat (Setq n (Längeliste_b))
(setq b_name (nth (setq n (1-n)) list_b))
(Befehl "-bedit" b_name "_chprop" "_all" "c" mit ""_bclose "")
)

(wenn (= (vla-get-hasattributes (vlax-ename->vla-object block)))
(vl-cmdf "_attsync" (b_name)
)

(Setvar "cmdecho" cmd)
(Befehl "_undo" "_end")
(princ)
)
 
alles, was Sie reduzieren können:

(defun c:ccb2 (/ Blöcke Blockfarbe)
(vl-load-com)
(setq Blöcke (vla-get-Blöcke (vla-get-activedocument))
block (vlax-ename->vla-object (car (entsel "\nselect reference block: ")
Farbe (getint "\nscegliere colore: "
)
(vlax-map-Sammlung)
(vla-item Blöcke (vla-get-name block)
'(lambda (elem)
(vla-put-color elem color)
)
)
(vl-cmdf "_regen")
)
Hallo, ich frage eine letzte Sache, können Sie den Befehl zur Synchronisation des Attributs diese Lisp eingeben?
 

Statistik des Forums

Themen
58.521
Beiträge
499.056
Mitglieder
104.110
Neuestes Mitglied
ChristianR

Zurzeit aktive Besucher

Keine Mitglieder online.
Zurück
Oben