| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: XDATA-Wert in Attribut übernehmen (1518 mal gelesen)
|
Attilio Mitglied Technischer Zeichner
Beiträge: 150 Registriert: 18.02.2003 ACAD2012 MEP, ACAD2015 MEP Revit 2015 Windows 7, 64 bit
|
erstellt am: 11. Mai. 2009 11:37 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, hab mal wieder ein kleines Problem : Wie kann ich Werte aus X-Daten in ein Attribut übernehmen ? Hab mal ne Beispiel-DWG beigefügt. Hier soll z.B. der Wert aus dem XDATA-Feld SKN_SHOW_STR - also "UV.1F.006" in das Attribut "STROMKREIS" übernommen werden. Gibts da schon was Fertiges ? Hab hier im Forum nichts dergleichen gefunden. Wäre über jeden Tip dankbar ! Gruss Attilio
------------------ Mit freundlichen Grüssen Attilio Sfragara Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 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: 11. Mai. 2009 12:24 <-- editieren / zitieren --> Unities abgeben: Nur für Attilio
Hallo Attilio, auf die schnelle eine Funktion, die den Wert aus dem entsprechenden Datenfeld ausliest: Code:
(defun XDaten_pit-cup (/ liste) (setq obj (car (entsel))) (nth (+ (- (length (setq liste (mapcar 'cdr (cdr (cadr (assoc -3 (entget obj '("pit-cup")))))))) (length (member "SKN_SHOW_STR" liste))) 1) liste))
Vielleicht kannst Du damit ja schon was anfangen, der Wert kann dann über Entmod in das entsprechende Attribut übertragen werden, habe jetzt dafür aber keine Zeit mehr.------------------ viele Grüße Jörn http://www.bosse-engineering.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Attilio Mitglied Technischer Zeichner
Beiträge: 150 Registriert: 18.02.2003
|
erstellt am: 12. Mai. 2009 16:33 <-- editieren / zitieren --> Unities abgeben:
Hallo Jörn, erstmal danke für die schnelle Hilfe ! Wenn ich jetzt noch in meinem LISP für Dummies-Buch etwas weiter wäre, könnte ich mir den Rest wahrscheinlich selbst schreiben... :-)
Da dies aber leider noch nicht der Fall ist, bin ich auch für den zweiten Step - eine Funktion für das Übernehmen der Daten in das Attribut zu schreiben - noch nicht fähig... Daher meine Bitte : Wenn es nicht zuviel Aufwand ist, kann mir da noch jemand ne kleine Funktion zum Übernehmen der Daten in die Attribute basteln ??? Wäre echt knorke ! Gruss Attilio ------------------ Mit freundlichen Grüssen Attilio Sfragara Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 12. Mai. 2009 19:25 <-- editieren / zitieren --> Unities abgeben: Nur für Attilio
Zitat: Daher meine Bitte : Wenn es nicht zuviel Aufwand ist, kann mir da noch jemand ne kleine Funktion zum Übernehmen der Daten in die Attribute basteln ???
Falls sich keiner findet, dann würde ich das für Dich erledigen. Aber ich arbeite aus Prinzip nicht umsonst, wäre aber mit einer Spendenquittung über 50 Euro an Amnesty zufrieden. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 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: 13. Mai. 2009 07:28 <-- editieren / zitieren --> Unities abgeben: Nur für Attilio
Hallo Attilio, na das wär doch ein Grund Dich mit LISP ein wenig mehr zu beschäftigen. Also, hier der Code auf die Schnelle: Code:
(defun c:XD2Att (/ A ATT_LISTE LISTE OBJ) (if(and(setq obj (car (entsel))) (setq att_liste (mapcar '(lambda(A) (list(cdr(assoc 2 A))A))(XD2Att:att_liste obj)))) (progn (entmod (subst (cons 1 (nth (+ (- (length (setq liste (mapcar 'cdr (cdr (cadr (assoc -3 (entget obj '("pit-cup")))))))) (length (member "SKN_SHOW_STR" liste))) 1) liste)) (assoc 1 (cadr(assoc "STROMKREIS" att_liste))) (cadr(assoc "STROMKREIS" att_liste)))) (entupd obj)))) (defun XD2Att:att_liste (obj / ATT_LISTE) (if (and (entnext obj)(=(cdr(assoc 0(entget (entnext obj))))"ATTRIB")) (while (and(setq obj (entnext obj)) (/= "SEQEND" (cdr(assoc 0(entget obj))))) (if (=(cdr(assoc 0(entget obj)))"ATTRIB") (setq att_liste (cons (entget obj)att_liste))))) (reverse att_liste))
Aufrufen mit "XD2Att", und immer schön auf Plausibilität prüfen.------------------ viele Grüße Jörn http://www.bosse-engineering.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Attilio Mitglied Technischer Zeichner
Beiträge: 150 Registriert: 18.02.2003
|
erstellt am: 13. Mai. 2009 11:52 <-- editieren / zitieren --> Unities abgeben:
Hey, vielen Dank Jörn ! Habs noch nicht getestet, aber dass du mir das zusammengeschrieben hast ist schon ein Danke schön wert ! Ja, mit LISP will ich mich seit ca. 7 Jahren beschäftigen, aber ich kriege den Einstieg einfach nicht hin. Aber ich will versuchen, es dieses Jahr mal in Angriff zu nehmen. Leider bin ich keiner, der aus einem Buch lernen kann, sonst hätte ich mir das LISP-Kochbuch schon geholt. Naja, vielleicht mal im Rahmen einer Schulung.... OK, ich meld mich dann wenn ich´s probiert habe ! Gruss Attilio
------------------ Mit freundlichen Grüssen Attilio Sfragara Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Attilio Mitglied Technischer Zeichner
Beiträge: 150 Registriert: 18.02.2003 ACAD2012 MEP, ACAD2015 MEP Revit 2015 Windows 7, 64 bit
|
erstellt am: 18. Mai. 2009 11:06 <-- editieren / zitieren --> Unities abgeben:
|
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 18. Mai. 2009 19:57 <-- editieren / zitieren --> Unities abgeben: Nur für Attilio
|