• Dieses Forum ist die maschinengenerierte Übersetzung von www.cad3d.it/forum1 - der italienischen Design-Community. Einige Begriffe sind nicht korrekt übersetzt.

Wählen Sie Blöcke und Transformationsattribute im Text

bolo

Guest
ich habe einige vba rudiment für büro, es ist das erste mal, dass ich vba für autocad.

mein ziel ist für etwa hundert .dwg dateien:

anhang wählen sie blöcke
2. explodieren attribute und schalten sie in text (befehl "explode attribute auf text" im express-tool enthalten

um alle 100 dwg zu passieren ich fand eine routine, für den rest finde ich mich in schwierigkeiten, wenn jemand mir einen befehl empfiehlt wäre sehr hilfreich.

danke!
 
Zuletzt bearbeitet:
aber dieses excel blatt dient zum drucken, nicht wahr?
also sollte ich den code ändern, um zu tun, was ich für mich brauche?
oder habe ich etwas verloren?

danke cmq für die antwort;)
 
mit der gelben taste (wählen sie die datei) wählen sie alle dwg zu verarbeiten und werden in spalte a eingefügt.

in der insert-säule, eine pro zeile, die befehle, die autocad ausführen müssen und dann in die zelle sofort unterhalb des letzten befehls platziert.

blaue taste (skript-datei erstellen)


ein beispiel in das ist, war aussprache.

lass es uns wissen.
 
über das problem der verarbeitung mehrerer verschiedener dateien hätte ich es durch eine .dvb gefunden qui (es ist das vorletzte...) das geht in die überprüfung viele dwg und verarbeitet sie..

mein problem besteht nun darin, bestimmte blöcke zu filtern, die vielleicht mit blocknamen gefiltert werden, und attribute zu extrahieren, indem man sie in text verwandelt (befehl "explode-attribute auf text" im express-tool enthalten)

auch mit dem excel-blatt weiß ich nicht, wie man...
 
über das problem der verarbeitung mehrerer verschiedener dateien hätte ich es durch eine .dvb gefunden qui (es ist das vorletzte...) das geht in die überprüfung viele dwg und verarbeitet sie..

mein problem besteht nun darin, bestimmte blöcke zu filtern, die vielleicht mit blocknamen gefiltert werden, und attribute zu extrahieren, indem man sie in text verwandelt (befehl "explode-attribute auf text" im express-tool enthalten)

auch mit dem excel-blatt weiß ich nicht, wie man...
wenn nicht isnull(diese Zeichnung.selectionsets.item("element2)) dann
set sset2 = diese Zeichnung.selectionsets.item("element2")
sset2.delete
Ende


set sset2 = this draw.selectionsets.add("element2")
dim filter type(1) als ganze zahl
Dimfilterdaten(1) als Variante
Filtertyp(0) = 0
Filterdaten(0) = Einsatz
Filtertyp(1) = 2
Filterdaten(1) = 'Name_Block"

sset2.select acselectionsetall, , filtertype, filterdata

und so weit erstellen sie eine auswahl mit den blöcken dieses designs mit diesem namen.

wenn sie sicher sind, dass sie den express haben, ist die sache einfach mit dem befehl "sendcommand" können sie auf die befehlszeile wechseln.
thisdraw.sendcommand ("burst" & vbcr & "p" & vbcr & vbcr)wo "p" vorher anzeigt, da die vorherige auswahl bereits gefilterte objekte hatte.

andere methode... ein wenig mühsamer ist, ein array mit werten von attributen zu erstellen und ihren xy-standort zu speichern, und dann verwenden sie dieses array, um text in den gleichen orten mit den gleichen eigenschaften neu zu schreiben. dies ist etwas komplizierter, aber machbar.
 
legendär!

zu freundlich. .

jetzt sehe ich ruhig aus und dann werde ich berichten, ob das ziel erreicht wurde oder nicht!!!

guten tag!
 
es gibt mir fehler in der ersten zeile...

wenn nicht isnull(thisdrawing.selectionsets.item("element2") dann

sagt "schlüssel nicht gefunden"... ich fragte mich genau, was es ist?

den zweck des ersten code-absatzes und die vorhandenen auswahlen deaktivieren?
 
es gibt mir fehler in der ersten zeile...

wenn nicht isnull(thisdrawing.selectionsets.item("element2") dann

sagt "schlüssel nicht gefunden"... ich fragte mich genau, was es ist?

den zweck des ersten code-absatzes und die vorhandenen auswahlen deaktivieren?
entschuldigen sie die definitionen, die ich weggelassen hatte

dim sset2 als acadselectionset
dim element2 als objekt

dies ist der zweck des ersten absatzes, zu überprüfen, ob objekte in der sset2 vorhanden sind und sie möglicherweise leeren.
 
die erste zeile gibt mir immer den gleichen fehler... ich habe auch versucht, die zitate zu heben, und in diesem fall sagt er "nicht passende art". .

ich entschuldige mich, wenn ich dumme fragen stelle... aber ich weiß nicht, was es ist. .
 
die erste zeile gibt mir immer den gleichen fehler... ich habe auch versucht, die zitate zu heben, und in diesem fall sagt er "nicht passende art". .

ich entschuldige mich, wenn ich dumme fragen stelle... aber ich weiß nicht, was es ist. .
geben sie den code ein, damit ich sehe, ob ich ihn reparieren kann
 
es gibt mir fehler in der ersten zeile...

wenn nicht isnull(thisdrawing.selectionsets.item("element2") dann

sagt "schlüssel nicht gefunden"... ich fragte mich genau, was es ist?

den zweck des ersten code-absatzes und die vorhandenen auswahlen deaktivieren?
zusätzlich zu den aussagen:

dim sset2 als acadselectionset
dim element2 als objekt
aggingi:
auf fehlerwiederaufnahmewenn nicht isnull(thisdrawing.selectionsets.item("element2")) dann
...
...
.
.

Ciao
 
bei den ersten runden werken, öffnet und speichert die dwg richtig!!!
zum zweiten kommt dieser fehler:

laufzeitfehler '-21474148 (800108):
automatisierungsfehler
das aufgerufene objekt von den entsprechenden clients getrennt.

angst...
 
bei den ersten runden werken, öffnet und speichert die dwg richtig!!!
zum zweiten kommt dieser fehler:

laufzeitfehler '-21474148 (800108):
automatisierungsfehler
das aufgerufene objekt von den entsprechenden clients getrennt.

angst...
also... so ist es schwierig zu verstehen, wenn sie den code nicht platzieren, aber meiner meinung nach wird die auswahl nicht beim schließen der datei geleert und in den warenkorb gehen, um ein objekt zu fischen, das physisch nicht mehr da ist.

cmq dieser fehler leider bei der verwendung von vba kommt oft heraus und nicht immer nur aus einem grund... und es ist schwer zu verfolgen.

wenn du den code stellst, kann ich ihn mir ansehen... aber wenn sie mich in zwei reihen stecken, ist es schwer zu verstehen... cmq ein auf fehlerwiederaufnahme nächsten geht semrpe war, aber baipassi nur die probleme, die es tatsächlich gibt...
 
... cmq ein auf fehlerwiederaufnahme nächsten geht semrpe war, aber baipassi nur die probleme, die tatsächlich gibt es...
Genau.

anstatt

"wenn nicht isnull (diesdrawing.selectionsets.item("element2") dann"

könntest du tun:

In den Warenkorb
dim setname als string

setname = "element2"

für y = 0 zu dieser zeichnung.selectionsets.count - 1
wenn diese zeichnung.selectionsets.item(y).name = setname dann
diese zeichnung.selectionsets.item(y). Löschen
Ausfahrt für
und


set sset2 = thisdrawing.selectionsets.add("element2")
...
...
...
.

einige zusätzliche, aber sehr effektive Codezeilen

so 'doing (willing) können Sie die auf fehlerwiederaufnahme nächsten eliminieren

natürlich müssen Sie den gesamten Code unter Ihrer Hand haben, um zu überprüfen, dass es keine anderen "Unfälle" gibt
:smile:
 
großartig!

es funktioniert perfekt... wenn jemand direkt platzcode oder code-datei interessieren kann!

vielen dank!

:finger:
 
per chi fosse interessato dallo spunto di bolo ho creato la procedura degli express "explode attribute to text" in vba... praticamente fa la stessa cosa, ma non bedienen avere gli express caricati per farla funzionare.

permette però di visualizzare o meno gli attributi invisili una volta Convertiti in testo.

Public sub explosive_att_text()
dim sset2 als acadselectionset
dim blocco als acadblockreferenz
dim sset3 als acadselectionset
dim als acadentity
dim vlabel(0 bis 100) als Variante
dim vtext(0 bis 100) als Variante

dim kwordlist als string
kwordlist = "s n"
thisdraw.utility.initializeuserinput 1, kwordlist

diese zeichnung.utility.prompt vblf & vblf

dim returnstring als string
returnstring = thisdraw.utility.getkeyword("visualizzare attributi nascosti? (s)(n): ")

fehlerwiederaufnahme

wenn nicht isnull (diesdrawing.selectionsets.item("blocco")) dann
set sset2 = thisdrawiang.selectionsets.item("blocco")
sset2.delete
Ende

set sset2 = thisdrawing.selectionsets.add("blocco")

dim filtertype(0) als ganze Zahl
dim filterdata(0) als Variante

Filtertyp(0) = 0
filterdata(0) = "Insert"
Filtertyp(1) = 2
' filterdata(1) = "numvan"

sset2.select acselectionsetall, , , filtertype, filterdata

für jeden Block in sset2
Wenn blocco. dann hatattribut
dim array1 als Variante
Array1 = blocco.getattributes
für i = lbound(array1) bis ubound(array1)
vlabel(i) = array1(i).tagstring
vtext(i) = array1(i).textstring
debug.print (vtext(i))
Ich bin der

blocco.explod
blocco. Löschen


fehlerwiederaufnahme

wenn nicht isnull (diesdrawing.selectionsets.item("attributo")) dann
set sset3 = thisdrawiang.selectionsets.item("attributo")
sset3.delete
Ende

set sset3 = thisdrawing.selectionsets.add("attributo")

dim filtertype1(0) als ganze Zahl
dim filterdata1(0) als Variante

Filtertyp1(0) = 0
filterdata1(0) = "attdef"

sset3.select acselectionsetall, , , filtertype1, filterdata1

wenn returnstring = "" dann returnstring = "s"

für jeden beitrag in sset3

wenn ucase(returnstring) = "n" dann
Wenn zu.unsichtbar = wahr dann zuzuschreiben. Löschen
Ende
für i = lbound(array1) bis ubound(array1)
wenn attributo.tagstring = vlabel(i) dann
attributo.tagstring = vtext(i)
Ende
Ich bin der

Beitrag

Ende
sset3.delete
STRUKTUR
sset2.delete
Endteil
 

Statistik des Forums

Themen
58.521
Beiträge
499.056
Mitglieder
104.110
Neuestes Mitglied
ChristianR

Zurzeit aktive Besucher

Keine Mitglieder online.
Zurück
Oben