|  |  | 
|  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | 
|  |  | 
|  | PNY wird von NVIDIA zum Händler des Jahres gewählt - zum dritten Mal in Folge, eine Pressemitteilung 
 | 
| Autor | Thema:  Attribute in Blöcken ändern (1749 mal gelesen) | 
 | palupp Mitglied
 Dipl. Ing.
 
  
 
      Beiträge: 11Registriert: 05.04.2006
 |    erstellt am: 05. Apr. 2006 12:08  <-- editieren / zitieren -->    Unities abgeben:            
  Hallo Lisp-Experten, folgende Situation: in meinen Plan habe ich mehrere Blöcke mit jeweils 5 hinterlegten Attributen. Diese Attribute liegen alle auf dem gleichen Layer. Aufgabe:die Attribute innerhalb der Blöcke müssen separaten Layern zugewiesen werden.
 1.Kann man die Layerzugehörigkeit nachträglich ändern?2.Kann man sich die Layerzugehörigkeit der Attribute anzeigen lassen, ohne den Block aufzulössen?
 3.Welche Möglichkeit gibt es, nicht jeden Block manuell einzel zu bearbeiten ?
 Vielen Dank für eure HilfeMfG
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | CADmium Moderator
 Maschinenbaukonstrukteur
 
         
 
  
 
      Beiträge: 13533Registriert: 30.11.2003
 . |    erstellt am: 05. Apr. 2006 12:15  <-- editieren / zitieren -->    Unities abgeben:           Nur für palupp   | 
                        | palupp Mitglied
 Dipl. Ing.
 
  
 
      Beiträge: 11Registriert: 05.04.2006
 |    erstellt am: 05. Apr. 2006 13:13  <-- editieren / zitieren -->    Unities abgeben:            | 
                        | CADmium Moderator
 Maschinenbaukonstrukteur
 
         
 
  
 
      Beiträge: 13533Registriert: 30.11.2003
 . |    erstellt am: 05. Apr. 2006 13:28  <-- editieren / zitieren -->    Unities abgeben:           Nur für palupp   
  na ok .. zu 2. wäre z.B. (cdr(assoc 8(entget(car(nentsel))))) ne Lösung zu 1. kann mit entmod oder vla-put-layer erledigt werden zu 3. a)Blockname holen b)alle Referenzen des Blockes durchlaufen c)Test, ob Attribute vorhanden d) wenn ja, in Abhängigkeit der Attributsbezeichnung 1. anwenden hoffe das hilft dir weiter ------------------
  - 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 | 
                        | joern bosse Ehrenmitglied
 Dipl.-Ing. Vermessung und AutoLISPler
 
      
 
      Beiträge: 1781Registriert: 11.10.2004
 Window 11ACAD 2021
 CIVIL 2021
 BricsCAD ab V14
 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz   2.80 GHz
 32.0GB RAM
 NVIDIA GeForce MX450<P>
 |    erstellt am: 05. Apr. 2006 14:52  <-- editieren / zitieren -->    Unities abgeben:           Nur für palupp   
  Hallo palupp, in folgenden Code kannst Du den Layer von einzelnen Attributen (Nr angeben)oder von allen in einem Abwasch ändern, probier es mal aus, gestartet wird mit "test" Code:
 (defun c:test  ( / layer nr n m)
 
 (setq layer (getstring "\nBitte neuen Layer eingeben:")
 nr (getint "\nBitte Attributsnummer  eingeben (ENTER=alle)"))
 
 (if (and layer(setq aws (ssget (list (cons 0 "INSERT")))))
 (progn
 (setq n 0)
 (repeat (sslength aws)
 (setq att (ssname aws n)
 m 1)
 (while (=(cdr(assoc 0(entget (setq att (entnext att)))))"ATTRIB")
 (cond ((= nr m)
 (entmod (subst (cons 8 layer)(assoc 8 (entget att))(entget att))))
 ((not nr) (entmod (subst (cons 8 layer)(assoc 8 (entget att))(entget att)))))
 (setq m (+ m 1)))
 (entupd (ssname aws n))
 (setq n (+ n 1))))
 (alert "Kein Block ausgewählt oder kein Layer eingegeben."))
 )
 
 
 ------------------viele Grüße
 Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | palupp Mitglied
 Dipl. Ing.
 
  
 
      Beiträge: 11Registriert: 05.04.2006
 |    erstellt am: 05. Apr. 2006 15:59  <-- editieren / zitieren -->    Unities abgeben:            
  Hallo Jörn, da hast du ja ein prima Programm entwickelt. Funktioniert ohne Probleme! Kannst du das Programm so erweitern, dass  1. eine Abfrage kommt, wieviele Attribute pro Block bearbeitet werden (n) 2. n-mal die Abfrage zum neuen Layernamen kommt (Layername für 1.Attribut, Layername für 2. Attribut, Layername für n.Attribut) 3. Auswahl der zu bearbeiteten Blöcke kann manuell erfolgen wenns, nicht zu viel Mühe und Zeit kostet, wäre das wirklich toll.Vielen Dank
 Carsten Kretzschmar
 
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                       
 | joern bosse Ehrenmitglied
 Dipl.-Ing. Vermessung und AutoLISPler
 
      
 
      Beiträge: 1781Registriert: 11.10.2004
 Window 11ACAD 2021
 CIVIL 2021
 BricsCAD ab V14
 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz   2.80 GHz
 32.0GB RAM
 NVIDIA GeForce MX450<P>
 |    erstellt am: 05. Apr. 2006 16:27  <-- editieren / zitieren -->    Unities abgeben:           Nur für palupp   
  Hallo Carsten, im Moment nicht, da meine Zeit in der Tat mal wieder knapp wird, und weil es hier auch nicht meine Aufgabe sein kann, komplett fertigen Code zu posten. Aber vielleicht erbarmt sich ja noch einer hier im Forum. Aber, ich weiß nicht wie es mit Deinen LISP-Kentnissen steht, vielleicht solltest Du Dich anhand der Grundlage mal ein bißchen daran probieren. Wenn Du aber fertigen Programmierungen interessiert bist, kannst Du Dich direkt an mich wenden, dann aber nicht kostenlos. ------------------viele Grüße
 Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |