Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Blockattribute bearbeiten

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:  Blockattribute bearbeiten (3040 mal gelesen)
cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

Windows 10
64bit system
Autocad Civil3d 2020 ENGLISH
Visual Studio 2019
OpenDCL.Runtime.9<P>

erstellt am: 24. Aug. 2011 14: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


convertt2f.jpg

 
Hi!

Ich habe Blöcke, deren Attribut mit einem Textfield versehen sind, das gekoppelt mit der Z-Position unterschiedliche Attributwerte enthält.
Am Block selbst sieht man, das das Attribut grau hinterlegt ist (Textfield). Jetzt möchte ich gern alle Blöcke, die mit einem Textfield versehen sind in einfache Texte umformen. Das geht in dem ich einzeln mit attedit oder eattedit auf den Block klicke und dann convert field to text drücke. Gibt es diese Auflösfunktion auch in dem ich alle Blöcke mit einem Mal wähle ?

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

Meldin
Mitglied



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

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 24. Aug. 2011 21: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 cadplayer 10 Unities + Antwort hilfreich

Hi,
mit Bordmitteln wohl nicht aber da du ja hier im LISP Forum schreibst besteht durchaus die Möglichkeit das zu Programmieren.
Du brauchst nur den Text einmal Tauschen, in etwa so: X-Wert des Attributs in "blablabla" tauschen und anschließend wieder in X-Wert.
Geht wunderbar in Lisp sowie ActiveX.

------------------
Gruß Wolfgang

Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden. 

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 25. Aug. 2011 08:46    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

wie kommen ich an die Attribute ran, wenn die in einer Unterliste stehen ?

(
    (-1 . <Entity name: 7ffff77fe00> )
    (0 . "INSERT")
    (330 . <Entity name: 7ffff7449f0> )
    (5 . "3C7F0")
    (100 . "AcDbEntity")
    (67 . 0)
    (410 . "Model")
    (8 . "0")
    (100 . "AcDbBlockReference")
    (66 . 1)
    (2 . "PLUSHÖJD")
    (10 -81.5273 82.0875 0.0)
    (41 . 1.0)
    (42 . 1.0)
    (43 . 1.0)
    (50 . 0.0)
    (70 . 0)
    (71 . 0)
    (44 . 0.0)
    (45 . 0.0)
    (210 0.0 0.0 1.0)
  )

  (
    (-1 . <Entity name: 7ffff77fe20> )
    (0 . "ATTRIB")
    (330 . <Entity name: 7ffff77fe00> )
    (5 . "3C7F2")
    (100 . "AcDbEntity")
    (67 . 0)
    (410 . "Model")
    (8 . "0")
    (62 . 0)
    (100 . "AcDbText")
    (10 -81.2257 81.8432 0.0)
    (40 . 0.5)
    (1 . "123")
    (50 . 0.0)
    (41 . 0.8)
    (51 . 0.0)
    (7 . "SIMPLEX8")
    (71 . 0)
    (72 . 0)
    (11 0.0 0.0 0.0)
    (210 0.0 0.0 1.0)
    (100 . "AcDbAttribute")
    (280 . 0)
    (2 . "NIVÅ")
    (70 . 8)
    (73 . 0)
    (74 . 0)
    (280 . 0)
    (-3
      (
        "AcDbBlockRepETag"
        (1070 . 1)
        (1071 . 4)
        (1005 . "0")
      )
    )
  )

  (
    (-1 . <Entity name: 7ffff77fe30> )
    (0 . "SEQEND")
    (330 . <Entity name: 7ffff77fe00> )
    (5 . "3C7F3")
    (100 . "AcDbEntity")
    (67 . 0)
    (410 . "Model")
    (8 . "0")
    (-2 . <Entity name: 7ffff77fe00> )
  )

[Diese Nachricht wurde von cadplayer am 25. Aug. 2011 editiert.]

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

Meldin
Mitglied



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

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 25. Aug. 2011 09: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 cadplayer 10 Unities + Antwort hilfreich

Hi,
ja hast es doch geschafft ans Attribut zu kommen daher verstehe ich die Frage nicht ganz.
Denn auch bei dir in den Listen, scheint es doch auch so auszusehen als ob auf das Objekt des Attributs ein entget angewendet wurde.

------------------
Gruß Wolfgang

Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden. 

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 25. Aug. 2011 09: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

Nicht ich habe es geschafft, sondern ein Tool von Lee-Mac. Leider blicke ich in dem Code nicht ganz durch. Vielleicht kann man mir weiterhelfen, wo die Abfrage für das Attribut kommt.

;;---------------------=={ Entity List }==--------------------;;
;;                                                            ;;
;;  Displays the DXF Information for an entity.              ;;
;;------------------------------------------------------------;;
;;  Author: Lee McDonnell, 2010 - www.lee-mac.com              ;;
;;                                                            ;;
;;  Copyright © 2010 by Lee McDonnell, All Rights Reserved.  ;;
;;  Contact: Lee @ lee-mac.com                                ;;
;;  Forums: Lee Mac @ TheSwamp.org, CADTutor.net, AUGI.com    ;;
;;------------------------------------------------------------;;
;;  Arguments:                                                ;;
;;  entity - the entity (ename) to query / dxf list          ;;
;;------------------------------------------------------------;;

(defun LM:EntityList ( entity / prin1x princx data xdata )
  ;; © Lee Mac 2010

  (defun prin1x ( x i ) (repeat i (princ "  ")) (prin1 x))

  (defun princx ( x i ) (repeat i (princ "  ")) (princ x))

  (cond
    (
      (or (and (eq 'ENAME (type entity)) (setq data (entget entity)))
          (and (listp entity) (setq data entity) (setq entity (cdr (assoc -1 data))))
      )

      (princ "\n\n  (\n")
      (mapcar
        (function
          (lambda ( pair ) (prin1x pair 2) (princ "\n"))
        )
        data
      )

      (if (setq xdata (assoc -3 (entget entity '("*"))))
        (progn
          (princx "(" 2) (prin1 (car xdata)) (princ "\n")

          (mapcar
            (function
              (lambda ( app ) (princx "(" 3) (princ "\n")
                (mapcar
                  (function
                    (lambda ( pair ) (prin1x pair 4) (princ "\n"))
                  )
                  app
                )
                (princx ")" 3) (princ "\n")
              )
            )
            (cdr xdata)
          )

          (princx ")" 2) (princ "\n")
        )
      )

      (princ "  )")

      (if (= 1 (cdr (assoc 66 data)))
        (progn
          (while
            (not
              (eq "SEQEND"
                (cdr
                  (assoc 0
                    (entget
                      (setq entity
                        (entnext entity)
                      )
                    )
                  )
                )
              )
            )
            (LM:EntityList entity)
          )
          (LM:EntityList entity)
        )       
      )
    )
  )

  (textpage)
  (princ)
)

(defun c:ee  nil (LM:EntityList (car (entsel))))

(defun c:eex nil (LM:EntityList (car (nentsel))))
     

 

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

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 25. Aug. 2011 10:07    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 cadplayer 10 Unities + Antwort hilfreich

vergleiche mal die entity list von zwei Blöcken
einen mit und einen ohne Attribut

achte auf
GC 66 und "SEQEND"
und bei dem mit gc 66 mal entnext entity ansetzen und schauen was passiert
ggf in einer Schleife (while entnext....)
und die entity list anschauen wenn ein seqend auftaucht
Neue Erkenntnisse?
                   

------------------
Mfg Heiko

Elefantenjagd in Afrika
"... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..."

[Diese Nachricht wurde von Dorfy am 25. Aug. 2011 editiert.]

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

.

erstellt am: 25. Aug. 2011 10:56    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 cadplayer 10 Unities + Antwort hilfreich


FIELDATTS2ATTS.VLX.txt

 
also .. die Blockref hat Attribute .. die haben ein Xdict ..die hat ein Unterdict "ACAD_FIELD" welches das Textfeld enhält .... da mußt du dich dann durchhangeln und von "unten" löschen .....

...anbei mal so ein Teil das durch alle Atts der Zeichnung geht und hoffentlich das macht, was du letztendlich wolltest....

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 25. Aug. 2011 11:16    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

Was ist "SEQEND"

(if (setq AWS (ssget '((0 . "INSERT"))))
  (progn
    (setq I -1)
    (repeat (sslength AWS)
      (setq OBJ (ssname AWS (setq I (1+ I))))
      (princ (cdr (entget obj)))
      )
    )
  )
So bekomme ich die "oberste Liste" zu sehen:
((0 . INSERT) (330 . <Entity name: 7ffff7449f0> ) (5 . 3C97D) (100 . AcDbEntity)
(67 . 0) (410 . Model) (8 . 0) (100 . AcDbBlockReference) (66 . 1) (2 .
koordinatpunkt) (10 -77.457 79.6443 0.0) (41 . 1.0) (42 . 1.0) (43 . 1.0) (50 .
0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0))

In GC (66 . 1) liegt die Unterliste für den Attributwert (vermutlich), wie kriege ich die auf?

- wie gehe ich dann weiter vor

@CADMIUM
mit deinem Tool passiert nix nach Aufruf: FIELDATTS2ATTS

[Diese Nachricht wurde von cadplayer am 25. Aug. 2011 editiert.]

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

.

erstellt am: 25. Aug. 2011 11: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 Nur für cadplayer 10 Unities + Antwort hilfreich

nee .. GC 66 = 1 sagt .. das (normalerweise) Attribute dranhängen  an die du mit entnext ( bezüglich des Inserts ) rankommst bis entnext das SEQUEND-Objekt als ENde-Markierung zurückliefert ....

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 25. Aug. 2011 11:42    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

Mein Problem ist, wie ich mich durch die Listen hangeln soll

(list (assoc 66 (entget obj)))... zeigt mir (66 . 1)

(entnext obj)... zeigt mir <Entity name: 7ffff781860>

wie soll ich weiter mit entnext vorgehen, um an die Attribute zu kommen

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

.

erstellt am: 25. Aug. 2011 11:50    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 cadplayer 10 Unities + Antwort hilfreich

betreffs GC 66 , entnext usw. ...
ich verweis mal auf einen alten Code von mir http://ww3.cad.de/foren/ubb/Forum54/HTML/007800.shtml#000001

...und das das Tool nichts macht, liegt IMHO nicht am Tool .. bei mir werden Attribute mit Feldern in normale Attribute gewandelt ....

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

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 25. Aug. 2011 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 cadplayer 10 Unities + Antwort hilfreich

 
Zitat:
Original erstellt von cadplayer:

wie soll ich weiter mit entnext vorgehen, um an die Attribute zu kommen


na du erhältst ein entity - was kann man damit machen?
löschen, verschieben, kopieren und wieder löschen  

versuch doch mal die entity liste von dem entnext entity zu erhalten (mit entget)
und schau dir diese an...
und dann die nächste ... usw ... bis gc 0 seqend kommt...

wo ist das attribut und wo ist der wert und ...

steht oben alles im code  

------------------
Mfg Heiko

Elefantenjagd in Afrika
"... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..."

[Diese Nachricht wurde von Dorfy am 25. Aug. 2011 editiert.]

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 25. Aug. 2011 13: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

Sorry dein Tool geht natürlich einwandfrei.

Wenn ich es richtig verstehe wird mir jetzt die Unterliste von ( 66 . 1 ) angezeigt

(((-1 . <Entity name: 7ffff7420b0> ) (0 . "SEQEND") (330 . <Entity name:
7ffff742080> ) (5 . "3C7F3") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 .
"0") (-2 . <Entity name: 7ffff742080> )))

Da ist aber von einem Attributeintrag nichts zu finden.
Die GC´s die hier auftauchen, worunter sind die beschrieben in der Entw.hilfe

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

Meldin
Mitglied



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

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 25. Aug. 2011 13:33    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 cadplayer 10 Unities + Antwort hilfreich

Also wenn du einen Insert (Objekt) hast z.B. (setq MyBlockObj(car (entsel "\nBlock wählen : ")))
fragst du hat er Attribs also assoc 66 entget MyBlockObj
wenn ja solltest du MyBlockObj entnexen (entget(setq MyBlockObj(entnext MyBlockObj))) und das dann so lange bis bei assoc 0 "SEQEND" erscheint.
Und dann hast du es vom Start von entnext bis zu seqend liegen dann deine Daten.

Zudem habe ich mal aus meiner Sicht die Möglichkeiten zusammengefasst die mir ad-hoc eingefallen sind von einem Attribut das Schriftfeld zu entfernen. 

Code:
;;;AX ;;;
(setq ss-attrib (vlax-ename->vla-object (car (nentsel "\nAttribut wählen : "))))
(setq txtstr (vla-get-Textstring ss-attrib))
(vla-put-Textstring ss-attrib "")
(vla-put-Textstring ss-attrib txtstr)
;;;TEST;;;
(dictsearch (cdr (assoc 360 (entget(vlax-vla-object->ename  ss-attrib))))"ACAD_FIELD")

;;;LISP ;;;
(setq ss-attrib(car (nentsel "\nAttribut wählen : ")))
(entmod(subst(cons 1 "")(setq text(assoc 1 (entget ss-attrib)))(entget ss-attrib)))
(entmod(subst text (assoc 1 (entget ss-attrib))(entget ss-attrib)))
;;;TEST;;;
(dictsearch (cdr (assoc 360 (entget ss-attrib))) "ACAD_FIELD")

;;;Dic ;;;
(setq ss-attrib(car (nentsel "\nAttribut wählen : ")))
(dictremove (cdr (assoc 360 (entget ss-attrib))) "ACAD_FIELD")
(entupd ss-attrib)
;;;TEST;;;
(dictsearch (cdr (assoc 360 (entget ss-attrib))) "ACAD_FIELD")

;;; ;;;


------------------
Gruß Wolfgang 

Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden.  

[Diese Nachricht wurde von Meldin am 25. Aug. 2011 editiert.]

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 25. Aug. 2011 15: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

Ohne hier Bewertungen abzugeben, die Version
(setq ss-attrib(car (nentsel "\nAttribut wählen : ")))
(entmod(subst(cons 1 "")(setq text(assoc 1 (entget ss-attrib)))(entget ss-attrib)))
(entmod(subst text (assoc 1 (entget ss-attrib))(entget ss-attrib)))

ist mir schnell einleuchtend gewesen - ... ich hätte fast selbst drauf kommen können. Warum manchmal so umständlich denken.
Grosses Dankeschön an aller Helfer.

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

Meldin
Mitglied



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

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 26. Aug. 2011 08:13    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 cadplayer 10 Unities + Antwort hilfreich

Und wie klappt jetzt das auslesen deiner Attribute?

------------------
Gruß Wolfgang

Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden. 

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

.

erstellt am: 26. Aug. 2011 08:20    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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadplayer:
die Version
(setq ss-attrib(car (nentsel "\nAttribut wählen : ")))
(entmod(subst(cons 1 "")(setq text(assoc 1 (entget ss-attrib)))(entget ss-attrib)))
(entmod(subst text (assoc 1 (entget ss-attrib))(entget ss-attrib)))

ist mir schnell einleuchtend gewesen - ... ich hätte fast selbst drauf kommen können. Warum manchmal so umständlich denken.


naja ... das Schriftfeld existiert dann aber immer noch.. SCHRIFTFELDAKT findet auch was ... und _attsync sollte man auch nicht aufrufen ... nicht immer sind die "einfachen" Lösungen für die Datenbank die besten. ( Ist wie mit dem Maßtext im Maßblock überschreiben)
Aber  warum du intelligente Daten wieder rücksetzten willst haste ja auch noch nicht verraten ... ???

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 26. Aug. 2011 10:35    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

@ Meldin: klar funktioniert das - mich wundert das ich mit (assoc 1(entget (car (nentsel)))) "einfach" auf GC 1 zugreifen

Mit (ssname (sslength (ssget '((0 . "INSERT")))) 0) - wie muss es weitergehen das ich auf GC 1 zugreifen kann, Ich steig nicht richtig durch
-mit ssget erhalte ich den Auswahlsatz
-mit ssslength die Anzahl der Objekte in AWS
-mit ssname  liefert mir den Elementnamen, bei Eingabe 0 kommt aber eine Fehlermeldnung, die ich nicht verstehe
; error: bad argument type: lselsetp 1

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

Meldin
Mitglied



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

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 26. Aug. 2011 10: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 cadplayer 10 Unities + Antwort hilfreich

Also bei mir hat 
Zitat:
SCHRIFTFELDAKT findet auch was ... und _attsync sollte man auch nicht aufrufen

keinen Erfolg etwas vom Schriftfeld wieder herzustellen. Sonst erkläre mal bitte kurz wie du vorgegangen bis.

------------------
Gruß Wolfgang

Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden. 

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

.

erstellt am: 26. Aug. 2011 10:41    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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadplayer:
-mit ssname  liefert mir den Elementnamen, bei Eingabe 0 kommt aber eine Fehlermeldnung, die ich nicht verstehe
; error: bad argument type: lselsetp 1

hast du dir den Code aus meinen Link ein paar Einträge weiter oben schon mal angesehen ?

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

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

.

erstellt am: 26. Aug. 2011 10:44    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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Meldin:
...
keinen Erfolg etwas vom Schriftfeld wieder herzustellen. Sonst erkläre mal bitte kurz wie du vorgegangen bis.


beim einfachen entmoden des GC 1  bleibt das Schriftfeld ja im Xdict .. SCHRIFTFELDAKT sagt dann auch 1 gefunden  ... sichtbare Änderungen sind dann aber nicht .... attsync stellt bei mir das feld aber wieder her , da ja die Attdef bisher nicht auch hinsichtlich des Feldes geändert wurde.

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

Meldin
Mitglied



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

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 26. Aug. 2011 12:56    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 cadplayer 10 Unities + Antwort hilfreich

Hi,
du musst beachten
(entsel) ist nicht (nentsel)
bei einer Auswahl nimmt entsel immer das Objekt zu dem es gehört also klickst du auf ein Attribut erhälst du den Block und musst dich dann durchhangeln bis zu den Attributen. Nentsel dagegen liefert dir die Daten von dem Objekt das du tatsächlich angeklickt hast. Klickst du auf ein Attribut erhälst du auch die Daten von einem.

Zu deinem Vorhaben:
Du solltest glube ich anfangs kleinere steps machen und schauen was das jeweilige Ergebnis ist.
Also zerlegen wir mal deine Zeile und schauen wo es hakt.
Bei (ssget '((0 . "INSERT"))) sollte so etwas herauskommen <Selection set: 6a4>
Schreiben wir es mal in eine Variable also (setq SS-Auswahl (ssget '((0 . "INSERT"))))
Als nächstes möchtest du wissen wie viele Objekte in deiner Auswahl sind.
Hier verwendest du sslength  so aber diesmal nehmen wie die Variablen mit an board.
(setq SS-AnzahlElemente (sslength SS-Auswahl))
Und als Ergebniss gibt es eine Ganzzahl also so viele Blöcke sie auch ausgewählt wurden in etwa sowas 17 oder 295 oder gar  1
Jetzt möchtest du den Objektnamen des ersten Elementes herausbekommen.
Daher jetzt (ssname SS-AnzahlElemente 0)  <-- und die Null für das erste Element.
Und jetzt sollte es in deinem Kopf einen Knall geben !!! Eine wahr Explosion !

Falls nicht hier die Erklärung:
Du schreist : ELEMENT NUMMER 1 WIE IST DEIN NAME !!!  Antwort von SS-AnzahlElemente wie Name ich 17!
Quatsch 17 ist kein Name sondern eine Zahl. Boom!

Also denke ich ist der Fehler klar.
Du fragst den falschen nach dem Namen.
Eher sollte es so aussehen.
(setq Endlich-ein-Name (ssname SS-Auswahl 0))
und dann
(entget Endlich-ein-Name)

Hoffe es ist jetzt etwas klarer dadurch geworden.

------------------
Gruß Wolfgang

Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden. 

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 26. Aug. 2011 14:20    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

@Meldin
Danke für deine Mühe - das muss ich erstmal sacken lassen ... freitag nach 1

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

Meldin
Mitglied



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

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 26. Aug. 2011 20:44    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 cadplayer 10 Unities + Antwort hilfreich

@Cadmium
Nee tut mir Leid da klappt etwas nicht so wie es sollte!
Mein Muster, ein Block mit einem Attribut wo das Attribut als Schriftfeld zusammen mit dem Block erstellt wird.
Wenn ich an dem unveränderten Block mit Schriftfeld SCHRIFTFELDAKT aus führe sagt er mir:
2 Schriftfeld(er) gefunden.
2 Schriftfeld(er) aktualisiert.
wobei ja eigentlich nur eins da ist, könnte mit nur erklären das ein an der Blockdef hängt und eins am Attribut.
Wenn dann

(setq att1(car (nentsel "\nAttribut wählen : ")))
(entmod (subst(cons 1 "")(setq text(assoc 1 (entget att1)))(entget att1)))
(entmod (subst text (assoc 1 (entget att1))(entget att1)))

ausgeführt wird verschwindet das Schriftfeld. Und SCHRIFTFELDAKT findet statt 2 nur noch 1.

Also, SCHRIFTFELDAKT findet nur etwas wenn das Attribut als Schriftfeld zusammen mit dem Block erstellt wurde. Wenn in einem erstellten Block ein Attribut als Schriftfeld erstellt wird findet SCHRIFTFELDAKT nichts.

Und _attsync hat bei mir in 2009  /64 und 2012 /64 keine Chance das Schriftfeld  wieder herzustellen. Oder wie war da deine Vorgehensweise?

Und wenn ich zudem noch dein Tool  mit dem Oben beschriebenen Block mit FIELDATTS2ATTS von oben teste sagt mir SCHRIFTFELDAKT
Objekte wählen: 1 gefunden
Objekte wählen:
1 Schriftfeld(er) gefunden.
1 Schriftfeld(er) aktualisiert.
Also da passt etwas nicht oder bin ich voll auf dem Holzweg?

Ja gerade nochmals getestet und in deinem Tool wohl auch nicht berücksichtigt.
Es sollte wohl noch einmal remove aufs tblobj ausgeführt werden um sauber zu sein!

------------------
Gruß Wolfgang  

Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden.   

[Diese Nachricht wurde von Meldin am 26. Aug. 2011 editiert.]

[Diese Nachricht wurde von Meldin am 26. Aug. 2011 editiert.]

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 29. Aug. 2011 13:48    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

nach Aufruf:

(setq AWS (ssget '((0 . "INSERT"))))
    (progn
      (setq I -1)   
      (repeat (sslength AWS)
        (setq OBJ (entget (ssname AWS (setq I (1+ I)))))
        (if (assoc 66 OBJ)                 
          (while (/= (cdr (assoc 0 OBJ)) "SEQEND")
            (setq OBJ (entget (entnext (cdr (assoc -1 OBJ)))))


kommt:
(((-1 . <Entity name: 7ffff71ce30> ) (0 . "SEQEND") (330 . <Entity name:
7ffff71ce00> ) (5 . "3C7F3") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 .
"0") (-2 . <Entity name: 7ffff71ce00> )))

wenn ich die Zeilen einzeln aufrufe kommt:
((-1 . <Entity name: 7ffff71ce20> ) (0 . "ATTRIB") (330 . <Entity name:
7ffff71ce00> ) (5 . "3C7F2") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 .
"0") (62 . 0) (100 . "AcDbText") (10 -77.8798 75.1307 0.0) (40 . 0.5) (1 .
"00,00") (50 . 0.0) (41 . 0.8) (51 . 0.0) (7 . "SIMPLEX8") (71 . 0) (72 . 0)
(11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 . "AcDbAttribute") (280 . 0) (2 .
"NIVÅ") (70 . 8) (73 . 0) (74 . 0) (280 . 0))

Das durchblättern in dem Block funktioniert also nicht richtig mit meiner Schleife, weiss einer warum?

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

.

erstellt am: 29. Aug. 2011 14: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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Meldin:
Ja gerade nochmals getestet und in deinem Tool wohl auch nicht berücksichtigt.

Nö ... war auch bloß n Schnellschuß  ....

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

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

.

erstellt am: 29. Aug. 2011 14:29    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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadplayer:
nach Aufruf:

(setq AWS (ssget '((0 . "INSERT"))))
    (progn
      (setq I -1)    
      (repeat (sslength AWS)
        (setq OBJ (entget (ssname AWS (setq I (1+ I)))))
        (if (assoc 66 OBJ)                  
          (while (/= (cdr (assoc 0 OBJ)) "SEQEND")
            (setq OBJ (entget (entnext (cdr (assoc -1 OBJ)))))


kommt:
(((-1 . <Entity name: 7ffff71ce30> ) (0 . "SEQEND") (330 . <Entity name:
7ffff71ce00> ) (5 . "3C7F3") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 .
"0") (-2 . <Entity name: 7ffff71ce00> )))

wenn ich die Zeilen einzeln aufrufe kommt:
((-1 . <Entity name: 7ffff71ce20> ) (0 . "ATTRIB") (330 . <Entity name:
7ffff71ce00> ) (5 . "3C7F2") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 .
"0") (62 . 0) (100 . "AcDbText") (10 -77.8798 75.1307 0.0) (40 . 0.5) (1 .
"00,00") (50 . 0.0) (41 . 0.8) (51 . 0.0) (7 . "SIMPLEX8") (71 . 0) (72 . 0)
(11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 . "AcDbAttribute") (280 . 0) (2 .
"NIVÅ") (70 . 8) (73 . 0) (74 . 0) (280 . 0))

Das durchblättern in dem Block funktioniert also nicht richtig mit meiner Schleife, weiss einer warum?



nach der While-schleife wird der letzte Ausdruck zurückgegeben  und das ist der mit dem SEQUEND , was zum Abbruch der Schleife führte...

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

Meldin
Mitglied



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

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 29. Aug. 2011 14:47    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 cadplayer 10 Unities + Antwort hilfreich

Doch funktioniert schon,
wenn du es einzel machst greifst du erst auf das 1 Objekt des Blocks zu dann das 2, 3, usw. bis Seqend
dann kommt der nächste Block und wieder der nächste und und und
Aber da die schleifen unheimlich schnell durchlaufen bist du da schnell am ende,
und da dir immer nur das Ergebnis der letzten Klammer () zurückgegeben wir ist ein Seqend schon richtig.
hier ein Beispiel:
(+ 5 (+ 2 3))
das Ergebnis aus (+ 2 3) wirst du nie sehen da immer nur das Ergebnis der äußere Klammmer zurückgegeben wir also 10.
Aber gib einfach mal die Ergebnisse mit Princ auf dem Bildschirm aus dann siehst du ja welche Daten durchlaufen werden.
Hier das Beispiel.
Code:
(setq AWS (ssget '((0 . "INSERT"))))
(progn
  (setq I -1)
  (repeat (sslength AWS)
    (setq OBJ (entget (ssname AWS (setq I (1+ I)))))
    (if (assoc 66 OBJ)
      (while (/= (cdr (assoc 0 OBJ)) "SEQEND")
(setq OBJ (entget (entnext (cdr (assoc -1 OBJ)))))
(princ Obj)
(terpri)
      )
    )
  )
)

------------------
Gruß Wolfgang

Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden. 

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 29. Aug. 2011 16: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

jep

Ich habe die Zeilen wie folgt ersetzt:
(while (/= (cdr (assoc 0 OBJ)) "ATTRIB")
(setq OBJ (entget (entnext (cdr (assoc -1 OBJ)))))
(entmod (subst (cons 1 "") (assoc 1 OBJ)) OBJ))); hier möchte ich gern die Liste (1 . "xx") löschen
))))

Aber das will nicht funktionieren

too few arguments; was heisst das für mich?

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

.

erstellt am: 29. Aug. 2011 20:53    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 cadplayer 10 Unities + Antwort hilfreich

  
Zitat:
Original erstellt von cadplayer:
jep

Ich habe die Zeilen wie folgt ersetzt:
(while (/= (cdr (assoc 0 OBJ)) "ATTRIB")
(setq OBJ (entget (entnext (cdr (assoc -1 OBJ)))))
(entmod (subst (cons 1 "") (assoc 1 OBJ)) OBJ))); hier möchte ich gern die Liste (1 . "xx") löschen
))))

Aber das will nicht funktionieren

too few arguments; was heisst das für mich?


(while (/= (cdr (assoc 0 OBJ)) "ATTRIB")

.. da beim ersten Durchlauf das OBJ sicher ein Attrib ist, wird gleich abgebrochen ...   


und
(entmod (subst (cons 1 "") (assoc 1 OBJ)) OBJ)))  hier bist du wohl mit den Klammern durcheinandergekommen..

(entmod
  (subst (cons 1 "")
         (assoc 1 OBJ)
         OBJ
  )
)

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 30. Aug. 2011 09: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

Komisch...

Die Funktion macht genau das was ich will jetzt, es wird nicht abgebrochen obwohl GC 0 ein "ATTRIB" ist

(setq AWS (ssget '((0 . "INSERT"))))
(progn
  (setq I -1)
  (repeat (sslength AWS)
    (setq OBJ (entget (ssname AWS (setq I (1+ I)))))
    (if (assoc 66 OBJ)
      (while (/= (cdr (assoc 0 OBJ)) "ATTRIB")
(setq OBJ (entget (entnext (cdr (assoc -1 OBJ))))
      DATA (assoc 1 OBJ))
(entmod (subst (cons 1 "") (assoc 1 OBJ) OBJ))
(entmod (subst DATA (assoc 1 OBJ) OBJ))
)
      )
    )
  )

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

.

erstellt am: 30. Aug. 2011 09: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 Nur für cadplayer 10 Unities + Antwort hilfreich

beim 1. Druchlauf ist OBJ noch das INSERT .. das 1. ATTRIB wird abgearbeitet ... OBJ ist jetzt ein Attrib ... und die while-Schleife wird beim 2. Durchlauf abgebrochen ...

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

Meldin
Mitglied



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

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 31. Aug. 2011 17: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 Nur für cadplayer 10 Unities + Antwort hilfreich

Ja deine Codeansätze waren auch schon mal besser :-)
Ich weis nicht ob es dir helfen wird wenn man die paar Zeilen vor sagt, denn wenn du das hier verstanden hast wird der Rest den du je an Progs schreiben wirst um so leichter für dich zu verstehen sein.

(while (/= (cdr (assoc 0 OBJ)) "ATTRIB") Hier abbrechen wenn du ein Attribut bist.

Ich dachte genau die möchtest du verändern?

------------------
Gruß Wolfgang

Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden. 

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 21. Sep. 2011 14:59    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

(setq NUM (getreal "Wert eingeben:"))
(if (setq AWS (ssget '((0 . "INSERT"))))
  (progn
      (setq I -1)
      (repeat (sslength AWS)
(setq OBJ (entget (entnext (ssname AWS(setq I (1+ I)))))))
(setq DATA (atof (cdr (assoc 1 OBJ))))
(setq ERG (+ DATA NUM))
        (setq ERG (subst (cons 1 (rtos ERG 2 2)) (assoc 1 OBJ) OBJ))
        (entmod ERG)
  )
  )

In der repeat-Schleife steht doch das die var ERG modifiziert werden soll, warum tuts das nur immer für das letzt gewählte Attribut

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

spider_dd
Mitglied



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

Beiträge: 1111
Registriert: 27.11.2003

Win 10Pro
Intel(R) Core(TM) i7-7700
NVIDIA Quadro P1000
ACAD, Civil-3D 2018

erstellt am: 21. Sep. 2011 15:12    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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadplayer:
In der repeat-Schleife steht doch das die var ERG modifiziert werden soll, warum tuts das nur immer für das letzt gewählte Attribut

Weil Du in der (setq OBJ ... zeile Deine repeat-Schleife schon wieder schließt (Klammern zählen!). Alles ab (setq DATA ... wird dann genau 1-mal abgearbeitet, mit dem letzten Objekt.

gruß
Thomas

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 21. Sep. 2011 15:23    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

Logisch... Danke für die schnelle Antwort

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