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

Ändern Sie Farbeigenschaften für alle Einheiten

  • Ersteller Ersteller gianluigiloffreda
  • Erstellt am Erstellt am

gianluigiloffreda

Guest
hallo alle,

tut mir leid, ich bin neu in diesem forum und ich hatte gehofft, dass mir jemand helfen könnte.
ich wollte wissen, ob sie in lisp ein programm schreiben können, das die folgenden einfachen operationen tun könnte:

anhang ich öffne eine generische datei mit hunderten von schichten verschiedener farbe, wesen mit bylayer farbe und nicht.

2. ich starte das programm und automatisch die gleiche datei ausgabe mit allen entitäten sowohl einfach als auch blöcke, die blöcke und jede art von entität, mit als farbe eigenschaft die farbe bylayer.

vielen dank im voraus

 
sie können ein skript erstellen, das dieses verfahren für alle dwg durchführt (wenn es viele gibt):

- öffnen sie den dwg
- caprop -> alle - farbe -> dalayer
- impdalay befehl -> alle
- rettet
- raus.

natürlich mit der richtigen syntax in reaktion auf die anfragen der einzelnen befehle.



wenn sie es auf einem einzigen dwg tun müssen, sind es nur zwei befehle....
 
leider bin ich neu in der lisp-sprache und lese "meine lisp" für jetzt gelang es mir, die folgenden zu schreiben, aber "obviously" funktioniert nicht (synthese-fehler)

und vor allem frage ich mich, wie man die farbe bylayer auch an die inneren körper an blöcke oder geschachtelte blöcke anwendet.
vielen dank




(defun c:colorbylayer)
(setq group (ssget "x"))

(befehl "_change" gruppe "_pr" "_c" "_bylayer"")

)

(prompt "eingeladenen colorbylayer befehl ")
 
natürlich habe ich es gelesen. .

und ich schuf das

(defun c:colorbylayer)

(befehl "caprop" "t" "c" "" "dalayer"")

(prompt "geladener befehl colorbylayer2")


aber mit noch weniger ergebnissen (fehlerliste in eingabe)
ich versuche es immer noch, aber am anfang... es ist nicht einfach:)
 
nachweis così:
HTML:
(defun c:colorbylayer (/ gruppo)
(setq gruppo (ssget "x"))
(Befehl "_change" gruppo "" "_pr" "_c" "_bylayer"")
(Befehl "_setbylayer" "_all" "" "_y" "_y")
)
(prompt "\ncaricato comando colorbylayer ")
(princ)
 
großartig... es funktioniert!
und ist "fast" komplett. .
hinterlässt mich nur die chancen, die leider von ihren einstellungen bleiben.
ich nehme an, dass es einen anderen befehl gibt, der auch auf die einstellungen der richtigen quotenarten eingreift?
 
so sollte es mit allem arbeiten.
HTML:
(defun c:cbl (/ e_dim cont nb name_dim col_ent tdef en ed)
(Befehl "_setbylayer" "_all" "_y" "_y")
(setq e_dim (ssget "_x"((0. "Dimension"))))))))
(setq cont 0)
(Repeat)
(setq nb (cdr (entget (name e_dim cont))))
(setq name_dim (cdr (car)))))
(setq col_ent nil)
(setq tdef (tblsearch "block" nb))
(eingestellt in (cdr (assoc -2 tdef)))
(while in
(setq ed)
(Fälle (setq col_ent) (assoc 62 ed)
(Progn)
(Unterposition 62 256) (assoc 62 ed)
(entmod ed)
)
)
(eingestellt in)
(setq col_ent nil)
)
(setq cont (1+ cont))
(entupd name_dim)
)
)
(prompt "\ncaricato comando cbl (colorbylayer) ")
(princ)
 
vielen dank.
jetzt ruhiger werde ich versuchen, andere zu schaffen.
in jedem fall danke ich ihnen für die unterstützung, es funktioniert perfekt.
 
..... jetzt ruhiger werde ich versuchen, andere zu schaffen.
in jedem fall danke für die unterstützung, funktionell perfekt.
es ist nicht wahr, wir vergessen, die _setbylayer befehlseinstellungen einzustellen, mit standardwerten werden auf dalayer auch linie, dicke und material aller objekte eingestellt.

weil das nicht passiert, sehen sie die optionen der setbylayermode variabel, ich denke, 97 kann gut gehen, ich setze die änderung in der ersten zeile.

HTML:
(defun c:cbl (/ e_dim cont nb name_dim col_ent tdef en ed)
(setvar "setbylayermode" 97)
(Befehl "_setbylayer" "_all" "" "_y" "_y")
(setq e_dim (ssget "_x" ((0. "Dimension"))))
(setq cont 0)
(Repeat)
(setq nb (cdr (entget (ssname e_dim cont))
(setq name_dim (cdr (treiber)))
(setq col_ent nil)
(setq tdef (tblsearch "block" nb))
(setq en (cdr (assoc -2 tdef)))
(while)
(setq ed)
(Fälle (setq col_ent) (assoc 62 ed)
(Prog.)
(Fortsetzung)
(entmod ed)
)
)
(setq en)
(setq col_ent nil)
)
(setq cont (1+ cont))
(entupd name_dim)
)
)
(prompt "\ncaricato comando cbl (colorbylayer) ")
(princ)
 
hallo.

ja, ich habe die eigenschaften des setbylayermode befehls überprüft und (wieder) sie haben arson.
97 ist in ordnung, auch wenn ich zugegegebe, kenne ich das grundstück nicht gut.
wie auch immer, vielen dank.
 
hallo.
ich versuchte den lisp befehl in mehreren fällen, jetzt hält es linientyp, dicke usw., aber in einigen fällen gibt es mir einen fehler:

iselsetp

ich lese herum und es scheint, dass es einen befehl gibt, der eine auswahl erwartet und stattdessen ist die auswahl nichts, nur dass ich nicht verstehen kann, was es sein kann.
eigentlich scheint der befehl zu tun, was es sollte, aber lesen sie "error" von einem kleinen ärger.
wissen sie, was das sein könnte?
 
die lispe berichtet, dass es keine elemente gefunden hat, in ihrem fall, weil sie auf einem dwg ohne quoten betrieben, aber immer noch seine arbeit.
jetzt wäre es gut.
HTML:
(defun c:cbl (/ e_dim cont nb name_dim col_ent tdef en ed)
(Setbylayermode 97)
(Befehl "_setbylayer" "_all" "_y" "_y")
(setq e_dim (ssget "_x"((0. "Dimension"))))))))
(falls e_dim)
(Progn)
(setq cont 0)
(Repeat)
(setq nb (cdr (entget (name e_dim cont))))
(setq name_dim (cdr (car)))))
(setq col_ent nil)
(setq tdef (tblsearch "block" nb))
(eingestellt in (cdr (assoc -2 tdef)))
(while in
(setq ed)
(Fälle (setq col_ent) (assoc 62 ed)
(Progn)
(Unterposition 62 256) (assoc 62 ed)
(entmod ed)
)
)
(eingestellt in)
(setq col_ent nil)
)
(setq cont (1+ cont))
(entupd name_dim)
)
)
)
)
(prompt "\ncaricato comando cbl (colorbylayer) ")
(princ)
 
hi, gp.
ich wollte fragen, ob der deckel dieses beitrags auch in meinem fall tun kann. falls positiv (ich hoffe) ich möchte wissen, was ich ändern soll.
mein problem ist im wesentlichen:
ich habe eine karte mit ladungen von blöcken, die ich zur farbe 186,186,186 bringen möchte.
jetzt mache ich es manuell, und ich bin wie,
der block ist auf der schicht, die mich (z.b. straßen) mit farbe 186,186,186 interessiert, ich öffne den editor der blöcke und die schicht des inhalts ist 0. ich wähle den inhalt und füge die farbe 186,186,186 zu. ich schließe den editor und das ergebnis ist, was ich interessierte.
ich hoffe, ich habe mich verstanden.
ich versuchte die lippe, wie es ist, indem ich einen block auf der schicht, auf die ich die farbe veränderte. gibt mir diesen fehler: einstellung der autocad-variable abgelehnt: "setbylayermode" 97
danke.
 
hi, gp.
dank der antwort: das ist der grund für den fehler. ich habe die version von 2007, weil ich unter w2k bin.
ich konnte lösen, indem ich die gewünschte farbe manuell den schichten zuordnete, so dass selbst die zu diesen schichten gehörenden objekte automatisch verändert wurden.
dank dem reiz, eine neue lösung zu suchen.
grüße
 

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