• Ce forum est la traduction générée par la machine de www.cad3d.it/forum1 - la communauté italienne du design. Plusieurs termes ne sont pas traduits correctement.

Sélectionnez les blocs et les attributs de transformation dans le texte

bolo

Guest
j'ai du vba rudiment pour le bureau, c'est la première fois que j'utilise vba pour l'autocad.

mon but est pour une centaine de fichiers .dwg:

1. sélectionner les blocs
2. exploser les attributs et les transformer en texte (commander "exploser les attributs au texte" contenus dans l'outil express

pour passer tous les 100 dwg j'ai trouvé une routine, pour le reste je me trouve dans des ennuis, si quelqu'un me recommande quelque commande serait très utile.

je vous remercie !
 
Dernière édition:
mais cette feuille excelle sert à imprimer, n'est-ce pas ?
donc je devrais changer le code pour faire ce dont j'ai besoin pour moi ?
ou suis-je perdu quelque chose ?

remercie cmq pour la réponse;)
 
avec le bouton jaune (choisir le fichier) sélectionnez tous les dwg à traiter et sont insérés dans la colonne a.

dans la colonne insert, une par ligne, les commandes qui doivent effectuer autocad, puis placé dans la cellule immédiatement au-dessous de la dernière commande donnée.

bouton bleu (créer le fichier script)


voir un exemple dans c'est ça. débat.

faites-nous savoir.
 
au sujet du problème du traitement de plusieurs fichiers différents je l'aurais résolu par un .dvb trouvé pour (c'est l'avant-dernier ...) qui va en revue de nombreux dwg et les traite.. .

mon problème est maintenant de sélectionner certains blocs filtrant peut-être par nom de bloc, et d'extraire les attributs en les transformant en texte (commande "explose les attributs de texte" contenus dans l'outil express)

aussi en utilisant la feuille excel je ne sais pas comment faire... :confuse:
 
au sujet du problème du traitement de plusieurs fichiers différents je l'aurais résolu par un .dvb trouvé pour (c'est l'avant-dernier ...) qui va en revue de nombreux dwg et les traite.. .

mon problème est maintenant de sélectionner certains blocs filtrant peut-être par nom de bloc, et d'extraire les attributs en les transformant en texte (commande "explose les attributs de texte" contenus dans l'outil express)

aussi en utilisant la feuille excel je ne sais pas comment faire... :confuse:
si non isnull(thichdrawing.selectionsets.item("element2"))
set2 = thisdrawing.selectionsets.item("element2")
sset2.delete
Si


set2 = thisdrawing.selectionsets.add("element2")
dim filtertype(1) comme entier
dim filterdata(1) comme variante
type de filtre(0) = 0
filterdata(0) = "insérer"
type de filtre(1) = 2
Filterdata(1) = "_bloc de nom"

sset2.sélectionner acselectionsetall, , type de filtre, données filtrantes

et jusqu'à présent vous créez une sélection avec les blocs de ce design avec ce nom.

maintenant, si vous êtes sûr que vous avez l'express... la chose est simple avec la commande "sendcommand" vous pouvez passer à la ligne de commande.
Cedrawing.sendcommand ("burst" & vbcr & "p" & vbcr & vbcr)où "p" indique précédemment, puisque la sélection précédente avait déjà filtré des objets.

autre méthode... un peu plus laborieuse est de créer un tableau avec des valeurs d'attributs et de stocker leur emplacement xy, puis d'utiliser ce tableau pour réécrire du texte dans les mêmes emplacements avec les mêmes propriétés. c'est un peu plus compliqué mais faisable.
 
légendaire !

trop aimable en effet. . . .

maintenant je regarde calmement et puis je vais rapporter si le but a été atteint ou non!!! !

bonne journée !
 
ça me donne une erreur dans la première ligne...

si ce n'est pas isnull(thisdrawing.selectionsets.item("element2") alors

il dit "la clé n'a pas été trouvée"... je me demandais exactement ce que c'était ?

l'objet du premier paragraphe du code et dévérifier les sélections présentes?
 
ça me donne une erreur dans la première ligne...

si ce n'est pas isnull(thisdrawing.selectionsets.item("element2") alors

il dit "la clé n'a pas été trouvée"... je me demandais exactement ce que c'était ?

l'objet du premier paragraphe du code et dévérifier les sélections présentes?
excusez les définitions que j'avais omises

dim sset2 comme acadselectionset
dim element2 comme objet

c'est le but du premier paragraphe est de vérifier s'il y a des objets dans le sset2 et éventuellement de les vider.
 
la première ligne me donne toujours la même erreur... j'ai aussi essayé de lever les citations, et dans ce cas il dit "pas de type correspondant". . . .

je m'excuse si je pose des questions stupides... mais je ne sais pas ce que c'est. . :roubles:
 
la première ligne me donne toujours la même erreur... j'ai aussi essayé de lever les citations, et dans ce cas il dit "pas de type correspondant". . . .

je m'excuse si je pose des questions stupides... mais je ne sais pas ce que c'est. . :roubles:
entrez le code donc je vois si je peux le réparer
 
ça me donne une erreur dans la première ligne...

si ce n'est pas isnull(thisdrawing.selectionsets.item("element2") alors

il dit "la clé n'a pas été trouvée"... je me demandais exactement ce que c'était ?

l'objet du premier paragraphe du code et dévérifier les sélections présentes?
en plus des déclarations:

dim sset2 comme acadselectionset
dim element2 comme objet
- oui.
suite de l'erreursi non isnull(thichdrawing.selectionsets.item("element2"))
......
...
..
.

Ciao
 
lors du premier tour de travail, ouvre et enregistre correctement le dwg!!!
à la seconde vient cette erreur:

erreur d'exécution '-21474148 (80010108)':
erreur d'automatisation
l'objet invoqué déconnecté des clients correspondants.

la peur...
 
lors du premier tour de travail, ouvre et enregistre correctement le dwg!!!
à la seconde vient cette erreur:

erreur d'exécution '-21474148 (80010108)':
erreur d'automatisation
l'objet invoqué déconnecté des clients correspondants.

la peur...
donc... il est difficile de comprendre si vous ne placez pas le code, mais à mon avis la sélection n'est pas vidée à la fermeture du fichier et aller au panier pour pêcher un objet qui physiquement n'est plus là.

cette erreur malheureusement quand on utilise vba sort souvent et pas toujours pour une seule raison... et c'est difficile à suivre.

si tu mets le code, je peux peut-être le voir... mais si tu me mets en deux rangées, c'est difficile à comprendre... cmq an on error represent next gos semrpe been, mais baipassi seulement des problèmes qui en fait il ya...
 
... cmq an on error represent next gos semrpe been, mais baipassi seulement des problèmes qui en fait il ya...
esatto...

les

"si ce n'est pas isnull(thesdrawing.selectionsets.item("element2")) alors"

si potrebbe :

dim y en entier
dim setname en tant que chaîne

setname = "element2"

pour y = 0 à cedrawing.selectionsets.count - 1
if thisdrawing.selectionsets.item(y).name = setname alors
cedrawing.selectionsets.item(y). supprimer
sortie pour
fin si
suivant

set2 = thisdrawing.selectionsets.add("element2")
.....
....
...
..

en ce qui concerne la qualité de l'efficacité de l'aide, il convient de rappeler que, dans le cas de l'aide d'état, le montant de l'aide d'état doit être calculé sur la base de l'aide d'état.

cosi' facendo (volento) si potrebbe eliminare l' sur erreur reprendre suivant

ovviamente bisogna aver sotto mano l'intero codice per verificare che non vi siano altre "inesattezze"
souris :
 
génial !

il fonctionne parfaitement... si quelqu'un peut s'intéresser à placer le code ou le fichier de code directement ! ! !

merci à tous ! ! !

- oui.
 
per chi fosse interessato dallo spunto di bolo ho creato la procedura degli express "explose attribubut to text" in vba... praticamente fa la stessa cosa, ma non serve avere gli express caricati per farla funzionare.

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

public sous explosion_att_text()
dim sset2 comme acadselectionset
dim blocco comme référence acadblock
dim sset3 comme acadselectionset
dim contribution à l'acadentité
dim vlabel(0 à 100) comme variante
dim vtext(0 à 100) comme variante

dim kwordlist comme chaîne
kwordlist = "s n"
Cedrawing.utility.initialisateurutiliseurinput 1, kwordlist

Cedrawing.utility.prompt vblf & vblf

dim returnstring comme chaîne
returnstring = thisdrawing.utility.getkeyword("visualizzare attributi nascosti? (s)(n): ")

suite de l'erreur

si ce n'est pas null(thesdrawing.selectionsets.item("blocco")) alors
set2 = thisdrawiang.selectionsets.item("blocco")
sset2.delete
Si

définir sset2 = cedrawing.selectionsets.add("blocco")

dim filtertype(0) comme entier
dim filterdata(0) comme variante

type de filtre(0) = 0
filterdata(0) = "insérer"
' type de filtre (1) = 2
' filterdata(1) = "numvan"

sset2.sélectionner acselectionsetall, , , type de filtre, données filtres

pour chaque blocco en sset2
Si blocco. un employé
dim array1 comme variante
array1 = blocco.getattributes
pour i = lbound(array1) à ubound(array1)
vlabel(i) = array1(i).tagstring
vtext(i) = array1(i).textstring
(vtext(i))
Suivant

blocco.explode
- ouui. supprimer


suite de l'erreur

si ce n'est pas null(thedrawing.selectionsets.item("attributo"))
set3 = thisdrawiang.selectionsets.item("tributo")
sset3.delete
Si

set3 = cedrawing.selectionsets.add("attribut")

dim filtertype1(0) comme entier
dim filterdata1(0) comme variante

type de filtre1(0) = 0
filterdata1(0) = "attdef"

sset3.sélectionner acselectionsetall, , , filtretype1, filtredata1

si retourstring = "" puis retourstring = "s"

pour chaque contribution en sset3

si ucase(returnstring) = "n" alors
if attributo.invisible = vrais alors attributo. Supprimeur
Si
pour i = lbound(array1) à ubound(array1)
si attributo.tagstring = vlabel(i) alors
atributo.tagstring = vtext(i)
Si
Suivant

contribution prochaine

Si
sset3.delete
suivant blocco
sset2.delete
peau sous
 

Statistiques du forum

Sujets
58 521
Messages
499 056
Membres
104 110
Dernier membre
ChristianR

Membres en ligne

Aucun membre en ligne actuellement.
Retour
Haut