| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: Attribut-Wert aus Block auslesen (4840 mal gelesen)
|
walter822 Mitglied
Beiträge: 2 Registriert: 25.01.2005
|
erstellt am: 05. Mrz. 2009 08:14 <-- editieren / zitieren --> Unities abgeben:
Hallo, hab folgendes Problem: Ich habe eine Zeichnung mit vielen Punkten (aus Vermessungen), die als Blöcke in der Zeichnung enthalten sind. Jeder Block hat die Attribute Punktnummer und Punkthoehe. Wie kann ich den Wert des Attributs Punkthoehe auslesen um dann mit Lisp und Anlicken von 2 Punkten mir die Höhendifferenz auszurechnen und anzeigen zu lassen ? Mfg walter822
------------------ MfG walter822 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 05. Mrz. 2009 08:21 <-- editieren / zitieren --> Unities abgeben: Nur für walter822
guck dir mal den Code in diesem Beispiel an.. da findest du IMHO alles , was du brauchst.. du kannst aber auch (cdr(assoc 1 (entget(car(nentsel "\nAttribut wählen:"))))) nehmen, wenn du eh klicken mußt. ------------------ - 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 |
Steff179 Mitglied Geomatiker
Beiträge: 266 Registriert: 09.08.2007 AutoCAD 2014
|
erstellt am: 05. Mrz. 2009 19:10 <-- editieren / zitieren --> Unities abgeben: Nur für walter822
was mache ich eigentlich falsch? die erste zeile funktioniert bestens ist ja auch kopier :s (defun c:gg () (setq DATEN (cdr(entget(car(nentsel "\nAttribut wählen:"))))) (entmod (subst (cons 1 "2222") (assoc 1 DATEN) DATEN) ) ) die idee ist es ein attributwert in einem block zu ersetzen. kann mir da bitte wer helfen? ich bin am ende.
gruss steff Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 05. Mrz. 2009 19:25 <-- editieren / zitieren --> Unities abgeben: Nur für walter822
falsch abgeschrieben? oder nicht verstanden ? probier mal (ungetestet nur in den Editor hier getippt..) (defun c:gg (/ A B) (and(setq A(nentsel "\nAttribut wählen:")) (setq A(entget A)) (setq B(assoc 1 A)) (entmod(subst (cons 1 "2222") B A)) ) ) ------------------ - 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 |
Steff179 Mitglied Geomatiker
Beiträge: 266 Registriert: 09.08.2007 AutoCAD 2014
|
erstellt am: 05. Mrz. 2009 19:51 <-- editieren / zitieren --> Unities abgeben: Nur für walter822
hey danke viel mal... hat nicht ganz funktioniert aber jetzt leuft es... (defun c:gg (/ A B) (and(setq A1(nentsel "\nAttribut wählen:")) (setq A(entget (car A1))) (setq B(assoc 1 A)) (entmod(subst (cons 1 "2222") B A)) ) (entupd (car A1)) ) besten dank und gruss steff
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Steff179 Mitglied Geomatiker
Beiträge: 266 Registriert: 09.08.2007 AutoCAD 2014
|
erstellt am: 05. Mrz. 2009 21:09 <-- editieren / zitieren --> Unities abgeben: Nur für walter822
und schon wider stehe ich am ende meines lateins.... (setq WERT 3000) (defun c:gg (/ A B) (and(setq A1(nentsel "\nAttribut wählen:")) (setq A(entget (car A1))) (setq B(assoc 1 A)) (entmod(subst (cons 1 WERT) B A)) ) (entupd (car A1)) (setq WERT (+ 1 WERT)) ) da die zeile "(entmod(subst (cons 1 WERT) B A))" als ausgabe von WERT "3000" erwartet und nicht 3000 habe ich ein problem. habe schon versucht mit (chr blabla) die vorne und hinten ranzustellen erfolglos... kann mir jemand sagen wie ich das umformatieren kann? besten dank und gruss steff
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Steff179 Mitglied Geomatiker
Beiträge: 266 Registriert: 09.08.2007 AutoCAD 2014
|
erstellt am: 05. Mrz. 2009 22:22 <-- editieren / zitieren --> Unities abgeben: Nur für walter822
|
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 05. Mrz. 2009 22:28 <-- editieren / zitieren --> Unities abgeben: Nur für walter822
Hi, naja, könntest auch itoa nehmen, wenn du hier ausschließlich mit Integers arbeitest. Wenn Reals vorkommen können (3000.0), ist rtos sicher die richtige Wahl. (In dem Zusammenhang solltest du dir ansehen, wie sich die Systemvariable DIMZIN auf rtos auswirkt! Ohne Rücksicht auf den zu konvertierenden Datentyp kannst du aber auch vl-princ-to-string oder vl-prin1-to-string verwenden. Gruß CADchup
------------------ CADmaro.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Steff179 Mitglied Geomatiker
Beiträge: 266 Registriert: 09.08.2007 AutoCAD 2014
|
erstellt am: 06. Mrz. 2009 11:06 <-- editieren / zitieren --> Unities abgeben: Nur für walter822
|
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: 06. Mrz. 2009 11:20 <-- editieren / zitieren --> Unities abgeben: Nur für walter822
|
josch76 Mitglied
Beiträge: 5 Registriert: 20.05.2009
|
erstellt am: 25. Mai. 2009 12:02 <-- editieren / zitieren --> Unities abgeben: Nur für walter822
Zitat: Original erstellt von Steff179: hey danke viel mal... hat nicht ganz funktioniert aber jetzt leuft es...(defun c:gg (/ A B) (and(setq A1(nentsel "\nAttribut wählen:")) (setq A(entget (car A1))) (setq B(assoc 1 A)) (entmod(subst (cons 1 "2222") B A)) ) (entupd (car A1)) ) besten dank und gruss steff
Und wie funktioniert das ganze automatisch? Also wenn ich den Blocknamen und den Attributsnamen kenne? Und möchte genau diesen Wert ändern? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 25. Mai. 2009 12:12 <-- editieren / zitieren --> Unities abgeben: Nur für walter822
Zitat: Original erstellt von josch76: Und wie funktioniert das ganze automatisch? Also wenn ich den Blocknamen und den Attributsnamen kenne? Und möchte genau diesen Wert ändern?
na guck dir doch das oben verlinkte Bsp von mir noch mal an .... da hast du genau so eine Funktion. -> <<nochmal>> ------------------ - 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 |
josch76 Mitglied
Beiträge: 5 Registriert: 20.05.2009
|
erstellt am: 25. Mai. 2009 12:33 <-- editieren / zitieren --> Unities abgeben: Nur für walter822
Vielen dank für den Verweis, aber irgendwo hakt es noch. Ich habe den Block "Testblock" mit dem Attribut "Benennung". Den Wert des Attributes "Benennung" möchte ich via Lisp ändern. Dein Link mit dem Datum enthält vermutlich den nötigen Code, ich bin aber scheinbar zu blöd, diesen rauszuselektieren. 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: 25. Mai. 2009 12:42 <-- editieren / zitieren --> Unities abgeben: Nur für walter822
Zitat: Original erstellt von josch76: Ich habe den Block "Testblock" mit dem Attribut "Benennung". Den Wert des Attributes "Benennung" möchte ich via Lisp ändern.
Es ist die Funktion: Code: UPDATE-Title-Block
Aufruf in Deinem Fall mit:
Code:
(UPDATE-Title-Block "TESTBLOCK" "BENENNUNG" "Mein toller, neuer Attributwert")
Ist nicht sooo schwer...------------------ Ciao, Marc [Diese Nachricht wurde von marc.scherer am 25. Mai. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tumi Mitglied Sanitärplaner
Beiträge: 11 Registriert: 29.06.2009 Use: AutoCAD LT 2009 @work AutoCAD Pro 2009 @home
|
erstellt am: 21. Jul. 2009 15:30 <-- editieren / zitieren --> Unities abgeben: Nur für walter822
Hmmm watt is denn falsch? Attribute des Texblock: (Setq Ent1 (entget (Setq EntName (ssname (Setq Handle(ssget)) 0)))) Objekte wählen: 1 gefunden ((-1 . <Objektname: 7ef063a8> ) (0 . "TEXT") (330 . <Objektname: 7ef05cf8> ) (5 . "1ED") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbText") (10 1703.55 1085.3 0.0) (40 . 125.0) (1 . "Objektname") (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "Standard") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 . "AcDbText") (73 . 0)) Weder (UPDATE-Title-Block "7ef063a8" "Objektname" (getstring t " \nEingabe Objektname: ")) noch (UPDATE-Title-Block "7ef05cf8" "Objektname" (getstring t " \nEingabe Objektname: ")) und (UPDATE-Title-Block "1ED" "Objektname" (getstring t " \nEingabe Objektname: ")) oder (UPDATE-Title-Block (entsel) "Objektname" (getstring t " \nEingabe Objektname: ")) funtzt... Raff's ned N00B bin 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: 21. Jul. 2009 15:54 <-- editieren / zitieren --> Unities abgeben: Nur für walter822
|
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: 21. Jul. 2009 16:09 <-- editieren / zitieren --> Unities abgeben: Nur für walter822
Hi Tumi, Das Du das nicht raffst kommt daher, das Du offensichtlich einen generellen Denkfehler machst. Zitat: Original erstellt von Tumi:
... Attribute des Texblock: ... ((-1 . <Objektname: 7ef063a8> ) (0 . "TEXT") (330 . <Objektname: 7ef05cf8> ) (5 . "1ED") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbText") (10 1703.55 1085.3 0.0) (40 . 125.0) (1 . "Objektname") (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "Standard") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 . "AcDbText") (73 . 0))
Was Du selektierst ist mitnichten ein "Textblock". Es ist ein einfaches Textobjekt "(0 . "TEXT")". Die entget Rückgabe einer Blockeinfügung sähe in etwas SO aus: Code: (-1 . <Entity name: -4016ba60>) (0 . "INSERT") (330 . <Entity name: -401742f8>) (5 . "1E0C") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbBlockReference") (2 . "xxx") (10 0.0 0.0 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))
------------------ Ciao, Marc [Diese Nachricht wurde von marc.scherer am 21. Jul. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 21. Jul. 2009 16:22 <-- editieren / zitieren --> Unities abgeben: Nur für walter822
Hi Tumi, naoch als Tipp (Update-Title-Block "MeinBlockName" "MeinAttributsName" "neuer Wert") Groß/Kleinschreibung im String beachten und wie Jörn schon schrieb, Blockname - nicht Objekt nicht Handle ------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." (www.uni-leipzig.de/~rotheh/elefant.htm) 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: 21. Jul. 2009 16:24 <-- editieren / zitieren --> Unities abgeben: Nur für walter822
Hi Tumi, nebenbei bemerkt ist der Code zur selektion eines Objekts recht krude... Zitat: Original erstellt von Tumi:
(Setq Ent1 (entget (Setq EntName (ssname (Setq Handle(ssget)) 0))))
Das hier tut's weitaus besser und zuverlässiger, wenn man EIN Objekt wählen möchte:
Code:
(setq ENT1 (entget (car (entsel))))
Zuverlässiger, weil das erste Objekt eine SelectionSets (ssget) ja nicht unbedingt das gewünschte sein muß wenn der User mehr als ein Objekt auswählt... ------------------ Ciao, Marc 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: 21. Jul. 2009 16:29 <-- editieren / zitieren --> Unities abgeben: Nur für walter822
Hi Dorfy, der Tip: Zitat: Original erstellt von Dorfy: Groß/Kleinschreibung im String beachten
ist schon nicht schlecht... Aber in welchem der 3 an die Funktion zu übergebenen Strings ist die Groß-/Kleinschreibung denn zu beachten? ------------------ Ciao, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 22. Jul. 2009 06:56 <-- editieren / zitieren --> Unities abgeben: Nur für walter822
Hi Marc, da du es weißt, braucht man es dir ja nicht sagen Aber wenn es nicht der Blockname ist und auch nicht der neue Wert des Attributs ... ------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." (www.uni-leipzig.de/~rotheh/elefant.htm) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tumi Mitglied Sanitärplaner
Beiträge: 11 Registriert: 29.06.2009 Use: AutoCAD LT 2009 @work AutoCAD Pro 2009 @home
|
erstellt am: 22. Jul. 2009 08:50 <-- editieren / zitieren --> Unities abgeben: Nur für walter822
Oki danke Euch werd ich dann nochmal angucken bei Gelegenheit. Doch die Arbeit ruft mal wieder... Ps:Gibts denn keine Kurzform die mir das selektieren mit der Maus ersetzt? Also ssget, entsel, ect? Damit wäre mir schon sehr viel geholfen. Hab mir schon die Finger wund gegoogelt und div. Routinen angesehen, in der Hoffnung was zu finden. Leider ohne Erfolg... Die obenstehende Routine "gg" würde supi funzen wenn ich denn dieses nentsel ersetzt kriege Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 22. Jul. 2009 09:05 <-- editieren / zitieren --> Unities abgeben: Nur für walter822
Hi Tumi, was willst du denn genau machen? außer "Hmmm watt is denn falsch?" kam ja nix ------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." (www.uni-leipzig.de/~rotheh/elefant.htm) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tumi Mitglied Sanitärplaner
Beiträge: 11 Registriert: 29.06.2009 Use: AutoCAD LT 2009 @work AutoCAD Pro 2009 @home
|
erstellt am: 22. Jul. 2009 09:22 <-- editieren / zitieren --> Unities abgeben: Nur für walter822
Zitat: ...was willst du denn genau machen? außer "Hmmm watt is denn falsch?" kam ja nix ;)
Simple Text-Änderung von Textobjekten wie dieses: (defun c:gg (/ A B) (and(setq A1 (nentsel "\nTextblock wählen:")) (setq A(entget (car A1))) (setq B(assoc 1 A)) (entmod(subst (cons 1 (getstring t " \nUser Eingabe: ")) B A))) (entupd (car A1))) Aber ohne mit der Maus das Textobjekt wählen zu müssen 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: 22. Jul. 2009 09:46 <-- editieren / zitieren --> Unities abgeben: Nur für walter822
Hi Tumi, na ja, wenn Du auf irgeneine Art dafür sorgen kannst, dass das Textobjekt eine Eigenschaft hat die in dem Bereich in dem es sich befindet einzigartig ist... Kein Problem. Anbieten würde sich: Spezieller Layer, spezielle Farbe, spezieller Linientyp, spezielle Höhe, spezieller Textstil usw. Aber lieber Tumi, was GENAU stellt denn Dein Text dar? Geht es um eine Beschriftung eines Layouts bzw. Inhalte in einem Schriftfeld/TitleBlock? Vielleicht gehst Du da ja eine Sache total falsch an und schwurbelst einfach nur an den Symptomen herum anstatt 'n vernünftiges Konzept anzuwenden. Wenn Du Antworten willst, mußt Du einfach mal die Karten auf den Tisch legen. Mit Einzelinformationen aus der Nase ziehen kommen wir nicht weiter... ------------------ Ciao, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 22. Jul. 2009 09:54 <-- editieren / zitieren --> Unities abgeben: Nur für walter822
Hi Tumi, man kann ja mit Worten sparen, muss es aber nicht... Also Textobjekte (keine Attribute)? Im Block oder in der gesamten Zeichnung (alle Texte)? Wie soll selektiert werden? Wievielt "Textobjekte" betrifft es denn? (oder ist es ne kleine Zng. mit wenig Text ???) Ohne Maus wählen --> ssget x (alles wählen) und ggf. Filtern (Filterkreterium)? Vllt. kannst du mal ein kleines Beispiel hochladen mit IST und SOLL. ------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." (www.uni-leipzig.de/~rotheh/elefant.htm) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tumi Mitglied Sanitärplaner
Beiträge: 11 Registriert: 29.06.2009 Use: AutoCAD LT 2009 @work AutoCAD Pro 2009 @home
|
erstellt am: 22. Jul. 2009 13:45 <-- editieren / zitieren --> Unities abgeben: Nur für walter822
|