| |
| 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, eine Pressemitteilung
|
Autor
|
Thema: Einfügen von Blöcken - übernahme der Default-Werte (994 mal gelesen)
|
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1217 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 30. Mai. 2013 15:30 <-- editieren / zitieren --> Unities abgeben:
Moin ! wenn man Blöcke einfügen will, dann kann man mit der Systemvariablen ATTREQ steuern, ob die Attribute abgefragt werden sollen. Wird der Wert 0 gesetzt, dann bleiben diese erhalten. Was aber nun, wenn man nur einen Teil der Attribute ändern will? Setzt man ATTREQ=1, dann werden die Attribute abgefragt und müssen über den Command übergeben werden. Wird für eines der Attribute "" (Leereingabe) übergeben, dann ist damit der Vorgabewert hinüber. Nun stelle ich mir die Frage ob es eine Alternative gibt als erst den Block mit allen Default-Attributwerte einzufügen und dann mit entmod etc. das betreffende Attribut zu manipulieren. Hat einer von Euch eine Idee wie es auch einfacher gehen könnte? Gruß Jan :-) ------------------ jan :-) 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: 30. Mai. 2013 16:20 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
|
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1217 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 30. Mai. 2013 16:32 <-- editieren / zitieren --> Unities abgeben:
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 30. Mai. 2013 16:39 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
|
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: 30. Mai. 2013 16:56 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
Hallo Jan, wenn Dir ENTMOD zu kompliziert ist dann nimmst Du VLA..., der Weg ist aber prinzipiell derselbe. Folgender Code Zeigt Dir wie es ungefähr funktioniert, jetzt mußt Du nur noch eine Schleife einbauen, mit allen AttributsNamen, die geändert werden sollen (und natürlich Fehler abfangen usw.) Code:
(defun GetVlaAttsFromBlock(vla-obj / A) (if (=(vla-get-hasattributes vla-obj):vlax-true) (mapcar '(lambda(A)(list(strcase(vlax-get A 'TagString))A)) (vlax-safearray->list (vlax-variant-value(vla-getattributes vla-obj)))) )) (defun c:test ( / ATTLIST ATTNAME BLOCK NEUERWERT) (setq block (car (entsel '"\nBlock mit Att's wählen:"))) (setq AttList (GetVlaAttsFromBlock (vlax-ename->vla-object block))) (setq AttName (getstring "\nAttName zum ändern:")) (setq NeuerWert (getstring"\nNeuer Wert:"))
(vlax-put (cadr(assoc (strcase AttName)AttList))'TextString NeuerWert) (vlax-invoke (cadr(assoc (strcase AttName)AttList)) 'Update))
Die wichtige Zeile ist (setq AttList...), dort wird die Liste mit VLA-Attributen erstellt, in jedem Listenwert vorangestellt der Attributsname, damit Du mit ASSOC auf diese Liste zugreifen kannst. ------------------ viele Grüße Jörn http://www.bosse-engineering.com Koordinatenausgabe Youtube Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1217 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 31. Mai. 2013 09:41 <-- editieren / zitieren --> Unities abgeben:
|
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1217 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 31. Mai. 2013 10:37 <-- editieren / zitieren --> Unities abgeben:
|