Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Im Block Layer der Elementen ändern.

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:  Im Block Layer der Elementen ändern. (547 mal gelesen)
Nano
Mitglied



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

Beiträge: 179
Registriert: 25.10.2004

erstellt am: 14. Feb. 2009 14:21    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

Versuche von einem gewählten Block die bestehenden Layer umzubenennen.
Die Layers sind vorhanden.

(defun C:test (name / elem layer_liste)
  (setq name (car (entsel "Wähle Block: ")))
(setq elem (tblobjname "BLOCK" name))
(while (setq elem (entnext elem))
(if (= (cdr (assoc 8 (entget elem))) "LALA")
(entmod (subst (cons 8 "LOLO" (assoc 8 (entget elem ))(entget elem ))))
      )
)
)

Gruss Nano

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

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



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

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 14. Feb. 2009 14:32    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 Nano 10 Unities + Antwort hilfreich

Aha - sollte jetzt nicht eigentlich eine Frage kommen?

------------------
Mit freundlichem Gruß

Udo Hübner
www.CAD-Huebner.de

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

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



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

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 14. Feb. 2009 15: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 Nano 10 Unities + Antwort hilfreich

Vermutlich ist es ein Ratespiel 
Ich hab 3 Fehler gefunden
einmal in c:test
einmal in (tblobjname
einmal in (cons 8

------------------
Mit freundlichem Gruß

Udo Hübner
www.CAD-Huebner.de

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

Nano
Mitglied



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

Beiträge: 179
Registriert: 25.10.2004

erstellt am: 14. Feb. 2009 15: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

Hallo Udo

Sory es ist natürlich kein Ratespiel.
Möchte gerne ein Blöck einfügen und gleichzeitig
die Layer umbenennen.

Kann du mir helfen Udo?
vieleicht mit Beispiele.

Gruss Nano

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

Nano
Mitglied



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

Beiträge: 179
Registriert: 25.10.2004

erstellt am: 14. Feb. 2009 15:54    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 Udo

Es solte eigendlich so gehen.
Glaube das ich noch in dieser Zeile ein Fehler habe.
(entmod (subst (cons 8 "L_ZUL" (assoc 8 (ENTGET ent)) (ENTGET ent))))

Hast ein Tip??

Gruss Nano

(DEFUN C:TEST()
(SETQ ta605ent (ENTSEL "\nWÄHLE: "))
(IF (SETQ ent (car ta605ent))
(WHILE (AND (SETQ ent (ENTNEXT ent))
(/= (CDR (ASSOC 0 (ENTGET ent))) "SEQEND")
)
(IF (= (CDR (ASSOC 8 (ENTGET ent))) "L_AUL")
(entmod (subst (cons 8 "L_ZUL" (assoc 8 (ENTGET ent)) (ENTGET ent))))
)
)
)
)

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 14. Feb. 2009 16:10    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 Nano 10 Unities + Antwort hilfreich

stimmt, da hast du einen Fehler drinn.

In welcher Umgebung schreibst du denn? Nimm den integrierten VLIDE, da bekommst du vergessene Klammern ganz schnell raus.

(entmod
(subst
  (cons 8 "L_ZUL")
  (assoc 8 (ENTGET ent))
  (ENTGET ent)
  )
)


Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.

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

Nano
Mitglied



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

Beiträge: 179
Registriert: 25.10.2004

erstellt am: 14. Feb. 2009 16:32    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 nochmals

Danke Udo,
im Forum habe verschiedenes gefunden und zusammengefügt.
Möchte gerne dies noch > (setq Jblock (tblnext "BLOCK" t))
mit ein Aufforderung: Block wählen.

Dies sucht alle Blöcke in der Zchn. >(setq Jblock (tblnext "BLOCK" t))

Bin froh für Tips.

Hier das Beispiel.

(DEFUN C:AL  (/ Jblock blk blkdaten)
  (setq Jblock (tblnext "BLOCK" t))
  (while Jblock
    (setq blk (tblobjname "BLOCK" (cdr (assoc 2 Jblock))))
    (while (setq blk (entnext blk))
      (if (= (cdr (assoc 8 (entget blk))) "L_AUL")
(entmod (AL1 (entget blk)))
        )
      )
    (setq Jblock (tblnext "BLOCK"))
    )
  (command "_.regen")
  )

(SETQ ta605ent (ENTSEL "\nWÄHLE: "))


(DEFUN AL1  (blkdaten / liste)
  (setq liste (subst (cons 8 "L_ZUL") (assoc 8 blkdaten) blkdaten))
  (if (assoc 62 liste)
    ;;wenn GC 62 nicht vorhanden über append anhängen
    (subst (cons 62 256) (assoc 62 liste) liste)
    (append liste (list (cons 62 256))))
  )[b][/b]

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 14. Feb. 2009 16: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 Nano 10 Unities + Antwort hilfreich

Hallo Nano,

du weißt nicht genau, was du da tust - Kann das sein?
Du solltest dir zunächst mal genau klar werden was du überhaupt vor hast, und dann auch ganz genau auf die Wortwahl achten!
Weiter oben schreibst du, dass du einen Layer umbenennen willst. Dem Code zufolge willst du allerdings der BlockREFERENZ (Objekt: INSERT) eine andere Layereigenschaft zuweisen.
Wenn das dein Ziel ist, dann ist dein Ansatz mit tblnext schon falsch, weil du damit nicht auf die BlockREFERENZEN zugreifst, sondern auf die BlockDEFINITIONEN (Objekt: BLOCK).

Du beschreibst dein Ziel damit, dass du einen Block einfügen, und der so erzeugten BlockREFERENZ einen anderen Layer zuweisen.

Was willst du tatsächlich?

Grüße Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.

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

Nano
Mitglied



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

Beiträge: 179
Registriert: 25.10.2004

erstellt am: 14. Feb. 2009 17:09    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

Also Udo ganz kurz

Ich will:
gewählter Block, die im Block behinhaltete Elementen Layer-Eigenschaften ändern.
Neuer Layer besteht schon.

Gruss Nano

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 14. Feb. 2009 17: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 Nano 10 Unities + Antwort hilfreich

Hallo nano,

mein Name ist seit langem Holger - ich gehe aber davon aus, dass du mich meinst.

So ganz klar ist es immernoch nicht, weil du nicht klar angibst, ob nun die Blockreferenz oder die Blockdefinition geändert werden soll?

Egal - für beides hast du dafür alles in den Beiträgen drinnen.

Dein Tool brauch also folgende Schritte:
1) Objekt wählen -> (entsel)
2) Name ermittelen des Blockes (cdr(assoc 2 (entget SelElem)));SelEleme ist das Element was unter 1) gewählt wurde
3) Nun die Blockdefinition durchlaufen, um die Blockelemente zu ermitteln
Die SUBRoutine dafür hast du ja schon weiter oben
(defun BLK:GetElemes (nam / #el# blkl erg ergli)
  (if (= 'STR (type nam))
    (setq #el# (tblobjname "BLOCK" nam))
    (setq #el# nam)
    )
  (while (and (setq #el# (entnext #el#))
              (/= "SEQEND" (cdr(assoc 0(entget #el#))))
              )
;in #el# hast du nun das Element des blocks, was mit (entmod(subst ...)) geändert werden kann
    (setq blkl (cons #el# blkl))
    )
  blkl
  )

Nun solltest du es aber hinbekommen .. ??

Welchen Editor nutzt du denn... im VLIDE kannst du auch debuggen, was für die Fehlersuche sehr hilfreich ist.

Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.

    

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

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



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

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 14. Feb. 2009 19:55    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 Nano 10 Unities + Antwort hilfreich

So geändert, würde der von dir gepostete (zusammenkopierte) Code funktionieren:
Code:
(defun C:test (/ name elem layer_liste)
  (setq name (cdr (assoc 2 (entget (car (entsel "Wähle Block: "))))))
  (setq elem (tblobjname "BLOCK" name))
  (setq mainelem elem)
  (while (setq elem (entnext elem))
    (if (= (strcase (cdr (assoc 8 (entget elem)))) "LALA")
      (entmod
(subst (cons 8 "LOLO") (assoc 8 (entget elem)) (entget elem))
      )
    )
  )
)

------------------
Mit freundlichem Gruß

Udo Hübner
www.CAD-Huebner.de

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