Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Ein Attributt ä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:  Ein Attributt ändern (1107 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: 07. Okt. 2007 11:26    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

Habe ein Block mit Attributen möchte gerne ein Attribut ändern.
Kann mir jemand sagen was ich falsch mache?

Variable: a105txt1 = "Mein Text"
Attributnamen: "RAUM-NUMMER"

(defun C:TEST()
(setq OBJEKTDATEN (entget (ENTLAST)))
(while (/= (cdr (assoc 0 (entget OBJEKTDATEN))) "SEQEND")
(setq OBJEKTDATEN (entnext (cdr (assoc -1 OBJEKTDATEN))))
(if (and (= (cdr (assoc 0 (ENTGET OBJEKTDATEN))) "ATTRIB")
(= (strcase (cdr(assoc 2 (ENTGET OBJEKTDATEN))) "RAUM-NUMMER"))
)
(entmod (subst (cons 1 a105txt1)(assoc 1 OBJEKTDATEN) OBJEKTDATEN))
)
)
)

Gruss Nano

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 07. Okt. 2007 19:34    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,
vergleiche einfach mal Deinen Code mit dem folgenden:
Code:

(defun C:TEST  ()
  (setq OBJEKTDATEN (ENTLAST))
  (while
    (/=
      (cdr (assoc 0 (entget (setq OBJEKTDATEN (entnext OBJEKTDATEN)))))
      "SEQEND")
    (if
      (and (= (cdr (assoc 0 (ENTGET OBJEKTDATEN))) "ATTRIB")
    (= (strcase (cdr (assoc 2 (ENTGET OBJEKTDATEN)))) "RAUM-NUMMER"))
(progn (entmod (subst (cons 1 a105txt1)
      (assoc 1 (ENTGET OBJEKTDATEN))
      (ENTGET OBJEKTDATEN)))
      (entupd (entlast))))))

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

Jörn

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 08. Okt. 2007 12:06    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

ich habe mir dazu 2 kleine Basisroutinen erstellt.

der Aufruf schaut dann einfach so aus

(00_SchreibeAttribute (entlast) (list (cons "RAUM-NUMMER" a105txt1)))

;
; schreibt in einen Block ein Attribut
; -> ename der Elementname des INSERTS
, -> daten Attribute in form einer Assocliste
;
(defun 00_SchreibeAttribute (ename daten / edate name ename0)
  (setq ename0 ename)
  (while (and (setq ename (entnext ename))
      (setq edate (entget ename))
      (= (cdr (assoc 0 edate)) "ATTRIB")
)
        (setq name (cdr (assoc 2 edate)))
        (if (and (assoc name daten)(cdr (assoc name daten)))  (entmod (subst (cons 1 (cdr (assoc name daten))) (assoc 1 edate) edate)))
  )
  (entupd ename0)
)
;
; gibt alle Attribute eines Blockes als Assoc liste zurück
, -> ename der Elementname des INSERTS
;
(defun 00_LeseAttribute (ename / edate daten)
  (while (and (setq ename (entnext ename))
      (setq edate (entget ename))
      (= (cdr (assoc 0 edate)) "ATTRIB")
)
        (setq daten (cons (cons (cdr (assoc 2 edate)) (cdr (assoc 1 edate))) daten))
  )
  daten
)

------------------

Ing. Anton Fuchs
WWW.FFZELL.AT.TC

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

Dober Heinz
Mitglied
Technischer Zeichner


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

Beiträge: 1143
Registriert: 20.12.2002

erstellt am: 08. Okt. 2007 12: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

Hallo joern bosse

Da hat sich ein Fehler eingeschlichen
(progn (entmod (subst (cons 1 "a105txt1")

------------------
Heinz 

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 08. Okt. 2007 12:40    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

Zitat:
Original erstellt von Dober Heinz:
Hallo joern bosse

Da hat sich ein Fehler eingeschlichen
(progn (entmod (subst (cons 1 "a105txt1")



Sehe ich aber nicht so
a105txt1 ist eine Variable (sieghe Urpsrungsposting) , die den gewünschten Text ("Mein Text") enthält !

Also ists so richtig, wies war !
(progn (entmod (subst (cons 1 a105txt1) .....

------------------

Ing. Anton Fuchs
WWW.FFZELL.AT.TC

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

Dober Heinz
Mitglied
Technischer Zeichner


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

Beiträge: 1143
Registriert: 20.12.2002

erstellt am: 08. Okt. 2007 15:25    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 Fuchsi

Ja das Stimmt,habe ich übersehn, wenn ich es so teste ohne Variable dann bekomme ich aber einen Fehlermelung.
Befehl: test
; Fehler: Fehlerhafte DXF-Gruppe: (1)

------------------
Heinz 

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