Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Formel in Attribut für alle Instanzen ändern

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
Autor Thema:   Formel in Attribut für alle Instanzen ändern (189 mal gelesen)
Osawa
Mitglied
Architekt


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

Beiträge: 58
Registriert: 11.10.2014

Fujitsu Celsius H780
Intel Core i7-8850H
32GB Ram
Quadro P3200
Windows 10 Enterprise
Revit 2018-20
AutoCAD 2019

erstellt am: 24. Jun. 2020 14:01    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


AttributFormelandern.png

 
Hallo zusammen,

ich möchte in einem Block mit Attribut die hinterlegte Formel global für alle Instanzen ändern. Dazu habe ich den Block zunächst gesprengt, dann die Formel geändert und dann den Block unter dem selben Namen neu erstellt.

Die Formel wird dann jedoch nur im neu erstellten Block geändert (bzw. beibehalten) in den bestehenden Instanzen, die ja eigentlich neu definiert werden müssten, bleibt die Formel auf dem alten Stand, auch Synchronisieren mit Battman hat da nichts ausgerichtet.

Ich möchte den im Screenshot sichtbaren Faktor 0.001 aus der Höhenkote eliminieren... Sonst steht in allen Höhenkoten bei Skalierung der Zeichnung von mm in m 0.00

Kennt wer eine Möglichkeit das zu bewerkstelligen?

------------------
Osawa

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

cadffm
Moderator
良い精神




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

Beiträge: 19898
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 24. Jun. 2020 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 Osawa 10 Unities + Antwort hilfreich

>>Dazu habe ich den Block zunächst gesprengt.
Warum bearbeitest du den Block nicht mit BEDIT oder bei nicht dynamischen Blöcken auch mal mit RefeEdit?
Weniger fehleranfällig, schneller, eleganter - der Richtige Weg.

>>dann die Formel geändert und dann den Block unter dem selben Namen neu erstellt.
Du hast die Attributdefinitionen geändert (den Vorgabewert), okay.

>>Die Formel wird dann jedoch nur im neu erstellten Block geändert (bzw. beibehalten) in den bestehenden Instanzen,
die ja eigentlich neu definiert werden müssten, bleibt die Formel auf dem alten Stand, auch Synchronisieren mit Battman hat da nichts ausgerichtet.
Synchronisieren bezieht sich auf alles Mögliche, aber nie auf den Attributwert (in 99.9% der Fälle möchte man den ja nicht verlieren)

>>Ich möchte den im Screenshot sichtbaren Faktor 0.001 aus der Höhenkote eliminieren...
BTW: Du brauchst vermutlich kein Formel-Schriftfeld, schau doch mal beim erstellen des Objekt-Schriftfeldes auf die
rechte Seite, gibt es da nicht "Zusätzliches Format" bei dem du direkt einen Faktor mit angeben kannst?
[Wir segen leider nicht welche Eigenschaft aus welchem Objekttyp du ausliest, daher vemute ich es einfach das es um Fläche oder Länge eines Objektes geht]


>>Kennt wer eine Möglichkeit das zu bewerkstelligen?
Man müßte auch mal wissen was du da witklich machst - Tip für den nächsten Fall: DWG bereitstellen!
Besonders dein Weg "Block in Ursprung" verwirrt mich da, denn dann kann man doch überhaupt kein
sinnvolles Schriftfeld erzeugen - oder mir felht es etwas an Fantasie: Eine DWG würde viel klären (wenn dort nur das Nötigste drin wäre).

Jetzt also mal mit BEDIT,, Oder? klar..

1. Entweder du ändert den Attributtag und nutzt attsync um die alten Attribute zu löschen,
   danach kannst du wieder den alten Attributnamen einsetzen (und wieder Attsync ausführen)

2. Viel einfacher, aber halt auch abhängig davon was du da treibst - was wir nicht wissen bisher:
   Du nutzt jetzt nur ein Objekt-Schriftfeld und wenn du die Attributdefinition anpasst kopierst du
   im Schriftfeld-Dialog gleich mal den Schriftfeldcode [Strg]+[C]der unten angezeigt wird im Dialog.

   Nachdem der Block gespeichert ist und man BEDIT verlassen hat, alle Blockreferenzen auswählen und
   ganz normal in der EigenschaftenPalette[Strg]+[1] den Wert des Attributes überschrieben[Strg]+[V], voila.

Sollte irgendwas nicht verstanden worden sein, wenn etwas nicht funktioniert:
Bitte selle eine übersichtliche Beispieldatei (dwg) bereit, danke.

HTH
  

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

Osawa
Mitglied
Architekt


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

Beiträge: 58
Registriert: 11.10.2014

Fujitsu Celsius H780
Intel Core i7-8850H
32GB Ram
Quadro P3200
Windows 10 Enterprise
Revit 2018-20
AutoCAD 2019

erstellt am: 24. Jun. 2020 16:34    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


hoehenkotemitFaktor.dwg

 
Hallo cadffm, vielen Dank für die ausführliche Antwort. Ich hole noch mal ein wenig aus 

Ausgangssituation sind Grundrissdateien vom Vermesser, die in Millimeter erstellt wurden. Die Höhenkoten weisen jeweils einen Z-Wert auf, der der korrekten Höhe in Millimeter entspricht. Damit die so erzeugte Höhenkote auf dem Plan den korrekten Wert in Metern anzeigt, haben die Vermesser einen Faktor 0.001 eingefügt, mit dem der Z-Wert verrechnet wird.

Da wir in der Einheit Meter zeichnen, habe ich die Vermesserdateien mit dem Faktor 0.001 skaliert, wodurch die Höhenkoten nun alle (folgerichtig) den Wert 0.00 anzeigen.

Leider kann ich den Schriftfeldausdruck:

%<\AcExpr (0.001*%<\_FldPtr 2083609183280>%) \f "%lu2%pr2">%

nicht im Ansatz nachvollziehen, und hatte gehofft, einfach den Faktor 0.001 in der Blockdefinition durch 1 ersetzen zu können, damit alle Höhenkoten auf einen Schlag wieder den korrekten Wert in Metern anzeigen.

Wenn ich den Block mit bedit bearbeite und die Formel entsprechend ändere, passiert nach speichern des Blocks gar nichts, der Faktor 0.001 ist trotzdem noch enthalten.
Ich habe schon oft mit Schriftfeldern gearbeitet und das Konzept auch eigentlich verstanden (...dachte ich irrigerweise zumindest...) aber hier komme ich einfach nicht weiter.

------------------
Osawa

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

cadffm
Moderator
良い精神




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

Beiträge: 19898
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 24. Jun. 2020 17:14    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 Osawa 10 Unities + Antwort hilfreich

Dein Problem ist eher das Konzept "Attribute" nicht zu verstehen, das Schriftfeld kommt nur on-Top.

1. BLOCK
   Ein Block enthält für gewöhnlich Geometrieobjekte (Kreis, Linie) und ist in der Datei gespeichert, wie ein Textstil oder ein Layer.
   Ein Block ist also, wie ein Textstil oder ein Layer, nicht sichtbar (außer im BEDIT oder RefEdit Modus).
   BlockREFERENZ
   Ein Objekt was den Inhalt des zugehörigen Blockes anzeigt und dabei die Anzeoge noch verändert werdne kann (X-Skalierfaktor ändern zB)

2. Attributdefinition (ATTDEF)
   Vorlage für Attribute wenn man neue Blockreferenzen des Blockes erzeugt/einfügt.
   Attribute
   "Textobjekte" welche an einer Blockreferenz hängen (weil beim erstellen der Blockreferenz eine entsprechende Attributdefinition vorhanden war)

   Die Attribute haben mit den Attributdefinitionen NICHTS zutun (auch das kleine Special "Position sperren" gehe ich mal nicht ein)

3. ATTSYNC
   Löscht, ergänzt oder ändert Attribute der Blockreferenzen hinsichtlich der AKTUELLEN Attributdefinitionen des Blockes.
   Syncronisiert wird aus Usersicht praktisch alles, AUSSER der Attributwert.

Möchte man den Vorgabe-Wert einer Attributdefinition auf die bereits vorhandenen Attribute der Blockreferenzen "übertragen",
so geht das nur in dem man die komplette Neuerstellung der Attribute erzwingt, denn beim neu erstellen wird dieser Wert ja übernommen.
Also: 1. Attribut(definition)Name ändern, 2. Attsync, 3. dann auf gewünschten Namen ändern(also den vorherigen wieder), wieder ATTSYNC ausführen)
Alternativ zu Schritt 3 kann man auch BATTMAN nutzen mit der automatischen Sync.Funktion und den namen Ändern.


___


Schriftfeld/Dein Block
Wenn ich das richtig gesehen habe dann hast du den Block bereits geändert?
Allerdings hast du im Schriftfeld nicht den Haken bei "Wert für Blockreferenz anzeigen" angehakt!!
Da die Polylinie im Block nur einmal vorhanden ist in der Datei und immer an der gleichen Position,
würde dir auch immer das gleiche angezeigt werden, an jeder Blockreferenz: 0,00
(da dein Test für neue Blockreferenzen angeblich positiv war, hattest du wohl eine andere "Version" wie die hier uns zur Verfügung gestellte)
Also: Der Haken muß rein, dann berechnet AutoCAD den Wert unter Berücksichtigung der Eigenschaften(wie Position)
der jeweiligen Blockreferenz den anzuzeigenen Wert.

>>Leider kann ich den Schriftfeldausdruck nicht im Ansatz nachvollziehen, :
%<\AcExpr (0.001*%<\_FldPtr 2083609183280>%) \f "%lu2%pr2">%

%<\AcExpr (0.001*%<\_FldPtr 2083609183280>%) \f "%lu2%pr2">%
ist ein anderes Schriftfeld, nämlich eines was die Erhebung einer Polylinie ausliest.

%<\AcExpr (0.001*%<anderesSchriftfeld>%) \f "%lu2%pr2">%
ist das Formel-Schriftfeld mit der Multiplizier-Angabe

%<\AcExpr (0.001*%<anderesSchriftfeld>%) \f "%lu2%pr2">%
ist die Darstellung und Genauigkeitsangabe

---

Was du kopieren solltest für meinen oben gezeigten zweiten Weg (2)
war aber dein Schriftfeld was du erstellst (als auf deine DWG bezogen: Wenn du im Schriftfeld den Haken gesetzt hast, dann den Ausdruck kopieren!)
Sieht dann so aus:
%<\AcObjProp.16.2 Object(%<\_ObjId 631930330352>%,1).Elevation \f "%lu2%pr2%ds44">%
Den kannst du dann auch einfach als Wert in die Attribute kopieren über die EigenschaftenPalette.
_

Anmerkung: Es mag Fälle geben in denen das sinnvoll ist, hier jedoch nicht! Besser wäre
ein Schriftfeld "BLOCKPALTZHALTER" (da kommt man nur dran wenn man im BEDIT ist und einen Schriftfeld-Attribut-Vorgabewert festlegen will)
dort dann den Vorgabewert = [Schriftfeld] erstellt. Dann im Schriftfelddialog die Kategorie "Blockplatzhalter" wählen und dort dann "POSITION" ausliest.

(Der Weg mit Polylinie->Erhebung auslesen ist nämlich fehlerbehaftet bei bestimmten Vorgängen)
Das sieht dann so in der art aus: %<\AcObjProp.16.2 Object(?BlockRefId,1).InsertionPoint \f "%lu2%pt4%pr2">%

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

Bernd P
Ehrenmitglied V.I.P. h.c.
cook-general



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

Beiträge: 3143
Registriert: 07.06.2001

AMD A8-3870, W10-64bit, 16GB RAM, HP DJ T2300mfp, Maus:G700s, Sub:Infrastructure Design Suite, Excel 2013,

erstellt am: 25. Jun. 2020 08: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 Osawa 10 Unities + Antwort hilfreich

Servus,

mach das immer so> Attribut im Blockeditor den Namen des Atrributs ändern danach Attsync.

Wenn man die selben Namen für das Attribut verwenden, so wie von dir beschrieben, greifen die Änderungen nicht.

@Vermesssung, spannende Art die Vermessungsdaten zu liefern.

------------------
<----- Bitte Systeminfo eintragen, warum siehst du hier. Schöne Grüsse aus der Steiermark  Bernd P.

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

Osawa
Mitglied
Architekt


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

Beiträge: 58
Registriert: 11.10.2014

Fujitsu Celsius H780
Intel Core i7-8850H
32GB Ram
Quadro P3200
Windows 10 Enterprise
Revit 2018-20
AutoCAD 2019

erstellt am: 25. Jun. 2020 14:38    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

Vielen, vielen Dank!! Der Hinweis mit dem Blockeditor hat schlussendlich meinen Groschen zum Fallen gebracht!   

Anstatt das von den Vermessern angelegte Attribut in der Höhenkote zu bearbeiten, habe ich einfach ein neues angelegt, das den Z-Wert des Einfügepunkts ausliest (ohne Formel). Dann das alte Attribut gelöscht, synchronisiert und alles ist wie's sein soll! So einfach, da stand ich wirklich gehörig auf der Leitung...

Und einen besonderen Dank für die sehr ausführliche Erklärung des Schriftfeldausdrucks. Viel gelernt in diesem Thread!!

@Bernd: Ja, strikte Vorgabe war eigentlich, alle Zeichnungen in 2D abzuliefern, aber bei den Höhenkoten waren sie stur...

------------------
Osawa

[Diese Nachricht wurde von Osawa am 25. Jun. 2020 editiert.]

[Diese Nachricht wurde von Osawa am 25. Jun. 2020 editiert.]

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)2020 CAD.de | Impressum | Datenschutz