Bonjour à tous,
Voilà quelques temps que je pense me pencher sur ce sujet.
Je souhaiterais modifier des blocs dynamiques via excel, et donc pouvoir les mettre à jour au départ d'excel.
J'ai testé avec les lisp dispo (comme attin/attout de Brice Studer, LXL de Patrick_35; un énorme merci à eux aux passages) mais je reste bloqué sur certains points.
Je vous joins 2 blocs, j'en ai une 10 mais le principe restera le même.
Je bloque sur les visibilités notamment, et n'étant pas très fort en programmation je viens chercher de l'aide ici !
Merci d'avance pour votre temps,
Le titre du sujet a été modifié par un modérateur pour faciliter la recherche. Titre original:
Lier blocs dynamiques avec excel
Résolu ! Accéder à la solution.
Résolu par Y.AUBRY. Accéder à la solution.
Résolu par Y.AUBRY. Accéder à la solution.
Bonjour @fradeg
Il n'est pas possible de répondre avec les simples indications données.
En particulier, il serait utile de lier un classeur Excel au message pour comprendre ce qu'il faut concrètement faire comme liaison suite à une modification Excel.
En général, les questions sans réponse le sont par manque de clarté, on aime répondre et on aime aider, mais il faut nous aider à aider.
Amicalement
DA
Bonjour @fradeg
Votre problème a-t-il été résolu? Si oui, pouvez vous nous indiquer de quelle façon pour que cela profite à la communauté, si non, pouvez vous nous apporter les précisions demandées de façon que nous puissions continuer à vous aider?
Si une des réponses résout votre problème ou vous a permis de mieux le comprendre, voulez vous avoir l'amabilité de cliquer sur le bouton APPROUVER LA SOLUTION en bas de la réponse qui apporte une solution?
Merci de ne pas accepter comme solution le message que vous êtes en train de lire.
Merci de nous apporter des précisions @fradeg
En attente de précisions @fradeg merci !
@fradeg a écrit :
Je vous joins 2 blocs, j'en ai une 10 mais le principe restera le même.
Je bloque sur les visibilités notamment, et n'étant pas très fort en programmation je viens chercher de l'aide ici !
Bonjour @fradeg,
Pourriez-vous être plus précis sur ce point ?
Comme l'a dit Didier @-didier-,
@-didier- a écrit :
Bonjour @fradeg
Il n'est pas possible de répondre avec les simples indications données.
En particulier, il serait utile de lier un classeur Excel au message pour comprendre ce qu'il faut concrètement faire comme liaison suite à une modification Excel.
En général, les questions sans réponse le sont par manque de clarté, on aime répondre et on aime aider, mais il faut nous aider à aider.
Amicalement
Pourriez-vous donc nous expliquez ce qui bloque en ce qui concerne la visibilité ?
Bonjour à tous,
Mes excuses pour le manque de précision.
Je vais tenter d'être le plus précis possible.
En pièce jointe, je vous glisse le dwg comportant les blocs ainsi que le fichier excel.
Les blocs comportent plusieurs états de visibilités.
Avec le lisp Lxl-V5.11, j'arrive à extraire les attributs des blocs B1/B2/B3/B4 mais pas les customs.
Mon but serait de pouvoir régler tous les paramètres de ces blocs via excel, plutôt que de le faire manuellement dans autocad.
Donc par exemple pour B1, j'aimerais pouvoir changer l'état de visibilité via excel, dans les customs changer par exemple "hauteur de béton" et que le bloc s'adapte visuellement.
Est-ce possible de gérer cela ?
Merci d'avance,
Bonjour @fradeg,
Suite à ton premier envoi je suis parti sur du développement .NET d'une interrelation entre les attributs et propriétés dynamiques des blocs et Excel.
Le programme .NET n'est actuellement pas complètement finaliser mais je pense qu'il pourra t'aider tel quel.
Il se peut que la DLL soit bloquée en fonction de la manière dont celle-ci est dézippée.
Pour le savoir faire un clique-doit sur le fichier BLOC_EXCEL_LINK.dll puis aller sur Propriétés
Ensuite cocher la case "Débloquer" puis "Appliquer" puis "OK"
Pour pouvoir l'utiliser il est conseillé de la mettre dans un dossier présent dans un "chemin de recherche de fichiers de supports" (Accessible depuis menu "Outils" "Options" onglet "Fichiers") et dans un "Emplacement approuvé" (au même endroit)
Ensuite la dll se charge via la commande NETLOAD
Les commandes sont "DYNOUT" pour l'extraction et "DYNIN" pour l'importation.
A+ Yoan
Yoan AUBRY
Bonjour @fradeg,
Cela vient du fait que tu charges la dll depuis un emplacement réseau et non pas en dur depuis ton C:\
Je te conseille de te créé un répertoire C:\DLL par exemple et de mettre la dll à l'intérieur de celle-ci (et de changer tes chemins
Ci-dessus un visuel du tableau Excel généré
A+ Yoan
Yoan AUBRY
Une autre solution est de copier la DLL à la racine des fichiers supports d'AutoCAD
Taper "%appdata%" (sans les guillemets) dans ta barre de chemin Windows, puis valider avec Entrée.
Cela t'amènera dans le "Roaming" de l' "Appdata" ou tu trouveras un dossier "Autodesk" puis ta version d'AutoCAD, puis un code Rxx.x en fonction de ta version, un dossier "fra" si ton installation est en francais ("enu" si en anglais)
Dans ton cas, c'est le chemin correspondant à l'encadré en vert sur l'image ci-dessous
A+ Yoan
Yoan AUBRY
Effectivement, je n'ai pas lu le message d'erreur en entier, merci pour tes lumières!
A la vue de ta capture d'écran, ça ressemble très fort à ce que j'avais en tête !
Maintenant, excuse-moi pour la question bête, mais où se trouve le fichier excel lié ?
Je teste DynIn/DynOut mais je ne trouve pas..
Le fichier Excel se créé normalement au même endroit que ton fichier dwg et porte le même nom hormis l'extension en .xlsx
Yoan AUBRY
Je supposais bien que c'était comme ça, mais ça ne le crée pas chez moi ?
Peux-tu m'envoyer ton fichier en MP pour voir si ca vient du contenu de celui-ci ou si ca vient de son emplacement.
Je suis toujours en cours de modification sur le programme actuellement (ajout de code VBA et chargement de "Référence" VBA via VB.NET) et je n'ai plus de version stable.
Il va faire que je mette en commentaire mon développement actuel pour voir ce qu'il en est....
A+ Yoan
Yoan AUBRY
Ci-joint la DLL modifiée suite à ton retour.
(Je n'ai regardé que la partie "DYNOUT")
Je te laisse me faire un retour sur la partie "DYNIN" si jamais ca ne fonctionne pas
A+ Yoan
Yoan AUBRY
Personnellement j'obtiens ce fichier lors de la commande DYNOUT
Yoan AUBRY
Informations concernant le tableau Excel :
1) Le formatage des cellules dans Excel dépend des unités de dessin dans le dwg
Dans le fichier que tu m'a transmis en MP les unités sont définis avec une précision défini sur "0" pour les longueurs et les angles et tes angles en degrés décimaux.
J'ai bien compris que cette précision à 0 servait à limiter la taille de tes attributs de blocs
Visuel d'un bloc dans ton dessin
Tu retrouves donc dans le tableau l'ensemble des distances arrondi à 0 près (même pour la position X, Y, Z du bloc) cependant la valeur réelle est conservée
2) Renseignement sur les titres des colonnes
Il y a des rectangles rouges dans le coins en haut à droite de certaines colonnes (correspondant à une note).
Ces informations sont à la fois utile dans le fichier Excel mais elle me servent également à connaitre le type de données lors de la réimportation.
Par exemple dans Vb.NET un angle (provenant d'AutoCAD) est toujours spécifié en radian. Cependant, dans le tableau Excel, exprimer cette valeur en radian ne servait pas à grand chose on trouve donc la note "Rotation / En Degrés décimaux" car j'en ai besoin pour faire la transformation inverse lors de la réimportation
D'une autre manière on retrouve pour les paramètres dynamiques les informations présentes lors de la création du bloc dynamique. Et de ce fait un menu déroulant au niveau des cases concernées.
Il y a également une note pour les paramètres non visibles dans un état dynamique spécifique (je ne l'ai actuellement pas encore fait pour les attributs) et malheureusement cette note ne disparait pas en cas de changement de l'état de visibilité dans Excel (d'où la programmation VBA spécifié dans un des post ci-dessus)
Bref, pour le bon fonctionnement du programme (même s'il n'est pas fini je l'ai testé sur quelques fichiers) il ne faut surtout pas supprimer les colonnes A, B, C, D, E dans n'importe quel onglet (HANDLE, X, Y, Z, ROTATION)
Sinon, si l'on supprime :
- un onglet dans le fichier Excel, l'ensemble des blocs portant le nom de l'onglet ne seront pas mis à jour.
- une ligne dans le fichier Excel, le bloc ayant pour Handle la valeur de la colonne A et de la ligne en question ne sera pas mis à jour
- une colonne d'attribut ou de paramètres dynamique : la valeur de l'attribut ou du paramètre dynamique ne sera pas modifié.
Voilà.
A+ Yoan
Yoan AUBRY
Bonjour @fradeg
Si une des réponses résout votre problème ou vous a permis de mieux le comprendre, voulez vous avoir l'amabilité de cliquer sur le bouton APPROUVER LA SOLUTION en bas de la réponse qui apporte une solution?
Cela facilitera la navigation de nos utilisateurs qui pourront directement atteindre la solution
Sachez qui si vous avez marqué une réponse comme solution par erreur, vous pouvez annuler ce marquage en cliquant sur le menu du fil (les trois points verticaux) et choisir "pas la solution"
Merci de ne pas accepter comme solution le message que vous êtes en train de lire.
Ci-joint la dernière version avec :
- Ajout de la gestion des calques en colonne F
- gestion des noms de blocs long : les noms de bloc >31 caractères généraient des problèmes lors de la création d'onglet dans le fichier Excel et dans la boite de dialogue (problème de superposition)
- gestion des calques verrouillés
- non mise à jour des attributs de type "champs" lors de la réimportation
Yoan AUBRY
Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.