• 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
Guard che il commando ccb2 non fa nulla di più di ccb.

(defun c:ccb2 (/block blockco colore)
(vl-load-com)
(setq Blöcke (vla-get-Blöcke (vla-get-activedocument))
blocco (vlax-ename->vla-object (Auto)))
colore (geting "\nscegliere colore: ")
)
(vlax-map-Kollektion
(vla-get-effektivename blocco)
Lambda (elem)
(vla-put-color elem colore)
)
)

(wenn (= vla-get-hasattributes blocco) :vlax-true)
(vl-cmdf "_attsync" "_n" (vla-get-effektivename blocco))
)

(vla-get-activedocument (vlax-get-acad-object) acactiveviewport)
(princ)
)
 
Guard che il commando ccb2 non fa nulla di più di ccb.

(defun c:ccb2 (/block blockco colore)
(vl-load-com)
(setq Blöcke (vla-get-Blöcke (vla-get-activedocument))
blocco (vlax-ename->vla-object (Auto)))
colore (geting "\nscegliere colore: ")
)
(vlax-map-Kollektion
(vla-get-effektivename blocco)
Lambda (elem)
(vla-put-color elem colore)
)
)

(wenn (= vla-get-hasattributes blocco) :vlax-true)
(vl-cmdf "_attsync" "_n" (vla-get-effektivename blocco))
)

(vla-get-activedocument (vlax-get-acad-object) acactiveviewport)
(princ)
)
Danke, die ccb gibt mir Ärger, ich weiß nicht warum, die ccb2 funktioniert gut statt..
Ich habe versucht, die Lisp nur mit dem Attsync Befehl zu laden, der mir den folgenden Fehler gibt:
; fehler: keine funktionsdefinition: vla-get-effektivname

und ich ändere die Farbe nicht:-(
 
penso che sia il solito (vl-load-com) da aggiungere...

(defun c:ccb (/ cmd b_name col list_b en ed blocco);** gp 02/12/2011 ***
(vl-load-com)
(Setq cmd (getvar "cmdecho")
(Setvar "cmdecho" 0)
(Befehl "_undo" "_begin")
(setq blocco (car (entsel "\nselezionare il blocco: "))
b_name (cdr (assoc 2 (entget blocco))
col (getstring "\nnumero colore: ")
list_b (cons b_name list_b)
b_def (tblsearch "block" b_name)
en (cdr)
)

(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"")
)

(if (= (vla-get-hasattributes (vlax-ename->vla-object blocco)))
(vl-cmdf "_attsync" "_n" 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")
)
Speichern Sie für alle, würde ich fragen, ob Sie diese Lispe ändern können, so dass Sie mir eine Auswahlfläche wählen lassen, anstatt einzeln eine nach einem der Blöcke wählen, um Farbe zu ändern?
 
Code:
(defun c:ccb2 (/ Blöcke blocco colore index)
(vl-load-com)
(setq Blöcke (vla-get-Blöcke (vla-get-activedocument (vlax-get-acad-object)))
grublo (ssget '((0 . "Insert")))
Farbe (getint "\nscegliere colore: ")
)

(Repeat (setq index(sslength grublo))
(setq blocco (vlax-ename->vla-object (ssname grublo (setq index(1- index))))))
(vlax-map-Kollektion
(vla-item Blöcke (vla-get-effektivename blocco))
'(lambda (elem)
(vla-put-color elem colore)
)
)

(wenn (= vla-get-hasattributes blocco) :vlax-true)
(vl-cmdf "_attsync" "_n" (vla-get-effektivename blocco))
)

)

(vla-regen (vla-get-activedocument (vlax-get-acad-object))) acactiveviewport
(princ)
)
 
Code:
(defun c:ccb2 (/ Blöcke blocco colore index)
(vl-load-com)
(setq Blöcke (vla-get-Blöcke (vla-get-activedocument (vlax-get-acad-object)))
grublo (ssget '((0 . "Insert")))
Farbe (getint "\nscegliere colore: ")
)

(Repeat (setq index(sslength grublo))
(setq blocco (vlax-ename->vla-object (ssname grublo (setq index(1- index))))))
(vlax-map-Kollektion
(vla-item Blöcke (vla-get-effektivename blocco))
'(lambda (elem)
(vla-put-color elem colore)
)
)

(wenn (= vla-get-hasattributes blocco) :vlax-true)
(vl-cmdf "_attsync" "_n" (vla-get-effektivename blocco))
)

)

(vla-regen (vla-get-activedocument (vlax-get-acad-object))) acactiveviewport
(princ)
)
Danke, was ich suchte, nur dass ich den ccb2 respektiere, gibt mir einen Fehler wie dieser:

; fehler: keine funktionsdefinition: vla-get-effektivname

und ich ändere die Farbe nicht, aber die Frage der Auswahl ist ok.
 
Willst du nicht die Farbe auf einen anonymen Block ändern? die vla-get-effektivename Funktion dient auch dazu, den Namen einem dynamischen Block zu geben, der ansonsten mit * beginnen würde. Ich habe nicht überprüft, aber es könnte das Problem bei anonymen sein.
 
Hallo, alle.
sind ein neuer Benutzer, (ca. ein Jahr geschrieben) und autocad für ca. fünf Jahre verwenden. Ich habe diese Lippe immer benutzt, aber ich möchte allen Experten in dieser Sprache eine Frage stellen.
Gibt es ein Handbuch, das erklärt, wie man eine Lispe erstellt? oder, abgesehen von den großen Autocad-Experten, sind Sie auch Programmierer?
 
Ich begrüße hier meine Bitte, dass ich Sie sehr gerne sehe:

Ist es möglich, die Farbe nur einiger im Block enthaltener Objekte zu ändern?
in meinem Unterschied von den Schnüren die Farbe der Nadeln und die Erinnerung, die ein Attribut ist, haben die Farbe, die vom Durchmesser des Eisens abhängt.
Anhang anzeigen distinta_cordoli.dwg (der Anruf wurde noch nicht in Attribut umgewandelt! )

Kannst du das tun? Vielleicht legen Sie diese Objekte auf "dablocco" Farbe, die Sie tun können, richtig? aber eine lisp-Methode?

Danke.

Den Haag
 
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)
)
Ich habe autocad 2015 für mac und dies funktioniert mich nicht, während der vorherigen ccb si.
es gibt mir diesen Fehler:
Fehler: Syntax-Fehler
kann nicht ohne vorherige Anruf (*Push-error-using-command*) von *error* aufgerufen werden.
Konvertieren (Befehl) Anrufe in (Befehls-s) wird empfohlen.

Kann mir jemand helfen?
Danke.
 

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