Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Gruppencode bei Polylinien einfügen

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Gruppencode bei Polylinien einfügen (1079 mal gelesen)
Christian01
Mitglied
Technischer Zeichner


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

Beiträge: 281
Registriert: 17.04.2007

erstellt am: 02. Nov. 2017 14:36    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,

ich mehrere Polylinien eine andere Farbe zuweisen.
Wenn die Polylinien nicht den Gruppencode 62 hat, schaffe ich es nicht diesen zu Erstellen.

Beispiel 1:

Code:
(setq newcolor '1)
...
(IF (assoc 62 eigliste)
  (entmod (subst (cons 62 newcolor) (assoc 62 eigliste) eigliste))
  (entmod (cons (cons 62 newcolor) eigliste))
)
...

Rückgabewert wenn der Gruppencode neu erstelle worden ist:
((62 . 1) (-1 . <Objektname: 7ed31a10>) (0 . "LWPOLYLINE") (330
. <Objektname: 7efaed08>) (5 . "472") .....

Ergebniss:
  Keine Änderung der Farbe bzw. der Gruppencode wurde nicht eingefügt.

*******************************************************************************************************
Beispiel 2:

Code:
(setq newcolor '1)
...
(IF (assoc 62 eigliste)
  (entmod (subst (cons 62 newcolor) (assoc 62 eigliste) eigliste))
  (entmod (cons eigliste (cons 62 newcolor)))
)
...

Rückgabewert:
; Fehler: Fehlerhafte DXF-Gruppe: ((-1 . <Objektname: 7ed31a10> )
(0 . "LWPOLYLINE") (330 . <Objektname: 7efaed08> ) (5 . "472")

Ergebniss:
  Keine Änderung der Farbe bzw. der Gruppencode wurde nicht eingefügt.

*******************************************************************************************************

Habe beim Beispiel 1 und 2 auch mit "entupd Elementname" die Anzeige aktualisiert, aber es funktioniert nicht.
Bei Linien und Kreiselementen funktioniert das Beispiel 1.
Beispiel 2 gibt immer einer Fehlermeldung zurück.


Habe ich irgendetwas übersehen.
Könnt Ihr mir bitte helfen.

Danke


------------------
Grüße

Christian

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

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

erstellt am: 02. Nov. 2017 14:52    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 Christian01 10 Unities + Antwort hilfreich

...denke, es kommt im 2. Fall auf die Stelle des Einfügens an ... cons stellt die Sache an den Anfang, append ans ende ...

(entmod(append(entget (car(entsel)))(list(cons 62 5)))


andere Möglichkeiten , die Farbe zu setzen

(vla-put-color (vlax-ename->vla-object(car(entsel))) 1)
oder
(setpropertyvalue (car(entsel)) "Color" 3)

da brauch es auch keine abfrage vorher ob GC62 vorhanden

------------------
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."

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

Christian01
Mitglied
Technischer Zeichner


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

Beiträge: 281
Registriert: 17.04.2007

erstellt am: 02. Nov. 2017 16:22    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

Danke CADmium,

habe es jetzt wie folgt gelöst und es funktioniert:

Code:
(setq nelement (car (entsel))
      eigliste (entget nelement)
      newcolor '1
)
...
(IF (assoc 62 eigliste)
  (entmod (subst (cons 62 newcolor) (assoc 62 eigliste) eigliste))
  (vla-put-color (vlax-ename->vla-object nelement)) newcolor)
)
...

------------------
Grüße

Christian

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: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 02. Nov. 2017 16:57    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 Christian01 10 Unities + Antwort hilfreich

Naja.
ENTWEDER du nutzt AutoLisp(entmod) und prüfst vorher ob gc62 vorhanden ist oder nicht.

JA -> SUBST  // (entmod (subst (cons 62 newcolor) (assoc 62 eigliste) eigliste))
Nein -> APPEND // (entmod(append eigliste (list(cons 62 newcolor))))


ODER

Du nimmst das activXmodell (vla-put-color (vlax-ename->vla-object nelement) newcolor),
aber dann brauchst du vorher nichts prüfen, denn das activeXobjekt hat immer die Eigenschaft "color"


Dein gepostetes "(vla-put-color (vlax-ename->vla-object nelement)) newcolor)" funktioniert zudem NICHT


Und Zahlen brauchst du nicht quoten wenn du nicht willst (setq newcolor '1) oder (setq newcolor 1) bleibt im Ergebnis gleich.
------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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)2023 CAD.de | Impressum | Datenschutz