| |
| 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: ATT übertragen (2832 mal gelesen)
|
Dober Heinz Mitglied Technischer Zeichner
Beiträge: 1146 Registriert: 20.12.2002
|
erstellt am: 16. Mrz. 2006 13:14 <-- editieren / zitieren --> Unities abgeben:
Hallo Lispler Lese mit folgenden Code eine ATT aus. (setq BLOCKATT (cdr(assoc 1 (entget (car (nentsel "\nBlockattribut Wählen: ")))))) "200/1" jetzt erhöhe ich die zahl um eins "200/2" und jetzt will ich die Zahl in einem anderem Block(ATT) übertragen, wie mach ich das am besten. (entmod(subst(cons 1 BLOCKATT)(assoc 1 el)el)) so geht das nicht. mfg
------------------ Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 16. Mrz. 2006 13:21 <-- editieren / zitieren --> Unities abgeben: Nur für Dober Heinz
theoretisch sollte es so gehen. du musst nur noch den Block mit (entupd ..) aktualisieren. Theoretisch deshalb, weil ich (bei den Codeschnipseln) nicht prüfen kann, was in deinen Variablen wirklich drin steckt. 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 |
Dober Heinz Mitglied Technischer Zeichner
Beiträge: 1146 Registriert: 20.12.2002
|
erstellt am: 16. Mrz. 2006 13:31 <-- editieren / zitieren --> Unities abgeben:
@Holger (setq BLOCKATT (cdr(assoc 1 (entget (car (nentsel "\nBlockattribut Wählen: ")))))) (setq el(entget(car(entsel)))) (entmod(subst(cons 1 BLOCKATT)(assoc 1 el)el)) Will das ATT auf ein anderes ATT(Block) übertragen. so gehts nicht. mfg ------------------ Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 16. Mrz. 2006 13:39 <-- editieren / zitieren --> Unities abgeben: Nur für Dober Heinz
hast du mal regeneriert oder eben ein (entupd der Blockreferenz angedeihen lassen. Das Attribut ist auf diesem Weg geändert, aber die Blockreferenz hat diese Änderung noch nicht 'gefressen'. 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 |
Dober Heinz Mitglied Technischer Zeichner
Beiträge: 1146 Registriert: 20.12.2002
|
erstellt am: 16. Mrz. 2006 13:43 <-- editieren / zitieren --> Unities abgeben:
|
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 16. Mrz. 2006 14:09 <-- editieren / zitieren --> Unities abgeben: Nur für Dober Heinz
also du hast entweder nicht den ganzen code gepostet oder bei dir läuft gänzlich etwas daneben. folgender Code macht nichts anderes als deiner und läuft bei mir ohne Probleme: Errorhandler etc fehlt, ist auch nur zum testen gedachtCode: (defun c:atc (/ nTEXT zATT) (setq nTEXT (cdr(assoc 1 (entget(car(nentsel "\nQuellattribut wählen: ")))))) (setq zATT (entget(car(nentsel "\nZielattribut wählen: ")))) (entmod (subst (cons 1 nTEXT) (assoc 1 zATT) zATT ) ) (entupd (cdr(assoc 330 zATT))) (princ) )
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 |
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: 16. Mrz. 2006 14:10 <-- editieren / zitieren --> Unities abgeben: Nur für Dober Heinz
Hallo Heinz, wenn Du das 2.te Attribut auswählst, dann mußt Du auch nentsel, und nicht entsel verwenden. Code:
(defun c:test ( / ) (setq BLOCKATT (cdr(assoc 1 (entget (car (nentsel "\nBlockattribut Wählen: ")))))) (setq el(entget(car(nentsel)))) (entmod(subst(cons 1 BLOCKATT)(assoc 1 el)el)))
------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 16. Mrz. 2006 14:13 <-- editieren / zitieren --> Unities abgeben: Nur für Dober Heinz
|
Dober Heinz Mitglied Technischer Zeichner
Beiträge: 1146 Registriert: 20.12.2002
|
erstellt am: 16. Mrz. 2006 14:23 <-- editieren / zitieren --> Unities abgeben:
|
türringer Mitglied Konstrukteur
Beiträge: 36 Registriert: 26.10.2004 Windows 7 Ultimate 64bit Autodesk Produkt Design Suite 2013 CADISON 11 (64bit) NavisWorks 2013
|
erstellt am: 12. Nov. 2009 13:03 <-- editieren / zitieren --> Unities abgeben: Nur für Dober Heinz
Sorry Kollegen wenn ich diesen Beitrag nach oben hole. Kann kein LISP, jedoch ist dieser Code super. Ist es möglich diesen zu automatisieren, denn ich muß in verschiedenen Zeichungen den Wert des Attributs A nach B übetragen. B ist leider leer und daher nicht auswählbar. Da immer A nach B übetragen werden muß würde es ausreichen den Block auszuwählen. Danke Türringer [Diese Nachricht wurde von türringer am 12. Nov. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2494 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 12. Nov. 2009 16:25 <-- editieren / zitieren --> Unities abgeben: Nur für Dober Heinz
Hi, zum Thema Attributwerte übertragen gibt's hier so einiges. Guckst Du z.B.: hier und hier. Im Prinzip ist da alles enthalten, was Du zur Lösung benötigst. Müßtest Du aber wahrscheinlich im Detail noch umstricken. ------------------ Ciao, Marc [Diese Nachricht wurde von marc.scherer am 12. Nov. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
türringer Mitglied Konstrukteur
Beiträge: 36 Registriert: 26.10.2004
|
erstellt am: 13. Nov. 2009 08:09 <-- editieren / zitieren --> Unities abgeben: Nur für Dober Heinz
Hallo Marc, vielen Dank für Deine Antwort. Leider ist es mir nicht möglich aus den Codes ein funktionierendes App zusammen zu schreiben, denn wie ich schon bemerket kann ich kein Lisp. Ich Dachte das es eventuell keine große Aktions ist solch ein automatismus rein zu bringen. Ich wollte mich auf jeden Fall bedanken für die in diesem Board zu verfügung gestellen Hilfen und Codes, die mir schon in vielen Situatuationen weiter geholfen haben. Weiter so. Türringer Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 13. Nov. 2009 08:31 <-- editieren / zitieren --> Unities abgeben: Nur für Dober Heinz
Was ist denn nochmal die genaue Aufgabenstellung ? soll das für alle Referenzen des Blockes gemacht werden, oder nur für die selektierten ? wie stellst du dir den Ablauf vor ? ------------------ - 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 |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2494 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 13. Nov. 2009 08:52 <-- editieren / zitieren --> Unities abgeben: Nur für Dober Heinz
Hi Türringer, hast Du Dich denn mit den Möglichkeiten des VORHANDENEN Codes bzw. der Hauptfunktionen auseinandergesetzt? Vielleicht machen die ja bereits im wesentlichen das, was Du genau möchtest? Wenn Du jedoch darauf setzt das Dir jemand GENAU das strickt was Du willst, müßtest Du Dein Anliegen schon mal deutlich präzisieren... ------------------ Ciao, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
türringer Mitglied Konstrukteur
Beiträge: 36 Registriert: 26.10.2004
|
erstellt am: 13. Nov. 2009 08:57 <-- editieren / zitieren --> Unities abgeben: Nur für Dober Heinz
Hallo CADmium, die Aufgabe des Tool soll ein innerhalb eines Blocks Attributwerte von Attribut A nach Attribut B zu übertragen. Ablauf etwas so: 1. Block auswählen 2. nach Blockwahl werden automatisch die Werte von A nach B, C nach D, E nach F, G nach H übertragen. 3. Ende Da ich dies leider bei ca. 100 Zeichnungen durchführen muß (in jeder Zeichung ist der Block einmal enthalten) ist der obrige Code schon sehr hilfreich, jedoch bei so vielen Zeichnungen sehr aufwendig und das Zielattribut muß etwas enthalten, da es sonst nicht als Ziel anwählbar ist. Türringer Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 13. Nov. 2009 09:02 <-- editieren / zitieren --> Unities abgeben: Nur für Dober Heinz
der Block heißt auch immer gleich ? also sollte es so eine Funktion sein, deren Aufruf so aussehen könnte :
(ATT-TRANSMIT "BLOCKNAME"(("A" "B")("C" "D")("E" "F")...)) da würde dann ein Auswahlsatz der gefundenen Blockreferenzen von BLOCK "BLOCKNAME" erstellt und an denen soweit wie möglich die Attribute übertragen.. das ganze dann noch in ein Script und die 100 Zeichnungen sind ruckzug abgearbeitet... ? ------------------ - 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 |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2494 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 13. Nov. 2009 09:23 <-- editieren / zitieren --> Unities abgeben: Nur für Dober Heinz
Zitat: Original erstellt von CADmium: da würde dann ein Auswahlsatz der gefundenen Blockreferenzen von BLOCK "BLOCKNAME" erstellt und an denen soweit wie möglich die Attribute übertragen.. das ganze dann noch in ein Script und die 100 Zeichnungen sind ruckzug abgearbeitet... ?
Höre ich da schon den Taschenrechner klappern wieviel Kohle das spart und ab wann sich das lohnen würde jemanden das kostenpflichtig proggen zu lassen? ;-) Recht so! @türringer: Sind die Blocknamen wirklich immer unterschiedlich? Sind die Attributnamen immer unterschiedlich? Oder ist es eigentlich immer der gleiche Block nur sollen die Attributwerte neu befüllt werden? Woher kommen die Quelldaten mit denen der Block befüllt werden soll? Ist es wirklich eine ÜBERTRAGEN von Attributwerten von einem auf den anderen Block? Oder eher ein Befüllen mit Vorgabewerten? ------------------ Ciao, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
türringer Mitglied Konstrukteur
Beiträge: 36 Registriert: 26.10.2004
|
erstellt am: 13. Nov. 2009 09:29 <-- editieren / zitieren --> Unities abgeben: Nur für Dober Heinz
Hallo CADmium, leider heißt der Block nicht immer gleich, daher ist eine manuelle Auswahl des Blocks kein Problem. Lediglich das automatische übertragen der Attributwerte währe super. Der Block kommt auch in jeder Zeichung nur einmal vor. Das Script für alle Zeichnunge ist auch nicht notwendig, da in den Zeichnungen noch Ergänzungen gemacht werden. Danke Türringer Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 13. Nov. 2009 09:30 <-- editieren / zitieren --> Unities abgeben: Nur für Dober Heinz
Zitat: Original erstellt von marc.scherer: Höre ich da schon den Taschenrechner klappern wieviel Kohle das spart und ab wann sich das lohnen würde jemanden das kostenpflichtig proggen zu lassen? ;-) Recht so!
Nö, nicht ganz .. eigentlich folge ich bisher bloß der Aussage meiner Signatur ... aber prinzipiell hast du schon recht .. eine Anerkennung der Arbeit außerhalb der Ü's ist auch eine nicht zu verachtende Motivation.
------------------ - 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 |
türringer Mitglied Konstrukteur
Beiträge: 36 Registriert: 26.10.2004
|
erstellt am: 14. Nov. 2009 22:45 <-- editieren / zitieren --> Unities abgeben: Nur für Dober Heinz
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 15. Nov. 2009 10:51 <-- editieren / zitieren --> Unities abgeben: Nur für Dober Heinz
naja .. Tschüß dann .... aber vielleicht braucht es ein anderer .. bei dir war das ja wohl doch nicht so brennend ( deinen Letzten Post mit den Infos hatte ich noch nicht gelesen... ) (defun ATT-TRANSMIT(ATTTRANSMITLIST / BLOCK OBJEKTDATEN QUELLDATEN ZIELDATEN) (if(and(=(type ATTTRANSMITLIST) 'LIST) (setq ATTTRANSMITLIST(vl-remove-if 'null (mapcar '(lambda(X) (if (and(=(type(car X))'STR)(type(cadr X))'STR) (list (car X) (cadr X)) ) ) ATTTRANSMITLIST ) ) ) (or(setq BLOCK (car(entsel "\nBlockreferenz wählen:"))) (prompt "/nNichts gewählt") ) (setq OBJEKTDATEN (entget BLOCK)) (or(=(cdr (assoc 0 OBJEKTDATEN)) "INSERT") (prompt "/nKeine Blockreferenz gewählt") ) (or(assoc 66 OBJEKTDATEN) (prompt "/nBlockreferenz hat keine Attribute") ) ) (progn (while (/= (cdr (assoc 0 OBJEKTDATEN)) "SEQEND") (setq OBJEKTDATEN (entget (entnext (cdr (assoc -1 OBJEKTDATEN))))) (if(=(cdr (assoc 0 OBJEKTDATEN))"ATTRIB") (setq ATTLIST(cons (list (strcase (cdr(assoc 2 OBJEKTDATEN))) OBJEKTDATEN)ATTLIST)) ) ) (mapcar '(lambda(X / QUELL ZIEL) (and(setq QUELL (cadr(assoc (car X) ATTLIST))) (setq ZIEL (cadr(assoc (cadr X) ATTLIST))) (entmod(subst(assoc 1 QUELL) (assoc 1 ZIEL) ZIEL ) ) ) ) ATTTRANSMITLIST ) ) ) ) ein Aufruf (ATT-TRANSMIT '(("A" "B")("C" "D") ("E" "F"))) überträgt dann Inhalt von Attribut "A" auf Attribut "B" Inhalt von Attribut "C" auf Attribut "D" usw. ------------------ - 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 |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2494 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 15. Nov. 2009 15:50 <-- editieren / zitieren --> Unities abgeben: Nur für Dober Heinz
Zitat: Original erstellt von türringer: Hallo,ich danke für die bisher geleistete Hilfe und klinke mich hier nun aus. Wenn ich mal die Enticklung eines neues CAD-Systems plane komme ich eventuell wieder auf Euch zu. Türringer
Ohne Worte... ------------------ Ciao, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
türringer Mitglied Konstrukteur
Beiträge: 36 Registriert: 26.10.2004
|
erstellt am: 19. Nov. 2009 10:07 <-- editieren / zitieren --> Unities abgeben: Nur für Dober Heinz
Hallo Marc und CADmium, vielen Dank für Eure, Hilfe. Ich hatte bereits in meinem ersten Post angemerkt das ich kein LISP kann. Daher war für mich nicht klar das der "umbau" des obrigen Code eine größer Angelegenheit wird. Ich dachte, da der Code soweit ja gut funktioniert muß man lediglich die Attribute fest einstellen welche ausgetauscht werden sollen. Fertig. Nun wurde ich eine bessene belehrt, das der Code offenbar komplett neugeschrieben werden muß. Wenn Ihr mir diesbezüglich einen Hinweis gegeben hättet, das der Code für die Zielfunktion so nicht verwendet werden kann verstehe sogar ich dies. Es tut mir leid das CADmium hier seine wertvolle Zeit geopfert hat. Ich hoffe Ihr seid beide nicht sauer. Jedoch ist es für einen unwissenden, wie mich, nicht überschaubar welcher Aufwand dahinter liegt. Entschuldigung nochmals. Türringer [Diese Nachricht wurde von türringer am 19. Nov. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2494 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 19. Nov. 2009 10:51 <-- editieren / zitieren --> Unities abgeben: Nur für Dober Heinz
Hi türringer, Entschuldigung meinerseits angenommen. Aber Du hast den Kern der Sache immer noch nicht verstanden. WAHRSCHEINLICH ist der verfügbare Code sehr wohl geeignet Dein Problem zu lösen (eventuell mit kleineren Anpassungen). Wir haben aber immer noch kein scharfes Bild von dem was Du GENAU tun willst. Unsere gezielten Fragen hast Du nur unvollständig, unpräzise oder mißverständlich beantwortet. Um aber eine Funktion zu schaffen die genau das tut was Du willst, brauchen wir unmißverständliche Angaben und Deine Mitarbeit. ------------------ Ciao, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
türringer Mitglied Konstrukteur
Beiträge: 36 Registriert: 26.10.2004
|
erstellt am: 19. Nov. 2009 12:30 <-- editieren / zitieren --> Unities abgeben: Nur für Dober Heinz
Hallo Marc, der Code von CADmium führt genau das aus was das Ziel war. Offenbar waren meine Angaben ausreichend. Ich wüßte leider auch nicht was an Info's nach gefehlt hätten. Danke nochmals an dieser Stelle. Türringer Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 19. Nov. 2009 12:33 <-- editieren / zitieren --> Unities abgeben: Nur für Dober Heinz
Zitat: Original erstellt von türringer: Hallo Marc,der Code von CADmium führt genau das aus was das Ziel war. Offenbar waren meine Angaben ausreichend. Ich wüßte leider auch nicht was an Info's nach gefehlt hätten. Danke nochmals an dieser Stelle. Türringer
na ein wenig Glaskugelreiben war schon noch, aber mit der Erfahrung weiß man meist, wo es hingehen soll ... und , bezugnehmend auf deinen Post davor , ich hab meine Zeit nicht geopfert, sondern sie dir geschenkt
------------------ - 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 |