• 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.

Remplacer le bloc de papier de dessin multiple dans AutoCAD 2008

j'ai besoin de connaître le nom du bloc, le nom des étiquettes qui doivent être changées, les nouveaux textes à écrire et la version de l'autocad sur lequel vous opérez.
 
j'ai besoin de connaître le nom du bloc, le nom des étiquettes qui doivent être changées, les nouveaux textes à écrire et la version de l'autocad sur lequel vous opérez.
merci beaucoup pour votre aide!
puis, le nom du cartiglio (bloc) est cartiglio_00 .

voici les attributs contenus dans chaque dossier :

entrepreneur
objet
location_intervention
phase_du projet
_emploi d'identification
typologie_du_document
description du document
00/gen/001
description1
autres
bb
cc
00/gen/002
description2
autres
bb
ccc
00/gen/003
description3
autres
bb
ccc3
00/gen/004
description4
autres
bb
cc
00/gen/005
désignation des marchandises
ah oui !
bb5

c

et
échelle
a1
c0000_j00_e000_00.dwg
nom/système
nom/designer_sg
nom/société_ar
nom/designer_ar
nom/société_comm
nom/s du client
nom/société_ditta
nom/nom_titulaire
estampille_copie_interne


utiliser autocad 2010 full.

quant au nom des textes à réintroduire... je ne sais plus !
je pense que la fonction doit être globale, pour être utilisée plusieurs fois sur des commandes différentes, me permettant d'insérer ou de modifier une étiquette (ou plusieurs étiquettes) dans une seule prise de vue uniquement sur des dessins multiples. .
..par exemple, si vers la fin du travail je réalise que je dois changer la date du projet, je vais changer l'étiquette "00/gen/001" de la première révision, à mettre en œuvre alors sur toutes les images contenues dans un dossier.


..quand un jour vous voulez changer le nom du cartilage ou de l'une de ces étiquettes, serais-je en mesure de réinitialiser la fonction indépendamment? ?

merci encore.
 
la fonction jointe se compose de 4 fichiers séparés.
1) c-cattr est la commande principale qui est lancée au début et qui ouvre une session autocad de fond et envoie des commandes à cette session avec la fonction (vla-sendcommand).
2) cattr est la commande de modification réelle du bloc de cartilage. cherchez tous les papiers avec ce nom et passez un par un.
3) mod_attr est la fonction qui modifie l'étiquette.
4) dossier est la fonction qui choisit le dossier où les dessins sont situés.

en particulier, ce que vous pouvez faire est de changer les étiquettes.
(mod_attr oeuf sur l'étiquette)

thèmes:
bloc - entité représentant le cartilage
étiquette - chaîne représentant l'une des étiquettes à modifier
nouveau texte - chaîne représentant le texte à insérer

notez que je peux insérer plusieurs lignes avec mod_attr:
(mod_attr bloc "00/gen/001" "01/02/2012")
(mod_attr bloc "description1" "diverses mises à jour")
(mod_attr bloc "aa1" "bille rose")

les sauvegardes sont faites après les modifications et la dernière mise au point pour changer, la session autocad en arrière-plan se ferme et reste la conception actuelle à partir de l'endroit où la commande c-cattr a été lancée.
pour charger le type de fonction:
(charger "fonction_riname") puis c-cattr. le reste est automatique.

ps: je vous ai demandé la version autocad mais elle fonctionne en fait sur toutes les versions à partir de 2000.
 

Pièces jointes

maman, mon cher travaillait les confutatis... je vous remercie !
...mais je ne peux pas le faire fonctionner correctement (je n'avais aucun doute!) :-)

donc, j'ai l'impression de devoir personnaliser la fonction en changeant les étiquettes que je veux considérer et le nouveau texte que je veux insérer, non ?
a dit ceci:
partie de fonction originale(setq docs (vla-get-documents acad_app)
origine (dossier "choisir votre dossier source"
"c:\documents et paramètres\\user\\\desktop"
)
listfiles (origine vl-répertoire-files "*.dwg" 1)
)

(pour chaque élément listfiles)
(setq dis2 (documents ouverts (élément "\\\" d'origine strcat)))
(vla-sendcommand dis2 "(charger \"fonction_renom\") ")
(vla-sendcommand dis2 "cattr")
(vla-close dis2 :vlax-true)
)

(vla-sendcommand (vla-item docs 0) (strcat (command \"_quit\") _y ")
(vlax-release-objet acad_app)
(principal)
)

(défun c:cattr (/ indice grublo)
(setq grublo(ssget "x"(0 . "insérer")(2 . "cartiglio_00"))
indice -1
)
(répète (grotte de longueur)
(mod_attr (ssname grublo (setq index(1+ index))) "tag3" "newtext!"); <-- ici vous pouvez changer d'étiquette et de texte
;;(mod_attr (vlax-ename->vla-object (sssname grublo (setq index(1+ index)))))
)
)

fonction portion modifiée par moi (2 valeurs de texte à modifier) (setq docs (vla-get-documents acad_app)
origine (dossier "choisir votre dossier source"
"c:\documents et paramètres\\user\\\desktop"
)
listfiles (origine vl-répertoire-files "*.dwg" 1)
)

(pour chaque élément listfiles)
(setq dis2 (documents ouverts (élément "\\\" d'origine strcat)))
(vla-sendcommand dis2 "(charger \"fonction_renom\") ")
(vla-sendcommand dis2 "cattr")
(vla-close dis2 :vlax-true)
)

(vla-sendcommand (vla-item docs 0) (strcat (command \"_quit\") _y ")
(vlax-release-objet acad_app)
(principal)
)

(défun c:cattr (/ indice grublo)
(setq grublo(ssget "x"(0 . "insérer")(2 . "cartiglio_00"))
indice -1
)
(répète (grotte de longueur)
(mod_attr (ssname grublo (setq index(1+ index)))"description1" "premier problème de vérification");
(mod_attr (ssname grublo (setq index(1+ index))) "00/gen/001" "01 janvier 2012"); <-- ici vous pouvez changer d'étiquette et de texte
;;(mod_attr (vlax-ename->vla-object (sssname grublo (setq index(1+ index)))))
)
)




... mais rien.
la première partie de la fonction (le c-cattr) fonctionne, et donc me fait choisir le chemin des dessins et les ouvre tous dans une deuxième session d'autocad..malheureusement quand il arrive aux derniers fichiers ouverts, il ferme la session sans rien changer.

je demande à lumi.
 
la loi de la murphy frappe à nouveau.. .

(mod_attr (ssname grublo (setq index(1+ index)))) "description1" "premier problème de vérification");
(mod_attr (nom grublo index) "00/gen/001" "01 janvier 2012"); <-- ici vous pouvez changer d'étiquette et de texte

l'index écrit (setq index(1+ index)) n'est valide que la première ligne de mod_attr, les autres ne doivent avoir qu'un index. mon erreur, j'ai oublié de te le dire.
 
puisque je ne sais pas, de ceux qui ont utilisé cette fonction, si cela fonctionne, j'envoie une vérification ultérieure. nous acceptons les anomalies, critiques, améliorations et suggestions.
 

Pièces jointes

C'est assez simple.
Ouvrez le premier fichier.
via l'éditeur de blocs, éditer le papier, enregistrer les modifications, vous remarquerez que les attributs sont restés inchangés.
enregistré, par wblock, le bloc station, nom de fichier = nom de bloc.
ouvrir le deuxième fichier, définir la variable attreq à 0, insérer le bloc cartiglio en utilisant:
-_insérer nameblocco=lock name "0,0" 1 1 0
supprimer le bloc qui vient d'être inséré:
_effacer le dernier
à travers le générateur de script, que vous trouvez ici sur cad3d, vous pouvez tout automatiser.
Amusez-vous bien
Bonjour à tous : ... et pourtant je me souviens que ça a marché et je l'ai utilisé avec satisfaction plusieurs fois... mais maintenant je ne peux plus le faire fonctionner... vous m'aidez ?

J'ai suivi toutes les instructions, lancer excel, sélectionner mon 180 dwg auquel je dois supprimer logo et texte à la base de cartiglio pour rendre l'ensemble anonyme mais en même temps garder les attributs de données, copier les paramètres à côté excel, je crée le script et l'enregistrer, donc le lancement, mais il me bloque à la première étape sans changer même un chariot... :cry: and acad2011 répond me coem:

taper le nom du dessin à ouvrir <c:\reggio\500.dwg>: "c:/reggio2/500.dwg"
ouverture d'un fichier dans le format autocad 2000.
modèle de régénération en cours.
Chargement des utilitaires du menu autocad.
<copyright: claudio="" granuzzo="" ing.="">Tapez toutsu0 pour lancer le programme!
Dwg fichier autodesk. c'est un fichier dwg certifié dont le dernier sauvetage est
avec une demande d'auto-bureau ou une demande autorisée
Un bureau automatique.
commande: (commande "setvar" "attreq" 0)
commande setvar inconnue "setvar". appuyez sur f1 pour le guide.
commande : attreq
type nouvelle valeur pour attreq <0>: 0
commande : zéro

Qu'est-ce qui ne va pas ? Comment je fais ça ?
Je ne travaille même pas l'exemple zippé que j'avais téléchargé ici...
</copyright:></c:\reggio\500.dwg>Je joins un petit exemple, me dire comment faire fonctionner?
 

Pièces jointes

Remplacer setvar contre Moyens.
est la même commande mais en italien

Cette ligne acariens Je ne comprends pas, mais ce soir je suis un peu fondu et j'espère que c'est assez de commande en italien pour essayer les choses.
 
Remplacer setvar contre Moyens.
est la même commande mais en italien

Cette ligne acariens Je ne comprends pas, mais ce soir je suis un peu fondu et j'espère que c'est assez de commande en italien pour essayer les choses.
Ciao La masse, merci, il commence à tourner mais nous ne sommes toujours pas là, j'essaie d'expliquer pour la partie même de l'avenir qui a compris maintenant et puis j'espère que quelqu'un m'aidera à conclure ;).

1) le fichier excel "simplement" sert à créer un script qui "n'est rien d'autre" qu'une liste de commandes que vous pourriez également écrire à la main sur l'acad, excel prend fondamentalement les commandes que vous écrivez dans la colonne et crée une sorte de macro.
2) pourquoi, aujourd'hui, la commande modvar (italienne) fonctionne et la commande setvar (la même commande en anglais) ne fonctionne pas (pour d'autres _setvar avec le "_" en face le rend international et toujours interprétable dans chaque langue, pour laquelle ... ne reste pas un mystère, mais tantè, aujourd'hui avec modivar le cycle tourne et arrive à la fin.
3) miatab est le nom de l'ancien bloc que vous voulez remplacer par le nouveau: dans le test d'aujourd'hui, puisque l'ancien bloc de cartiglio avec logo est appelé "cart-compil" Je l'ai rebaptisé en "cartiglio-origin" avec la commande "_renom" ayant alors créé (et de cela je ne suis pas sûr que je l'ai fait bien, et en effet Je demande: comment enregistrer correctement sur c:/enregistrer la copie du bloc cartiglio avec les attributs en supprimant seulement le logo et l'écriture ci-dessous et en assignant le 0.0 dans le point d'insertion souhaité?) "paper-out_logo_e_note", à ce moment la commande à mettre en excel, puis dans le script est devenue
"papier original=c:\reggio3\cartiglio-senza_logo_e_note"
... que j'interprète comme: "replacer le bloc cartiglio original avec le bloc c:\reggio3\cartiglio-senza_logo_e_note"

4) "0,0" je crois donne la position de l'insert de verrouillage,
"1" l'échelle
"1"... ça devrait être la rotation... alors zéro serait mieux... Je ne comprends pas pourquoi je dois mettre 1"0"... Je ne comprends pas pourquoi.Je crois que les portes...
"_dernier"... La dernière... ? Mais quoi ?"_qsave" ... enregistre le fichier ouvert et modifié
"_fermer" ... fermer le fichier ouvert et modifié

à ce stade, le cycle comme je l'ai dit je l'ai fait et remplace les blocs, seulement que, dans mon cas, j'ai plusieurs problèmes:
- nouveaux blocs d'emplacement incorrects (si je peux trouver comment enregistrer la copie correctement comme je l'ai demandé ci-dessus, je pense que ça va marcher)
- rester à la fois les attributs corrects et ceux insérés dans le nouveau bloc (je n'ai évidemment pas bien compris comment gérer les attributs dans le nouveau bloc ... voir ci-dessus ..
- l'échelle est fausse, parfois le nouveau bloc est correct, parfois petit, parfois grand: ceci parce que, je pense, j'ai différentes tailles de feuilles a4,a3,a2,a1,a0 ... et aussi ce n'est pas comme ça que je le résolve.. . ... J'aurais besoin de l'aide habituelle...
 
dans le script la commande setivar n'est pas avec le soulignement devant, peut-être l'installation que vous avez faite est en italien et puis les commandes que vous devez leur donner en italien.
le discours de miatab=eccc... Je suis arrivé au bout d'un moment (disons si j'ai tort, mais vous avez tourné un vieux script avec peu de connaissance de la cause?), ce que je suggère est d'écrire une description de leur fonction aux contrôles afin que vous compreniez immédiatement le sens si vous le rameniez en main après un certain temps.
puis les commandes que vous lancez une fois que vous entrez dans le bloc sont :
point d'insertion (0,0)
x échelle (1)
(1)
roulement (0)
effacer (exige de supprimer un objet)
dernier (supprimer le dernier élément inséré)

en raison des deux dernières commandes est expliqué par le fait qu'en entrant un bloc avec le même nom, ils sont redéfinis. alors vous avez toujours la commande insert active et ensuite donnez les valeurs pour l'insertion. ce qui se passe à ce stade, que vous êtes avec l'ancien bloc mis à jour (bien que complètement élevé) et un nouveau inséré à 0.0 ayant donc un double; dans ce cas effacer et supprimer le dernier bloc.
cela arrive parce que par script vous ne pouvez pas émuler la clé esc qui arrête la commande juste après la redéfinition du bloc; ou mieux je ne peux même pas le faire Voici poste avait trouvé le chemin.
- nouveaux blocs d'emplacement incorrects (si je peux trouver comment enregistrer la copie correctement comme je l'ai demandé ci-dessus, je pense que ça va marcher)
- rester à la fois les attributs corrects et ceux insérés dans le nouveau bloc (je n'ai évidemment pas bien compris comment gérer les attributs dans le nouveau bloc ... voir ci-dessus ..
- l'échelle est fausse, parfois le nouveau bloc est correct, parfois petit, parfois grand: ceci parce que, je crois, j'ai différentes tailles de feuilles a4,a3,a2,a1,a0
comme vous avez des dessins à différentes échelles (j'imagine venir de travaux solides, autrement se repentir et commencer à faire 1:1 cartes dans l'espace de mise en page) vous ne pouvez pas, pas avec un script simple, insérer un nouveau bloc parce qu'il n'aura jamais les mêmes coordonnées et rarement la même échelle. alors vous devez tout pointer sur la redéfinition de l'ancien tout en conservant les paramètres précédents (aussi parce qu'il maintient les valeurs insérées). Comme je ne peux pas vous le dire maintenant, mais considérez que je dois toujours dîner que j'ai été aussi longtemps.
Si par hasard ce que vous devez supprimer à l'intérieur du bloc où vous lisez les textes en rouge sont des blocs ou attributs que vous pourriez penser remplacer seulement ceux: le logo font le même processus fait jusqu'ici pour les attributs lus ici https://www.cad3d.it/forum1/threads/script-per-editare-attributi-di-un-blocco.22583/
 
pour fixer les attributs de bloc utiliser la commande
attsync (synchronise les blocs avec les attributs)
n (indique comme type de sélection le nom)
bloc de nom

cela reste à comprendre pourquoi le point d'origine ne correspond pas à celui de l'ancien bloc (par la façon dont votre serrure sans logo se révèle un bloc à l'intérieur d'un bloc, l'exploser dans le dwg papier sans logo)

J'ai compris pourquoi du mauvais point d'insertion et c'est absurdement trivial, mais je ne pensais pas qu'il y avait une telle erreur. Dans la pratique, le bloc à remplacer n'a pas le vertex inférieur à destr asullo 0.0 alors que ce qui va remplacer oui.
 
Dernière édition:
à la fin de la foire le script initial fonctionne bien (sauf pour sous-titrer la commande setvar avec modivar) et tout ce casino est né parce que le bloc cartiglio-origine a le point d'insertion placé avec le compteur de maçonnerie.
J'attache le fichier cartiglio-senza_logo_e_note auquel j'ai déplacé l'origine afin qu'il corresponde à l'autre.
utilisez ceci et lancez le script et vous verrez que cela fonctionne et si vous voulez être silencieux ajouter des chaînes pour synchroniser
 

Pièces jointes

Si ça a marché l'autre fois, ça a probablement commencé mal.
Pendant ce temps pour vérifier que cela fonctionne, écrivez-le à la main sur le bloc-notes.
 
1522827423170.pngla fonction que vous ne reconnaissez pas fait partie de la bibliothèque marquée en bleu, dans vba aller sur les outils/références et vérifier la présence.
 
i vous avez autocad en italien
(commande "setvar" "attreq" 0)
devient
(commande "_setvar" "attreq" 0)
ou
(setvar "attreq" 0)
ou
(commande "attreq" 0)
 
si vous avez autocad en italien (commande "setvar" "attreq" 0) devient (commande "_setvar" "attreq" 0)
C'est bon. Moyens J'ai résolu, j'essaierai aussi avec _setvar de le rendre international
Pendant ce temps pour vérifier que cela fonctionne, écrivez-le à la main sur le bloc-notes.
effectué et n'a pas fonctionné
Si ça a marché l'autre fois, ça a probablement mal commencé.
... efficacement après un bon redémarrage (était de naissance ...) maintenant votre test fonctionne ... mais ...

Cry: Cry:
J'ai peur d'avoir un autre problème que je ne sais pas surmonter...
dans votre test et dans mon test, la cartouche à remplacer a été appelée "cartiglio-original"
alors qu'en réalité le cartiglio à remplacer s'appelle "cartigli duno 1" (avec des espaces...) puis au lancement, le script me répond:
Papiers.dwg: impossible de trouver le fichier dans l'emplacement de la recherche:"
... si, par contre, ils renoncent à l'original comme "cartigli_duno_1" (sans espaces), le script peut remplacer le cartiglio ...
Donc l'espace semble le déranger... mais je ne peux pas changer le nom à tous les fichiers de tous les dwg, tellement il peut tout changer à la main... :
Comment puis-je digérer les espaces au script/autocad?
 

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