Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  Block verschieben

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Block verschieben (673 mal gelesen)
bccad
Mitglied



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

Beiträge: 57
Registriert: 02.11.2009

erstellt am: 03. Apr. 2017 14:30    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,

ich möchte in einer Zeichnung einen Block verschieben. Wenn ich folgenden Code ausführe:

Code:
Dim br As BlockReference = CType(tr.GetObject(oid, OpenMode.ForWrite), BlockReference)
br.Position = newpoint

wird nur der Einfügepunkt geändert. Der Rest des Blockes (hier ein Text) rührt sich nicht vom Fleck.
Was muss ich tun damit der ganze Block verschoben wird ?

Mfg Bernd

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 03. Apr. 2017 14:32    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 bccad 10 Unities + Antwort hilfreich

... kann es sein, dass der Text eine AttribuReference ist? Wenn ja, dann muss die ebenfalls verschoben werden.

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

bccad
Mitglied



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

Beiträge: 57
Registriert: 02.11.2009

erstellt am: 03. Apr. 2017 14:37    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 Holger,

ja, du hast recht. Es ein Attribut. Aber das ist doch Bestandteil des Blockes. Wieso muss ich den separat verschieben ?
Hast du ein Codesnippit wo man sehen kann wie es gemacht wird ?

Bernd

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

System: F1
und Google

erstellt am: 03. Apr. 2017 15: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 bccad 10 Unities + Antwort hilfreich

Hallo Bernd,

Attribute haben keine Verbindung zum Block(der Blockdefinition).
Linien Texte und Kreise sind nur einmal in der Blockdefinition vorhanden und an den Stellen der
Blockreferenzen werden diese Geometrieobjekte (bei mehreren Blockreferenzen des Block entsprechend mehrfach) visualisiert, Attribute jedoch hängen
"verknüpft" an einer Blockreferenz an.

Da es kein .Net spezifisches Thema ist kann ich auch mal allgemeine Infos zum Aufbau verlinken:
Konzept Blöcke: http://ww3.cad.de/foren/ubb/Forum54/HTML/013223.shtml

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

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 03. Apr. 2017 15:21    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 bccad 10 Unities + Antwort hilfreich

... du musst die AttributeCollection durchlaufen und dann jedes darin enthaltene Attribut neu positionieren.

AttributReferenzen werden beim Einfügen eines Blocks aus den in der Blockdefinition enthaltenen AttributDefinitionen abgeleitet und als eigenständige Objekte geführt. Nur so ist es möglich, dass diesen Textelementen auch von der Blockdefinition abweichende Textinhalte zugewiesen werden können. Da aber eine Attributreferenz eben noch weitere Eigenschaften besitzt, sind auch diese separat (losgelöst von der Blockdefinition) manipulierbar.

Du solltest dich mit dem Aufbau einer Zeichnungsdatenbank beschäftigen. In der VBA-Hilfe ist ein grafisches Objektmodell enthalten, das solltest du dir mal anschauen.

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

bccad
Mitglied



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

Beiträge: 57
Registriert: 02.11.2009

erstellt am: 04. Apr. 2017 11:43    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

Zitat:
... du musst die AttributeCollection durchlaufen und dann jedes darin enthaltene Attribut neu positionieren.

Hallo Holger,

das ist es. Nach dem ich mir die Attributecollection angesehen habe hat es Click gemacht.

Falls es mal jemand gebrauchen kann hier meine Lösung:
Die Attributecollection enthält die ObjectIDs der einzelnen Attribute.
Man muss sich das Object über die ObjectID holen und dann die Position jedes Attributes neu setzten.
Wenn die Attribute einen Offset zu dem Referenzpunkt des Blockes haben muss der extra ermittelt
und mit der Neupunktkoordinate verrechnet werden.

Code:
Dim br As BlockReference = CType(tr.GetObject(oid, OpenMode.ForWrite), BlockReference)
br.Position = newpoint
For Each attoid As ObjectId In br.AttributeCollection
    If (attoid.IsValid) AndAlso (Not attoid.IsErased) Then
    Dim dbo As DBObject = attoid.GetObject(OpenMode.ForWrite)
    If (TypeOf dbo Is AttributeReference) Then
        Dim aref As AttributeReference = CType(dbo, AttributeReference)
        aref.Position = newpoint
    End If
Next

Vielen Dank für eure schnelle Hilfe.
Bernd

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 04. Apr. 2017 11:47    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 bccad 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von bccad:

... Wenn die Attribute einen Offset zu dem Referenzpunkt des Blockes haben muss der extra ermittelt
und mit der Neupunktkoordinate verrechnet werden. ...


Arbeite doch mit einer Transformationsmatrix, dann kannst du das Objekt, egal ob Block- oder Attributreference mit .TransformBy() verschieben, ohne die aktuelle Lage des Objekts zu kennen.

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

bccad
Mitglied



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

Beiträge: 57
Registriert: 02.11.2009

erstellt am: 04. Apr. 2017 14:39    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

Zitat:
Arbeite doch mit einer Transformationsmatrix, dann kannst du das Objekt, egal ob Block- oder Attributreference mit .TransformBy() verschieben, ohne die aktuelle Lage des Objekts zu kennen.

Ja, das sollte ich wirklich mal tun. 

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