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

Changement de type dans les blocs

  • Auteur du sujet Auteur du sujet tiziano69
  • Date de début Date de début

tiziano69

Guest
Bonjour, j'ai le problème suivant...
Je veux changer la ligne "pippo" (présent dans les blocs) avec la ligne "alpha".
C'est parce que... parce que beaucoup de dessins dwg ont été exportés par micro et je me trouve un certain nombre de typicité que je remplacerais et il est impensable d'entrer dans chaque recherche de bloc et de changer si cette ligne de type particulière est là.
J'ajoute, je ne veux pas renommer la ligne que vous voulez qu'elle soit changée donc à la fin du traitement il n'est pas + utilisé et je peux "éliminer" en permanence.

J'ai essayé de changer ce code qui devait changer le facteur d'échelle en objets mais je ne peux pas comprendre comment entrer dans les blocs et analyser tous les subentitas présents dans le bloc pour que je puisse changer les propriétés


fonction change_typeline()

dim asa comme objet

set oautocad = getobject(, "autocad.application")

set omodelspace = oautocad.activedocument.modelspace

set asa = oautocad.activedocument.blocks

nombre_entta = asa.count
pour i = 1 à nombre
si tel est le cas.

fin de la fonction
 
alors, j'ai écrit cette partie du code mais j'ai un problème de "Indices" dans la numérisation des entités présentes à l'intérieur du bloc ..... résolu cela, vous pouvez alors changer la ligne de type du code vba

fonction write_text()

dim asa comme objet
dim typeline comme chaîne

set oautocad = getobject(, "autocad.application")

set omodelspace = oautocad.activedocument.modelspace
set asa = oautocad.activedocument.blocks
dim nr_ent comme entier


pour inti = 1 à asa.count

si asa.item(inti).name <> "model_space" ou asa.item(inti).name <> "paper_space" alors
msgbox ("est un bloc")

pour x = 1 à asa.item(inti).count
typelinea = asa.item(inti).item(x). type de ligne
msgbox (typeline)
suivant x

fin si

suivant
fin de la fonction
 
Voilà donc, je pense que ça marche, maintenant il faut l'améliorer remplace les deux "boîte d'entrée" par le panneau "tiline" de l'autocad pour sélectionner les noms de la ligne.

fonction change_typeline_blocchi()
dim asa comme objet
dim typeline comme chaîne

set oautocad = getobject(, "autocad.application")
set omodelspace = oautocad.activedocument.modelspace
set asa = oautocad.activedocument.blocks

dim nr_ent comme entier

name_typelinea_prec = inputbox("typeline name to be remplaced")
new_typelinea = inputbox("nouveau nom de ligne de type")

pour inti = 0 à asa.count - 1

si asa.item(inti).name <> "model_space" ou asa.item(inti).name <> "paper_space" alors
'msgbox ("est un bloc")

pour x = 0 à asa.item(inti).count - 1
typelinea = asa.item(inti).item(x). type de ligne

si asa.item(inti).item(x).linetype=typelinea_prec puis
asa.item(inti).item(x).linetype = new_typelinea
asa.item(inti).item(x).
fin si

'msgbox (typeline)
suivant x

fin si

suivant

Ça tire. demande. mise à jour
ce dessin. port d'examen actif régen


fin de la fonction
 
Je réécris. avec les vacances la concentration pour vous dire où mal je ne l'ai pas;-) .

Ce code est plus linéaire et plus simple que votre (je crois) :-)
HTML:
fonction change_typeline_blocchi()

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
blocs dim comme blocs d'acad
dim i comme entier
set blocks = cedrawing. blocs

dim name_typelinea_prec en tant que chaîne
dim new_typelinea comme chaîne de caractères
dim typeline comme chaîne

Entrée utilisateur
name_typelinea_prec = ucase(inputbox("typename à remplacer"))
new_typelinea = ucase(inputbox("new typline name"))

' cycle qui analyse tous les blocs de conception
pour i = 0 pour les blocs. Nombre - 1

si block(s).name comme "*model_space" ou block(s).name comme "*paper_space" alors

♪
'cycle qui analyse toutes les entités' du bloc
pour x = 0 sur les blocs. Nombre - 1
typeline = blocs.item(x). type de ligne

i ucase(typeline) = name_typelinea_prec puis
bloc(i).item(x).linetype = new_typelinea
fin si
suivant x
fin si

Suivant

ce dessin. port d'examen actif régen

fin de la fonction
 
allora ho ridotto il codice a questo, semplificando di molto e interagisce soltanto sui blocchi
Funziana anche con la proprieta dalayer (attenzione ai caratteri)

sous-bouton privé2_clic()
dim blk comme acadblock
dim xrent comme acadentité
b comme chaîne

a = boîte d'entrée("ancienne")
b = boîte d'entrée("nouveau")

pour chaque craie dans ce dessin. blocs
si pas blk.islayout alors

pour x = 0 à blk.count - 1

si blk.item(x). linetype = a alors
blk.item(x).linetype = b
fin si
suivant x

fin si
suivant

ce dessin. port d'examen actif régen
fin 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