Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  farbänderung bein körpermodellierung

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:   farbänderung bein körpermodellierung (269 mal gelesen)
bimbelhuber
Mitglied
technischer zeichner

Sehen Sie sich das Profil von bimbelhuber an!   Senden Sie eine Private Message an bimbelhuber  Schreiben Sie einen Gästebucheintrag für bimbelhuber

Beiträge: 7
Registriert: 08.01.2020

erstellt am: 24. Jan. 2020 10:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Servus zusammen,
folgendes Problem: ich erstelle 2 volumenkörper mit einer festgelegten farbe. nach dem abzug von körper 2 von körper 1
hat das Resultat nicht die festgelegte farbe sondern "bylayer". hier mein bisheriger code:

(defun c:tor ()
(setq LayAlt (getvar "CLAYER")) ;1 bisherigen layer merken
(setvar "CLAYER" "0") ;2 auf gewünschten layer ("0") umschalten
(setq FarbAlt (getvar "cecolor")) ;3 bisherige farbe merken
(setvar "cecolor" 7) ;4 auf wunschfarbe umschalten

(setq P3 (list 100 100 0)) ;5 einfügepunkt (bks-ursprung) festlegen
(setq breit 350)(setq hoch 200) ;6 breite und höhe festlegen

(command "bks" "u" p3) ;7 ursprung bks verschieben
(setq P0 (list 0 0 0)) ;8 bezugspunkt P0 für alle späteren eingaben

(command "_box" P0 "L" 1 (+ breit 7.5 7.5) (- hoch 5)) ;9 körper 1 zeichnen
(setq blende (entlast)) ;10 elementnamen körper 1 (blende) merken

(command "_box" P0 "L" 1 breit (- hoch 20)) ;11 körper 2 zeichnen
(setq V00 (entlast)) ;12 elementnamen körper 2 (abzugskörper) merken

(setq P10 (list 0 7.5 0)) ;13 verschiebepunkt für körper 2 (abzugskörper)
(command "_move" V00 "" P0 P10) ;14 körper 2 (abzugskörper) verschieben

;(command "-subtract" blende "" V00 "") ;15 (abzugskörper) von (blende) abziehen
;(setq blende (entlast)) ;16 namen des resultierenden elemnts  merken

(setvar "CLAYER" LayAlt) ;17 auf bisherigen layer umschalten
(setvar "cecolor" FarbAlt) ;18 auf bisherige farbe umschalten
(command "bks" "w") ;19 auf bks-welt unschalten
)

wenn ich bis auf punkt 15 und 16 den code durchlaufen lasse befinden sich die beiden
körper auf dem layer 0 und haben die Farbe Weiß (7). Wenn ich jetzt punkt 15 und 16 mit
aufnehme liegt der resultierende körper zwar auf layer 0 aber seine farbe ist bylayer
und nicht die eingestellte farbe weiß (7)

welchen Denkfehler habe ich oder lässt sich ein element das in farbe "bylayer" vorhan-
den ist auf eine wunschfarbe ändern?

DANKE EUCH

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 19657
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 24. Jan. 2020 11:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für bimbelhuber 10 Unities + Antwort hilfreich

Ich kann mich irren, aber hast du in die falsche Copy&Paste Kiste gegriffen?
Wenn ich mich nicht irre, dann läuft dieser Code auf keinem AutoCAD.
Schau noch mal nach und wenn der Code funktioniert dann erweitert das auch die Runder der potentiellen Helfer :-)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 19657
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 24. Jan. 2020 11:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für bimbelhuber 10 Unities + Antwort hilfreich

Auch wenn der Code SO m.M.n. nicht lauffähig ist:
Wenn ich "lese" was da gemacht wird wenn die Auskommentierung ignoriert wird und der restliche Code auch lauffähig wäre,
dann denke ich: Du hast dieses Problem überhaupt nich tmit diesem Code!
Wenn du aktuell über ein Problem stolperst mit den Farben, dann liegt das an deinem Test -> der Code hingegen
würde funktionieren(wenn lauffähig) wie gewünscht.

Beim DIFFERENZieren wird das neue Objekt wie beim normalen erstellen 'per Hand' gewohnt
mit den aktuellen Eigenschaften erstellt. Beim herumtesten hast du die Farbe ggf. geändert,
in deinem Lisp würde aber die Farbe7 aktuelle sein (und nicht ByLayer), also wie gewünscht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bimbelhuber
Mitglied
technischer zeichner

Sehen Sie sich das Profil von bimbelhuber an!   Senden Sie eine Private Message an bimbelhuber  Schreiben Sie einen Gästebucheintrag für bimbelhuber

Beiträge: 7
Registriert: 08.01.2020

erstellt am: 25. Jan. 2020 11:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

sorry habe vergessen dass ich mit progecad arbeite und nicht mit AutoCAD. bei mir läuft das ganze soweit gut, bis auf die Sache mit der farbe. aber jetzt ein anderer Ansatz.

ich habe eine Linie auf dem layer 0 gezeichnet, farbe bylayer. wenn ich nachfolgenden code drüberlaufen lasse erhalte ich die
entsprechenden elementdaten

(defun C:elementdaten ( )
(setq ELEM (entlast))
(setq ELEM_DAT (entget ELEM))
(setq ZAHLER 0)
(textpage)
(princ "\nentget des letzten Elements:")
(repeat (length ELEM_DAT)
(print (nth ZAHLER ELEM_DAT))
(setq ZAHLER (1+ ZAHLER))
)
)

somit erhalte ich folgende ausgabe
(-1 . <Entity name: 308f7d50> )
(0 . "LINE")
(5 . "9907")
(330 . <Entity name: ebe0f30> )
(100 . "AcDbEntity")
(67 . 0)
(410 . "Model")
(8 . "002_BOD")
(48 . 0.5)
(100 . "AcDbLine")
(10 679.606 1014.3892 0)
(11 1174.9678 1014.3892 0)
(210 0 0 1)13

jetzt ändere ich die farbe von bylayer auf z.b. rot. lass ich
jetzt wieder die elementdaten anzeigen gibt es einen zusätzlichen
listeneintrag (62 . 1) welcher die farbe angibt. jetzt ändere ich
mit dem nachfolgenden code die farbe von 1 rot auf 2 gelb.

(setq elem_dat (entget (entlast)))
(setq elem_dat (subst (cons 62 2)(assoc 62 elem_dat) elem_dat))
(entmod elem_dat)

läuft einwandfrei. wenn ich die Linie wieder auf die farbe
bylayer ändere läuft das ganze nicht mehr. grund ist wohl
dass es den eintrag 62 nicht gibt. daher die frage wie ich
die elementliste um den 62ger eintrag ergänzen kann. dann
wäre mein bisheriges Problem gelöst, ich könnte einfach
nach dem erstellen eines objekts einfach die gewünschte
farbe nachträglich änder.

danke euch
thomas

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 19657
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 25. Jan. 2020 14:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für bimbelhuber 10 Unities + Antwort hilfreich

Dann ergänze bitte deine Systemangaben um die betrexfende Software und darüber hinaus
dennoch immer dazu schreiben das es um Progecad geht.

Säufz.

Lisp: Eine Liste kann man ergänzen mit CONS oder APPEND
als Beispiel.

Also prüf mit assoc ob der 62er vorhanden ist,
falls ja - SUBST, falls nicht CONS

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bimbelhuber
Mitglied
technischer zeichner

Sehen Sie sich das Profil von bimbelhuber an!   Senden Sie eine Private Message an bimbelhuber  Schreiben Sie einen Gästebucheintrag für bimbelhuber

Beiträge: 7
Registriert: 08.01.2020

erstellt am: 26. Jan. 2020 11:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

hallo cadffm

dank dir für deine Nachricht, aber irgendwie mach ich was
gehörig falsch. Systemvoraussetzung autolisp progecad
ich habe eine Zeichnung in der nur eine Linie existiert
und zwar in der farbe vonlayer. mit

  (setq elem_dat (entget (entlast)))

erhalte ich die elementdaten dieser Linie, diese hat kei-
nen Eintrag für die Farbe (keine 62ger liste), also muss
ich einen solchen eintrag in die elementdatenliste hinzu-
fügen. ich dachte es geht mit:

  (setq elem_dat (append elem_dat (cons 62 1)))

es kommt die Fehlermeldung "Fehlerhafte Liste"

was mache ich falsch?
Sorry für meine anfängerfragen... thomas

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 19657
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 26. Jan. 2020 13:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für bimbelhuber 10 Unities + Antwort hilfreich

Schau wie append funktioniert, schau wie cons  funktioniert,
dann wird es schon klappen.

So sollte es sein, aber keine Ahnung ob man es in ProgeCAD richtig nachgeklöppelt hat.

(IF (assoc 62 elem_dat)
  (entmod (subst (cons 62 Farbnummer) (assoc 62 elem_dat) elem_dat))
(entmod (cons (cons 62 Farbnummer)elem_dat))
)

Oder (append elem_dat (list (cons 62 Farbnummer))

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 19657
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 26. Jan. 2020 13:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für bimbelhuber 10 Unities + Antwort hilfreich

"Sorry für meine anfängerfragen... "

Das ist schon ok, aber hier sind wir im Autodesk AutoLISP Forum,
wenn du dann über ProgeCAD Besonderheiten stolperst ist es nicht verwunderlich.
Bei Befehlssteuerung(command) erst recht.

Ich sitze nicht am CAD, aus dem effeff würde ich meinen das deine Aussage oben (dein append/cons Versuch) für Autodeskprodukte nicht zutreffen würde.

Die erzeugte Liste würde zwar auch in Acad nichts taugen, aber eine Fehlermeldung von cons oder append sehe ich hier nicht.
(Der Fehler würde es bei entmod/entmake) kommen.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bimbelhuber
Mitglied
technischer zeichner

Sehen Sie sich das Profil von bimbelhuber an!   Senden Sie eine Private Message an bimbelhuber  Schreiben Sie einen Gästebucheintrag für bimbelhuber

Beiträge: 7
Registriert: 08.01.2020

erstellt am: 28. Jan. 2020 10:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Servus cadffm

hast mir super toll geholfen, folgender code funktioniert
einwandfrei außer bei volumenkörpern. DANKE

(setq elem_dat (entget (entlast)))
(if (assoc 62 elem_dat)
(entmod (subst (cons 62 farbnummer) (assoc 62 elem_dat) elem_dat))
(entmod (append elem_dat (list (cons 62 farbnummer))))
)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2020 CAD.de | Impressum | Datenschutz