Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  MTexte nachträglich aus Block entfernen

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:  MTexte nachträglich aus Block entfernen (1424 mal gelesen)
DerBrain87
Mitglied
Mathematiker


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

Beiträge: 84
Registriert: 29.04.2015

Ich verwende die Autodesk Product Design Suite Ultimate 2017 bzw.
Inventor Professional 2017 & AutoCAD Mechanical 2017

erstellt am: 30. Aug. 2017 09: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 zusammen,
ich erzeuge via VBA vollautomatisch einen Block mit Blöcken und Texten. Die Texte speichere ich beim Einfügen in den Block in ein Array.
Nachdem der Block fertig ist, wird er auf den Punkt (0|0|0) und um einen Winkel (Alpha), welcher abhängig von anderen Geometrien im offenen Dokument ist, ausgerichtet.
Abhängig der BoundingBox des so ausgerichteten Blocks, wird dieser noch verschoben.
Das Funktioniert auch alles tadellos.
Nun zu meinem Problem:
Sobald der Block seine 'Parkposition' erreicht hat, möchte ich die Texte wieder vom Block trennen.
Ohne VBA wäre der Workflow wie folgt:
- (Rechte Maustaste) Block an jeweil. Stelle bearbeiten
- (Referenz bearbeiten) Aus Bearbeitungssatz entfernen (REFSET)
- Texte auswählen
- (Referenz bearbeiten) Änderungen speichern

Nun meine Frage:
Wie bekomme ich das via VBA hin?
Folgende Objekte habe ich als Variablen gespeichert:
- die Blockdefinition alias oBlock
- der platzierte und ausgerichtete Block alias oBlockReference
- alle Texte die aus der Blockdefinition nachträglich wieder raus sollen alias oTexte()

Vielen Dank im Vorraus
DerBrain87

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: 30. Aug. 2017 09:59    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 DerBrain87 10 Unities + Antwort hilfreich

Schau mal ob das Objekt nicht einfach löschen kannst,
zumindest mit Lisp geht dies über die ActiveX Schnittstelle direkt.

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

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

DerBrain87
Mitglied
Mathematiker


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

Beiträge: 84
Registriert: 29.04.2015

Ich verwende die Autodesk Product Design Suite Ultimate 2017 bzw.
Inventor Professional 2017 & AutoCAD Mechanical 2017

erstellt am: 30. Aug. 2017 10: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

Wenn ich durch mein Texte-Array geh und .Delete() sage, dann haut es mir die Texte ganz weg - ich möchte sie ja aber noch haben, sie sollen nur aus der Blockdefinition raus...

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: 30. Aug. 2017 10:05    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 DerBrain87 10 Unities + Antwort hilfreich

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

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

DerBrain87
Mitglied
Mathematiker


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

Beiträge: 84
Registriert: 29.04.2015

Ich verwende die Autodesk Product Design Suite Ultimate 2017 bzw.
Inventor Professional 2017 & AutoCAD Mechanical 2017

erstellt am: 30. Aug. 2017 10:46    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

Um es nochmals zusammen zu fassen:
Ich habe einen Block erstellt, verdreht platziert und verschoben.

Ich suche eine Möglichkeit die Texte in der Blockdefinition von dem gesetzten Block zu lösen, d.h. die Texte sollen dort bleiben wo sie waren, jedoch nimmer im Block sein. Quasi ein Block.Explode nur, dass alles was nicht vom Typ Text ist im Block bleiben soll...

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

Brischke
Ehrenmitglied V.I.P. h.c.
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

ACAD20XX, defun-tools

erstellt am: 30. Aug. 2017 10:54    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 DerBrain87 10 Unities + Antwort hilfreich

... ich denke dein Ansatz ist falsch. Wenn du die Texte nicht im Block möchtest, dann füge die auch nicht im Block ein. Alle Manipulationen der Blockreferenz kannst du ja auch an Textobjekten vornehmen, weshalb es doch Sinn Macht, die Texte einfach gleich im Modellbereich zu erzeugen.

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

DerBrain87
Mitglied
Mathematiker


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

Beiträge: 84
Registriert: 29.04.2015

Ich verwende die Autodesk Product Design Suite Ultimate 2017 bzw.
Inventor Professional 2017 & AutoCAD Mechanical 2017

erstellt am: 30. Aug. 2017 11: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

Mein Problem ist, dass ich die Position der Texte außerhalb der Blockdefinition nicht kenne...

Ich weiß wo die Texte in der Block-Definition hin kommen, aber:
der Block wird ja in einem Winkel eingefügt und dann verschoben.

Die Berechnung der endgültigen Position der Texte besteht daher aus 2 Rotationen und 3 Translationen, was nicht so wirklich Spaß macht, diese zu berechnen!

[Diese Nachricht wurde von DerBrain87 am 30. Aug. 2017 editiert.]

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

Brischke
Ehrenmitglied V.I.P. h.c.
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

ACAD20XX, defun-tools

erstellt am: 30. Aug. 2017 11:23    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 DerBrain87 10 Unities + Antwort hilfreich

... Wenn du den Block auf (0,0,0) einfügst, ist die Position der Texte im Modellbereich doch identisch mit der Position im Block. Die Drehung kannst du den Texten doch genauso zuweisen wie der Blockreferenz. Ich verstehe nicht, wo dein Problem ist.

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

rexxitall
Mitglied
Dipl. -Ing. Bau


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

Beiträge: 266
Registriert: 07.06.2013

Various: systems, Operating systems, cad systems, cad versions, programming languages.

erstellt am: 06. Sep. 2017 23:56    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 DerBrain87 10 Unities + Antwort hilfreich

Wenn ichs halbwegs richtig verstanden habe...
Mein Vorschlag:

1.) Die texte mit XDATAs in der BLOCKDEFINITION nummerieren etc. damit man noch weis wer was ist.

dim BLOCK as acadblock
set block=thisdrawing.blocks.item(blockref.name)
(der kann ja auch dynamisch sein also fragen wir den namen nicht den effektiven namen)

for each entity in block - kann man so durchhecheln wie den modelspace (der ist auch nur ein block)
wenn object=mtex usw dann
mtext.setxdata...
next

so nun weis jeder Mtext wer wer oder was ist.

Nun bastelst du ja mit der Blockref rum

der Trick ist nun die blockref einfach zu explodieren.
da wir ja vorher die mtexte iniziert haben wissen wir ja wer was ist.

dim v as VARIANT    ' !!! Sonst gehts nicht 
v=blockref.explode

for I= lbound(v) to ubound (V)
nun halt das aray der entitys durchhecheln, mtexte suchen und xdtats auswerten
next

Anschließend kann man die blockref löschen oder die explodierten Entitys je nachdem was man machen möchte.
Durch das explodieren wird die blockrefernz NICHT gelöscht.

Bei geschachtelten Blöcken geht sowas auch.
Dann muss man rekursiv von unten nach oben explodieren.

Hierbei gibt es noch folgenden Pitfall 
den Kram muss man ja auch wieder loswerden, also den, den man nicht brauch.
und x copys brauch man auch nicht.
Ich speicher bei sowas den handle mit ner xref nachh dem kpieren mit ab.

Variante 1. das neue Entity hat den xdataeintrag nicht = neues Element
dann bekommt das entity per xdata sein handle mit
bei NACHFOLGENDEN durchläufen kann nur das Ursprungselement sein eigenes handle besitzen.

Nur so las Idee. Etwas ähnliches hab ich mal implementiert von daher kannst du davon ausgehen, das es funktioniert.

Code gibts hierzu diesmal nicht. Liest eh keiner oder wenn gibt es sonderbare Kommentare. Ich hab auch keine Lust mehr die Selbstdarstellertruppe der "profesionellen" Hilfsleistungsanbieter zu hier weiter zu belustigen. Hilfreiche Kommentare wie "Ich weis nicht was du da so machst" brauch ich echt nicht. Liebe Leute ich programmiere ACAD nicht aus Spaß um sondern weil ichs für Konstruktionen brauche. Und die warten nun mal nicht auf nen Softwareyogie ! Da muss der unqualifizierte Vadder denn schon mal selbst ran :P

Und nein, LISP brauch es für dein problem auch  nicht ! Das sind alles Standartoperationen.

Lieben Gruß
Thomas

------------------
Wer es nicht versucht, hat schon verlorn 
Und bei 3 Typos gibts den vierten gratis !
<<< for sale !

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

Brischke
Ehrenmitglied V.I.P. h.c.
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

ACAD20XX, defun-tools

erstellt am: 07. Sep. 2017 09:45    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 DerBrain87 10 Unities + Antwort hilfreich

@rexxitall
... du hast mit deinem Post sicher den einfachsten Weg für die aktuelle Situation aufgezeigt, die Mtexte aus dem Block wieder rauszubekommen: Explodieren mit anschließender Analyse der Elemente des ErgebnisArrays.

Den Grund deiner Ausführungen drumherum kann ich jedoch nicht erkennen. Wozu für die aktuelle Aufgabenstellung XDatas anhängen? Da du auch Xref erwähnt hast, vermute ich, dass die Lösung von dir der Identifikation der Elemente zu einem anderen Zeitpunkt als dem aktuellen Programmdurchlauf dient --  für dich notwendig ist/war. Dann kann es Sinn machen so zu arbeiten.

Das du keinen Code gepostet hast, ist nach meinem Verständnis vollkommen in Ordnung. Die Syntax zu erlernen kann man mit F1 bzw. den verschiedenen Dokus und Hilfeseiten im Internet. Das wirkliche Know How liegt in der Idee der Lösung. Da gibt es immer mehrere, eine hast du gepostet. Davon lebt das Forum, mehr als von Code, der Copy&Paste gerecht gepostet wird.

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

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