Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  Umbenennen einer Xref

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:   Umbenennen einer Xref (326 mal gelesen)
Theo37
Mitglied
Techniker


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

Beiträge: 410
Registriert: 08.10.2008

ACAD 2016
WIN 7 64bit
Intel Xenon CPU E5-1620 3.60GHz
16GB RAM

erstellt am: 20. Apr. 2017 17:48    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

 
Hallo an Alle,
eine Frage an die Profis. Ich möchte Blöcke umbenennen.
Das können aber auch XREFs sein. Gibt es einen einfachen Weg die davon abhängigen Layer auch um zu benennen? Wenn man das ganz regulär im Programm macht, dann schreibt Auto-Cad, "Vorsicht! "Architektur22" ist ein extern referenzierter Block.
Wird er umbenannt, werden auch die davon abhängigen Symbole umbenannt." Dann werden die Layer und andere Dinge auf den neuen Blocknamen geändert. Kann ich das mit vb.net auch irgendwie erreichen?
Oder muß ich alles "manuell" umbenennen?
Hatte das Problem schon mal jemand?
Wäre schön wenn jemand ne einfache Lösung wüsste.
Unten meine Sub. Vielleich wird damit das Problem ein bisschen deutlicher
Gruß Theo

Public Sub ChangeBlockname(ID As ObjectId, value As String, ByRef Blockname As String)
        Dim MyEntity As Entity
        Dim myblockref As BlockReference
        Dim myblockdef As BlockTableRecord
        Using myTrans As Transaction = MyDB.TransactionManager.StartTransaction()
            MyEntity = myTrans.GetObject(ID, OpenMode.ForWrite)
            myblockref = MyEntity
            myblockdef = myTrans.GetObject(myblockref.DynamicBlockTableRecord, OpenMode.ForWrite)
            Try
                If myblockdef.IsFromExternalReference Or myblockdef.IsFromOverlayReference Then
                    myblockdef.Name = value
                    Blockname = value
                    'hier müssten jetzt die Layer umbenannt werden!!!
                Else
                    myblockdef.Name = value
                    Blockname = value
                End If
            Catch
                MsgBox("Name ist schon vorhanden!", MsgBoxStyle.Critical)
            End Try
            myTrans.Commit()
        End Using

[Diese Nachricht wurde von Theo37 am 20. Apr. 2017 editiert.]

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

cadffm
Ehrenmitglied V.I.P. h.c.
良い精神



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: 19657
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 20. Apr. 2017 18:04    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 Theo37 10 Unities + Antwort hilfreich

Ich habe ja nach wie vor damit wenig am Hut, aber bist du sicher das es nicht wie mit jedem anderen Block geht?

Alle abhängigen Objekte (Layernamen etc) sollte Acad selbst handeln dabei.
Also nur den Referenznamen de Blockdefinition(Xref) ändern.

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

[Diese Nachricht wurde von cadffm am 20. Apr. 2017 editiert.]

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

Theo37
Mitglied
Techniker


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

Beiträge: 410
Registriert: 08.10.2008

erstellt am: 21. Apr. 2017 08:55    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

Hallo Caddffm,

das funktioniert bei externen Referenzen leider nicht. Oder ich mache was falsch, bzw. mache was nicht.
Wenn ich einen externen Block einfach umbenenne, bringe ich ACAD kpl. durcheinander. Die Layer werden falsch oder gar nicht mehr angezeigt. Wenn ich dann speichere und die Datei erneut öffne, dann werden die Layer neu eingelesen und die geänderten Layer mit den alten Namen sind verloren. Das ist mir zu viel Durcheinander, was glaube ich auch nicht besser wird, wenn ich die Layer einfach manuell umbenenne. Lieber wäre es mir, es gäbe eine kpl. Lösung. Z.B. bei dem Befehl "_rename", wird beim Umbenennen einer XREF auch dieses
"Vorsicht! "Architektur_test" ist ein extern referenzierter Block. Wird er umbenannt, werden auch die davon abhängigen Symbole umbenannt"
Ausgelöst. Dieses müsste ich irgendwie im Programm auslösen. Oder gibt es irgendeinen anderen Weg der die Sache kpl. umbenennt?

Gruß Theo

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

Theo37
Mitglied
Techniker


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

Beiträge: 410
Registriert: 08.10.2008

ACAD 2016
WIN 7 64bit
Intel Xenon CPU E5-1620 3.60GHz
16GB RAM

erstellt am: 26. Apr. 2017 13:17    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

Ich komme in der Sache einfach nicht weiter. RestoreOriginalXrefSymbols und RestoreForwardingXrefSymbols verbessern die Sache zwar und sind glaube ich auch der Schlüssel zur Lösung. Aber irgendwas mache ich noch falsch. Wenn ich Googele, finde ich öfters ähnliche Fragen, aber leider keine brauchbaren Lösungen.
Hat jemand eine Idee oder einen möglichen Lösungsweg?
Vielleicht ist auch XrefGraf ein Lösungsweg?

Public Sub ChangXREFname(ID As ObjectId, value As String, ByRef Blockname As String)
        Dim MyEntity As Entity
        Dim myblockref As BlockReference
        Dim myblockdef As BlockTableRecord
        Dim MyXrefDatabase As Database
        Dim MyGraf As XrefGraph
        Dim MyNode As XrefGraphNode

        Using myTrans As Transaction = MyDB.TransactionManager.StartTransaction()
            MyEntity = myTrans.GetObject(ID, OpenMode.ForWrite)
            myblockref = MyEntity
            myblockdef = myTrans.GetObject(myblockref.DynamicBlockTableRecord, OpenMode.ForWrite)
            MyXrefDatabase = myblockdef.GetXrefDatabase(False)
            MyGraf = MyDB.GetHostDwgXrefGraph(False)
            MyNode = MyGraf.GetXrefNode(MyXrefDatabase)

            Try
                myblockdef.Name = value
                Blockname = value
            Catch
                MsgBox("Name ist schon vorhanden!", MsgBoxStyle.Critical)
            End Try

            myTrans.Commit()
        End Using
        MyXrefDatabase.RestoreOriginalXrefSymbols()
        MyXrefDatabase.RestoreForwardingXrefSymbols()

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