| |
 | 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: Attribute automatisch ändern (4933 mal gelesen)
|
DSchmndtk Mitglied
 Beiträge: 7 Registriert: 15.06.2015 AutoCAD 2018
|
erstellt am: 15. Jun. 2015 13:52 <-- editieren / zitieren --> Unities abgeben:         
Hallo, Ich suche schon eine Weile nach einer Möglichkeit konstante Attribute per VBA/Lisp zu editieren. Folgende Aufgabe stellt sich mir. Ich habe mehrere Blöcke in Zeichnungen, in denen das Attribut "SENSORTYPE" konstant ist. Nun ist es notwendig, dass ich den Inhalt dieses konstanten Attributs austausche. Also hat dieses konstante Attribut aktuell den Wert "abc" so soll es in Zukunft "123" haben oder hat es "abcde" so soll es in Zukunft "12345" haben und so weiter. Was ich sagen möchte ist, dass die zu tauschenden Inhalte bekannt sind und mit welchen Inhalt diese dann überschrieben werden sollen. Es müssen alle Blöcke einer Zeichnung auf das konstante Attribut "SENSORTYPE" geprüft werden und wenn der Inhalt von diesem konstanten Attribut einen bestimmten Wert enthält, so soll dieser mit einem anderen Wert getauscht werden. Ich hoffe Ihr könnt mir da helfen, damit ich einen Lösungsansatz finde. Vielleicht ist VBA oder Lisp ja gar nicht der richtige Ansatz. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin

 Beiträge: 2826 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Bricscad V11-V23 pro Plateia, Canalis Visual Basic
|
erstellt am: 15. Jun. 2015 14:09 <-- editieren / zitieren --> Unities abgeben:          Nur für DSchmndtk
Hallo DSchmndtk, Willkommen im Forum Wenn Du mal in den entsprechenden Unterforen (VBA, Lisp) die Suchmaschine anwirfst wirst Duetliche (auch fertige Lösungen) dazu finden. Wenn Du sicher bist dass dieser Text nur in den Attributen vorkommt, wäre auch ein einfaches Suchen und Ersetzen (nur ganze Wörter, Suche in Blöcken) eine einfache Variante. Grüße Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DSchmndtk Mitglied
 Beiträge: 7 Registriert: 15.06.2015 AutoCAD 2018
|
erstellt am: 15. Jun. 2015 14:50 <-- editieren / zitieren --> Unities abgeben:         
Die Suche im Forum hat nichts ergeben was mir weiterhilft. Das Suchen und ersetzen findet meinen Attributs Inhalt nicht. Ich denke es liegt daran, dass es ein konstantes und unsichtbares Attribut ist Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
       

 Beiträge: 22365 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 15. Jun. 2015 14:56 <-- editieren / zitieren --> Unities abgeben:          Nur für DSchmndtk
Richtig erkannt. Konstante Attribute gibt es im Grunde nicht, nur konstante Attributdefinitionen (von denen aber eben kein Attribut abgeleitet wird bei der Blockrefrenzerstellung). Suchst du einfach nur was fertiges oder brauchst du Programmierhilfe ? Dann bräuchten wir eine konkrete Frage.. Im Lispforum gibt es sich einen Code mit dem Blockdefinitionen bearbeiten kann (Objekte löschen, Layer ändern oder dergleichen), das kann man als Rumpfprogramm nutzen. Man geht die Blockobjekte durch, schaut ob es ein Attdef ist, ob es konstant ist, welchen Wert es hat und verändert dieses ggf. Nichts für einen Anfänger(eigentlich), aber sprich erst mal was du erwartest. ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DSchmndtk Mitglied
 Beiträge: 7 Registriert: 15.06.2015 AutoCAD 2018
|
erstellt am: 15. Jun. 2015 16:24 <-- editieren / zitieren --> Unities abgeben:         
OK, habe ich mir gedacht dass es nicht so einfach ist. Etwas fertiges wäre sicher ein Traum. Aber im Grunde könnte ich mich auch da reinarbeiten. Mit Lisp habe ich bisher noch nicht gearbeitet, deswegen würde ich vba bevorzugen. Aber wenn ich schon mal so einen Rumpf hätte wie ich auf die Attdef mit den bestimmten Inhalt komme und dann den Wert austasche wäre schon sehr hilfreich. Oder kann ich per Lisp/VBA aus dem konstanten Attribut ein normales machen? Evtl. mit löschen des alten konstanten Attributs und anschließend ein neues Attribut mit dem gleichen Namen und dem geänderten Wert einfügen Wert einfügen, jedoch nicht konstant? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin

 Beiträge: 2826 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Bricscad V11-V23 pro Plateia, Canalis Visual Basic
|
erstellt am: 15. Jun. 2015 18:07 <-- editieren / zitieren --> Unities abgeben:          Nur für DSchmndtk
Zitat: Original erstellt von DSchmndtk: Die Suche im Forum hat nichts ergeben was mir weiterhilft. Das Suchen und ersetzen findet meinen Attributs Inhalt nicht. Ich denke es liegt daran, dass es ein konstantes und unsichtbares Attribut ist
Dann hast Du wohl das falsche Suchwort angegeben. WEnn ich im vba Forum "Attribut" eingebe bekommt ich ca. 17 Seiten Eine davon zeigt Dir z.B. die prinzipielle Vorgehensweise - Durchsuchen der Zeichnung nach Blockreferenzen (oder bereits vorher einen SelectionSet machen) - Untersuchen ob Blockreferenz Objekte hat (BlockRef.HasAttributes) - wenn ja diese übernehmen (BlockRef.GetAttributes) - Attribute auf den entsprechenden Namen (Tagstring = "SENSORTYPE" ? ) untersuchen - Wenn der TextString dem Austauschwert entspricht diesen ändern Wenn dieses Attribut allerdings wirklich ein konstanter (unveränderlicher) Wert ist, muß natürlich noch in der Blockdefinition dieser Wert geändert werden. Grüße Klaus PS.: Du könntest ja auch einfach mal eine Beispielzeichnung hochladen, evtl. ist es ja schon mit Änderung der Blöcke im Blockeditor und AttSync getan ...
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DSchmndtk Mitglied
 Beiträge: 7 Registriert: 15.06.2015 AutoCAD 2018
|
erstellt am: 15. Jun. 2015 18:40 <-- editieren / zitieren --> Unities abgeben:         
Natürlich geht dieses händisch über den Blockeditor. Aber mit Attsync verschiebt er mir wieder die Texte, so dass diese dann auch wieder händisch korrigiert werden müsste. Ich habe ca. 100 Zeichnungen in denen im Schnitt 30 verschiedene Blöcke sind, bei denen dieses Attribut ausgetauscht werden müsste. Insgesamt betrifft es 50 Blöcke bei denen das Attribut ausgetauscht werden müsste. Welche Blöcke in welchen Zeichnungen sind, kann ich nicht sagen. Deswegen versuche ich ein Makro zu erstellen. Also Alle Blöcke in der Zeichnung durchgehen und schauen welchen Wert das konstante Attribut hat. Auf Grund diesen Inhalts kann ich sagen was dann darein soll... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin

 Beiträge: 2826 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Bricscad V11-V23 pro Plateia, Canalis Visual Basic
|
erstellt am: 15. Jun. 2015 18:48 <-- editieren / zitieren --> Unities abgeben:          Nur für DSchmndtk
Hast Du schon mal mit VBA programmiert? Im Prinzip ist ein Grundgerüst da ja schnell geschrieben wenn man eine Beispielzeichnung zum testen hat. Und Du solltest noch genauer definieren wie Du das gemeint hast: Zitat: Also hat dieses konstante Attribut aktuell den Wert "abc" so soll es in Zukunft "123" haben oder hat es "abcde" so soll es in Zukunft "12345" haben und so weiter.
Feste Texte ersetzen (wo sind diese definiert) oder Buchstaben durch Zahlen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DSchmndtk Mitglied
 Beiträge: 7 Registriert: 15.06.2015 AutoCAD 2018
|
erstellt am: 15. Jun. 2015 19:31 <-- editieren / zitieren --> Unities abgeben:         
ja, aber immer nur kleine Makros. Ein Beispiel: Bei einem Block soll das konstante Attribut SENSORTYPE mit dem Wert [Adressable Modul] mit dem Wert [mx.symbol.io_modul] ersetzt werden. Die Eckigen Klammern gehören mit zum Attributwert. Bei einem anderen Block soll das konstante Attribut SENSORTYPE mit dem Wert [Alarm Horn] mit dem Wert [mx.symbol.alarm_horn] ersetzt werden. Von diesen Blöcken gibt es wie gesagt so ca. 50 Stück. Wobei diese in 100 verschiedenen Zeichnungen benutzt worden sind. Test Zeichnung kann ich erst morgen liefern... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin

 Beiträge: 2826 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Bricscad V11-V23 pro Plateia, Canalis Visual Basic
|
erstellt am: 15. Jun. 2015 20:27 <-- editieren / zitieren --> Unities abgeben:          Nur für DSchmndtk
Ist ja auch nur ein kleines Makro und könnte so aussehen: Code:
Sub Attribut_Tausch() Dim oEnt As AcadObject Dim oBlockRef As AcadBlockReference Dim varAttr As Variant Dim attWert As Long For Each oEnt In ThisDrawing.ModelSpace If TypeOf oEnt Is AcadBlockReference Then Set oBlockRef = oEnt If oBlockRef.HasAttributes Then varAttr = oBlockRef.GetAttributes For attWert = LBound(varAttr) To UBound(varAttr) If UCase(varAttr(attWert).TagString) = "SENSORTYPE" Then Select Case oBlockRef.Name Case "Block1": If varAttr(attWert).TextString = "[Adressable Modul]" Then _ varAttr(attWert).TextString = "[mx.symbol.io_modul]" Case "Block2": If varAttr(attWert).TextString = "[Alarm Horn]" Then _ varAttr(attWert).TextString = "[mx.symbol.alarm_horn]" Case Else MsgBox "Block mit Name : " & oBlockRef.Name & vbCrLf & _ "Attribut SENSORTYPE : " & varAttr(attWert).TextString & vbCrLf & _ "nicht geändert" End Select End If Next attWert End If End If Next oEnt End Sub
Allerdings ändert dieser Code noch nicht die Blockdefinition, hier müßte ThisDrawing.Blocks noch untersucht werden:
Code:
Dim oBlock As AcadBlock For Each oBlock In ThisDrawing.Blocks For Each ent In oBlock If TypeOf ent Is AcadAttribute Then If ent.TagString = "SENSORTYPE" Then Select Case oBlock.Name Case "Block1": If ent.TextString = "[Adressable Modul]" Then _ ent.TextString = "[mx.symbol.io_modul]" Case "Block2": If ent.TextString = "[Alarm Horn]" Then _ ent.TextString = "[mx.symbol.alarm_horn]" End Select End If End If Next ent Next oBlock
[Diese Nachricht wurde von KlaK am 15. Jun. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH

 Beiträge: 4189 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 16. Jun. 2015 08:31 <-- editieren / zitieren --> Unities abgeben:          Nur für DSchmndtk
Hallo DSchmndtk, auch wenn es nicht mit den von dir genannten Programmiersprachen umgesetzt ist .. anbei ein .Net-Tool, welches deine Aufgabenstellung erledigt, Das Tool stellt 2 Befehle zur Verfügung. Einer erledigt den Wertetausch in der aktuellen Zeichnung, der andere in allen Zeichnungen innerhalb eines gewählten Verzeichnis und wahlweise auch in den darin enthaltenen Unterverzeichnissen. Basis ist eine Konfigurationsdatei (XML) mit folgendem, selbst erklärendem Aufbau:
Code:
<?xml version="1.0"?> <ConfigTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <AttributeTAG>Sensortype</AttributeTAG> <Zuordnung> <VonNach> <Von>abc</Von> <Nach>123</Nach> </VonNach> <VonNach> <Von>abcde</Von> <Nach>12345</Nach> </VonNach> </Zuordnung> </ConfigTemplate>
Nachdem das Setup durchgeführt und AutoCAD neu gestartet ist, sollte folgendes im Textfenster zu sehen sein:
Code:
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ CAD on demand GmbH COD-ChangeConstAttribValue - Werte konstanter Attribute nach einer vorgegebenen Konfiguration ändern -> Ändert den Wert in konstantenten Attributen nach einer festgelegten Konfiguration: "COD-ChangeConstAttribValue" -> Ändert den Wert in konstantenten Attributen nach einer festgelegten Konfiguration in mehreren Zeichnungen: "COD-ChangeConstAttribValue-Batch" -> Standard-Konfigurationsdatei für ChangeConstAttribValue erzeugen: "ChangeConstAttribValue-CreateStandardConfig" -> Automatisches Laden beenden (ab nächstem AutoCAD-Start): "Unregister-ChangeConstAttribValue" -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Das Tool läuft in den AutoCAD-Versionen 2011-2016 und darauf basierenden Vertikalprodukten. Das Programm ist Freeware. Grüße! Holger
------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
 defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DSchmndtk Mitglied
 Beiträge: 7 Registriert: 15.06.2015 AutoCAD 2018
|
erstellt am: 25. Jun. 2015 13:26 <-- editieren / zitieren --> Unities abgeben:         
|
DSchmndtk Mitglied
 Beiträge: 7 Registriert: 15.06.2015 AutoCAD 2018
|
erstellt am: 24. Apr. 2019 16:01 <-- editieren / zitieren --> Unities abgeben:         
|
Bernd P Ehrenmitglied V.I.P. h.c. cook-general

 Beiträge: 3441 Registriert: 07.06.2001 W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365
|
erstellt am: 26. Apr. 2019 09:29 <-- editieren / zitieren --> Unities abgeben:          Nur für DSchmndtk
Servus, nur so nebenbei konstante Attribute die man ändert will/muss, warum verwendet man den sowas? Edit: Auf was ich raus will ist doch das ist doch ein offensichtlicher Widerspruch "konstante Attribute die man ändert will/muss" bzw. haut man sich Steine in den Weg die man dann mit extra Programmierung wegräumen will/muss. ------------------ <----- Bitte Systeminfo eintragen, warum siehst du hier. Schöne Grüsse aus der Steiermark Bernd P. [Diese Nachricht wurde von Bernd P am 30. Apr. 2019 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin

 Beiträge: 2826 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Bricscad V11-V23 pro Plateia, Canalis Visual Basic
|
erstellt am: 26. Apr. 2019 09:52 <-- editieren / zitieren --> Unities abgeben:          Nur für DSchmndtk
|
maratovich Mitglied

 Beiträge: 26 Registriert: 08.08.2013
|
erstellt am: 26. Apr. 2019 21:12 <-- editieren / zitieren --> Unities abgeben:          Nur für DSchmndtk
|