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

Dessiner une polyligne à partir de valeurs Excel

  • Auteur du sujet Auteur du sujet xsky998
  • Date de début Date de début
oui.

:hahahah : blague de... dans le post précédent j'ai écrit que j'ai trouvé la macro et lu le code à l'intérieur... (celui dans le bouton :finger:). .

et la macro génère d'abord le fichier dxf (qui à la fin est un fichier texte) et l'ouvre ensuite avec autocad (shellexecute 0, vbnullstring, nprofile, vbnullstring, "", 1)

puis pour modifier ou ajouter qlc vous devez le faire en insérant le code dxf sur les objets à ajouter dans le fichier.
c'est vrai !
je ne sais pas si le temps passé par la publication de ce 3d justifie maintenant mon intervention. j'espère ne pas m'ennuyer.

l'auteur de ce dossier est moi.
le fichier provient d'une demande spécifique d'un étudiant qui avait le besoin de dessiner les diagrammes des moments de flexion (généralement la forme parabolique) et de la coupe en autocad mais en prenant les données des élaborations qu'il a encore effectuées avec l'aide d'excel. penser, par exemple, que la résolution d'un faisceau continue de soutenir. j'ai simplement adapté une partie du code écrit à d'autres fins (dessin de profils métalliques avec des données obtenues de excel).
en fait, le code écrit un fichier type *.dxf contenant les seules informations sur les polylignes et est ensuite ouvert en autocad.
essayer de changer le code en vous offrant la possibilité d'insérer des textes, formater des textes, styles, couches, couleurs et autres serait assez laborieux.
j'ai publié le fichier sous forme libre avec le code lisible par tout le monde, donc aucun problème si quelqu'un l'a pris et a changé.

salutations
 
je ne suis pas un expert dxf pour ajouter des quotas que vous devez savoir comment acad écrit un quota dans dxf et puis changer la vba. sincèrement, cela prend un peu de temps et ce n'est pas précisément la direction dans laquelle je voudrais utiliser la mienne.

j'ai ajouté comme requis une colonne dans le fichier précédent, la chose est triviale et s'ils peuvent ajouter autant qu'ils veulent.

à l'intérieur de la vba j'ai ajouté trois lignes dans le cas sélectionné, je les ai commentées afin qu'elles soient facilement identifiables.

si vous voulez ajouter la septième colonne dans la feuille excel, vous devez copier et coller les trois colonnes de référence.

il est nécessaire de définir les variables suivantes:

n_7 indiquant le nombre de points qui se trouveraient dans ac11
c_7 en aa14
tab_7 défini dans le formulaire de définition variable et égal à: =carto(c_7;0;n_7;3)

vous devez changer la cellule u8 et ajouter la présence de la nouvelle colonne.

d'ailleurs, je préfère normalement écrire à la vba, plutôt qu'à un dxf un script autocad, qui plus tard est plus facile à éditer. il est également plus facile d'entrer des commandes complexes. question des goûts !

vague
vous comprenez parfaitement le code.
 
même si je suis en retard, mais maintenant je peux vous remercier:finger:, à la fois pour le fichier original que vous avez produit et à la fois parce que vous m'avez encouragé à étudier le sujet tellement que maintenant je programme plus que discrètement à la fois avec vba et vb.net. a bientôt !
 
Écrivez la séquence excel telle qu'elle apparaît dans la ligne de commande autocad, collez-la dans la ligne de commande autocad
 
Je ne suis pas un expert dxf pour ajouter des quotas que vous devez savoir comment acad écrit un quota dans dxf et puis changer la vba. Sincèrement, cela prend un peu de temps et ce n'est pas précisément la direction dans laquelle je voudrais utiliser la mienne.

J'ai ajouté comme requis une colonne dans le fichier précédent, la chose est triviale et s'ils peuvent ajouter autant qu'ils veulent.

à l'intérieur de la vba J'ai ajouté trois lignes dans le cas sélectionné, je les ai commentées afin qu'elles soient facilement identifiables.

Si vous voulez ajouter la septième colonne dans la feuille Excel, vous devez copier et coller les trois colonnes de référence.

il est nécessaire de définir les variables suivantes:

n_7 indiquant le nombre de points qui se trouveraient dans ac11
c_7 en aa14
tab_7 défini dans le formulaire de définition variable et égal à: =carto(c_7;0;n_7;3)

vous devez changer la cellule u8 et ajouter la présence de la nouvelle colonne.

D'ailleurs, je préfère normalement écrire à la vba, plutôt qu'à un dxf un script autocad, qui plus tard est plus facile à éditer. Il est également plus facile d'entrer des commandes complexes. question des goûts !

vague
bonjour à tous les garçons, je presse que je suis nouveau au forum et surtout je suis aussi novice de vba.
J'ai une question à poser.
Tout d'abord, ça m'aide beaucoup de votre modification au fichier original.
Mon seul doute (qui découle du fait que nous avons toujours un minimum de 32 dans la zone sismique) est dans la déclaration du tableau.
J'ai réussi à définir c_7 et n_7, mais tab_7 et le changement de cellule u8 ne s'est pas bien passé, pourriez-vous m'aider en m'envoyant le code ?
 
Tu ne sais pas combien de temps j'ai économisé grâce à ce code, tu m'as sauvé. Merci beaucoup ! :
 
si vous voulez comprendre comment le faire indépendamment, suivez les instructions:

trois noms différents doivent être attribués:

le nom n_xx aux cellules jaunes. Voici le nombre de points dans le tableau relatif
c_xx nom dans la première cellule de chaque table (la cellule où le numéro 1) est signalé. cela sert à établir le point de départ de la table dynamique
le nom de l'onglet_xx à chaque table. mais la table doit être dynamique et doit donc être définie par la commande "formule"-->"name management". le nom doit être défini par la formule "=scarto(c_xx;0;0;n_xx;3)".
Bien sûr, "xx" indique le nombre séquentiel de tableaux.

Enfin, vous devez faire un léger changement dans le code pour prédire même les cas d'un plus grand nombre de tableaux:

sélectionner les maisons
maisons 1
number_r = range(n_1).valeur
coordonnées = plage("tab_1")
maisons 2
number_r = range(n_2).valeur
coordonnées = plage("tab_2")
...
...
...

maisons 31
number_r = range(n_31).value
coordonnées = plage("tab_31")
32 maisons
number_r = range(n_32).value
coordonnées = plage("tab_32")

Autres foyers
msgbox "erreur dans le nombre de diagrammes à dessiner"
sortie sous
fin de sélectionner

Bonjour.
 
Suggerimento:
sélection de cas conta_poly
Cas 1
numero_r = range("n_1"). valeur
coordonnées = range("tab_1")
....
fin de sélectionner

puoi trasformarlo en

sélection de cas conta_poly
cas 1 à 32
numero_r = range("n_" & conta_poly). valeur
coordonnées = range("tab_" & conta_poly)
fin de sélectionner

par utilisateur il logiciel anche con office x64 includi queste truhe:
Si vba7 alors
private déclarer ptrsafe fonction shellexecute lib "shell32.dll" alias "shellexecutea" (byval hwnd aussi longtemps, byval lpoperation comme chaîne, byval lpfile comme chaîne, byval lpparameters comme chaîne, byval lpdirectory comme chaîne, byval nshowcmd aussi longtemps)
#else
private declare fonction shellexecute lib "shell32.dll" alias "shellexecutea" (byval hwnd aussi longtemps, byval lpoperation comme chaîne, byval lpfile comme chaîne, byval lpparameters comme chaîne, byval lpdirectory comme chaîne, byval nshowcmd comme longue) aussi longtemps
Finir si

Au revoir.
 
merci rpor66
une suggestion qui sauve de nombreuses lignes.

les lignes pour exécuter le code aussi pour office x64, les lignes que vous avez signalées remplacent le seul présent maintenant sur l'appel shell?
 
Je les ai remplacés.
il arrive que la première des deux lignes soit reconnue comme une erreur vba pour excel x32, puis surlignée en rouge (il ne reconnaît pas le mot prtsafe) mais l'exécution du code ne va pas mal.
Merci encore.
 

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