Curlygoth Posté(e) le 3 décembre 2021 Posté(e) le 3 décembre 2021 Citation je cherche juste à ouvrir un DXF (comme un TXT via un Open tout simplement) en VBA et fouiller son contenu pour en sortir la liste des types de ligne définis dans ce DXF. je pense avoir trouvé un truc, chercher les "AcDbLinetypeTableRecord", code DXF 2... C'est la base d'ouvrir / editer / creer des txt en vba ! donc rattrape le temps perdu avec ce tuto : https://warin.developpez.com/access/fichiers/#LII Mon site Web (en cours de construction) : Site DA-CODE de @didier
DenisHen Posté(e) le 3 décembre 2021 Auteur Posté(e) le 3 décembre 2021 Mille mercis @Curlygoth, ça je sais faire... Ce que je cherchais, c'était le "AcDbLinetypeTableRecord" et le code DXF = 2... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Curlygoth Posté(e) le 3 décembre 2021 Posté(e) le 3 décembre 2021 et ben ? fonction instr ! tu auras la position dans le string ! donc tu cherches : "AcDbLinetypeTableRecord" & chr(10) & " " & 2 Mon site Web (en cours de construction) : Site DA-CODE de @didier
DenisHen Posté(e) le 3 décembre 2021 Auteur Posté(e) le 3 décembre 2021 Regarde le format d'un DXF, il n'y a qu'une seule donnée par ligne, et c'est regroupé par "entête"... Et en plus, parfois, il y a parfois jusqu'à trois espaces avant la donnée, mais avec un Trim, ça devrait aller... Ce n'est pas si facile que ça, enfin pour moi... Mais ce n'est pas extraordinairement compliqué non plus... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
DenisHen Posté(e) le 3 décembre 2021 Auteur Posté(e) le 3 décembre 2021 Bon, je viens de tombé que un os... Je ne sais pas où commence et où termine la définition des types de ligne dans un fichier DXF... Il y a des "ENDTAB" partout... Je vois aussi que les codes DXF ne sont pas triés, j'ai un 2, puis un 70 puis un 63, pour la même définition... J'ai vu aussi que, je ne sais pas pourquoi, il est définit, dans un fichier DXF, les styles de cote, les types de lignes, les styles de texte... Mais pas toujours dans le même ordre, si on regarde dans un autre DXF, ou parfois par un autre AutoCAD ou un autre logiciel... Je fouilles plusieurs DXF, mais un dessin vide peut contenir plusieurs millier de lignes ! ! ! Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
(gile) Posté(e) le 3 décembre 2021 Posté(e) le 3 décembre 2021 Encore une fois, mais ça va être la dernière (j'en ai assez de me répéter), tout est dans l'aide, en plus, la section DXF est en français, alors pas d'excuse... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Curlygoth Posté(e) le 3 décembre 2021 Posté(e) le 3 décembre 2021 et tu as effectivement les définition de ligne ! je l'ai ai trouver ! tu as effectivement "AcDbLinetypeTableRecord" & chr(10) & " " & 2 il faut traiter entre ça et l'autre defintion qui est la suite ! les caractères entre les données faut juste les enlever et trim c'est pour les espaces travaille en array je te conseil de creer une ligne ou tu connais la definition et ensuite regarder comment est generer le dxf pour comprendre comment extraire le(s) type(s) de ligne(s) (ca marche) Mon site Web (en cours de construction) : Site DA-CODE de @didier
DenisHen Posté(e) le 3 décembre 2021 Auteur Posté(e) le 3 décembre 2021 Merci @(gile)vraiment, sincèrement, tu es d'une aide tellement immense (et d'une grande patience aussi...)... Et je ne voulais pas faire mon lourdaud... C'est juste que j'ai découverts que la structure d'un DXF n'est pas la même partout, malgré qu'elle suive un ordre précis... Mais je viens de comprendre un truc (car j'ai relus ton raccourcis, encore une fois), les "noms" des définitions d'entités sont toujours en amont de la définition. Je m'explique : La définition d'un type de ligne va toujours débuter par "AcDbLinetypeTableRecord", et après, la définition d'un type de ligne... Effectivement, après avoir relu et relu et relu ton raccourcis (car je me remets toujours en doute lorsque qu'un gars qui sait insiste), j'ai vu que c'est systématique, dans le fichier DXF, et d'après ce que j'ai compris, il y a : "AcDbLinetypeTableRecord" : Définition d'un type de ligne, Codes DXF qui suivent définissent ce type de ligne (parfois dans le désordre), Jusqu'au prochain "AcDbLinetypeTableRecord", qui donnera une autre définition, d'un autre type de ligne... En gros, je pense que les définitions sont par bloque, par pavés... Ce que je pense avoir compris maintenant... Ai-je bon ? Ou je n'ai encore rien compris... Mais je n'ai pas trouvé où s'arrête la définition courante... En tous cas, je ne peux que te remercier de toute ta patience... Envers un mec probablement limité... Encore une fois, mille mercis... Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Curlygoth Posté(e) le 3 décembre 2021 Posté(e) le 3 décembre 2021 oui tu as bon ! mais créer un type de ligne pour voir comment le dxf se genère et ensuite pouvoir le traité !! et programmer en conséquence Mon site Web (en cours de construction) : Site DA-CODE de @didier
DenisHen Posté(e) le 3 décembre 2021 Auteur Posté(e) le 3 décembre 2021 Mille mercis @Curlygoth pour ton aide. Mais je pense avoir découverts pourquoi j'étais dans l'erreur... Je posterais mon code VBA plus tard, pour qu'il puisse, éventuellement, être testé... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
DenisHen Posté(e) le 3 décembre 2021 Auteur Posté(e) le 3 décembre 2021 il y a 1 minute, Curlygoth a dit : oui tu as bon ! mais créer un type de ligne pour voir comment le dxf se genère et ensuite pouvoir le traité !! et programmer en conséquence C'est la seule et unique chose que j'ai faite, pour commencer à analyser le DXF issus de ce dessin "vierge"... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
DenisHen Posté(e) le 3 décembre 2021 Auteur Posté(e) le 3 décembre 2021 Donc, en fait... Si j'ai bien compris... Et ce n'est pas facile pour un cerveau comme le mien... Je fouille le fichier DXF jusqu'à un "AcDbLinetypeTableRecord", ensuite, je cherche le code DXF 2, je lis la ligne suivante, contenant le nom du type de ligne, et ensuite, je cherche un autre "AcDbLinetypeTableRecord" mais pas un autre "AcDb*"... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
(gile) Posté(e) le 3 décembre 2021 Posté(e) le 3 décembre 2021 Les lispeurs connaissent ça par cœur. Il faut considérer les propriétés comme des paires : le code de groupe suivi de la valeur correspondante. Chaque objet commence par un code de groupe 0 dont la valeur est le nom DXF de l'objet (pour un type de ligne : LTYPE). Exemple : 0 LTYPE 5 2A8 330 5 100 AcDbSymbolTableRecord 100 AcDbLinetypeTableRecord 2 AXES 70 0 3 Centre ____ _ ____ _ ____ _ ____ _ ____ _ ____ 72 65 73 4 40 50.8 49 31.75 74 0 49 -6.349999999999999 74 0 49 6.349999999999999 74 0 49 -6.349999999999999 74 0 Doit être lu comme : (0 . "LTYPE") => type d'entité (5 . "2A8") => handle (330 . "5") => handle de l'objet propriétaire (la table des types de lignes) (100 . "AcDbSymbolTableRecord") => Marqueur de sous-classe (100 . "AcDbLinetypeTableRecord") => Marqueur de sous-classe (2 . "AXES") => nom du type de ligne (70 . 0) => valeur de drapeau (dépendant d'une xref si bits 16, 32 ou 64) (3 . "Centre") => description (72 . 65) => code d'alignement (valeur ASCII de A) (73 . 4) => nombre d'éléments du type de ligne (40 . 50.8) => longueur totale du motif (49 . 31.75) => longueur du tiret, du point ou de l'espace (une entrée par élément) (44 . 0) => valeur de décalage (49 . -6.35) => longueur du tiret, du point ou de l'espace (74 . 0) => valeur de décalage (49 . 6.35) => longueur du tiret, du point ou de l'espace (74 . 0) => valeur de décalage (49 . -6.35) => longueur du tiret, du point ou de l'espace (74 . 0) => valeur de décalage Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
DenisHen Posté(e) le 5 décembre 2021 Auteur Posté(e) le 5 décembre 2021 Bonjour à tous. Un grand merci à toi @(gile)... J'ai fini par comprendre, et tu avais raison, je me noyais dans un verre d'eau, encore une fois... 😉 Voici le code que j'ai fini pas écrire qui fais ce que je souhaitais : Public Sub ImpTypLignDXF(control As IRibbonControl) NomFeuille = ActiveSheet.name 'Vidange de la colonne des types de ligne existants ***************** Lign = 2 Do While Sheets(NomFeuille).Cells(Lign, 55).Value <> "" Sheets(NomFeuille).Cells(Lign, 55).Value = "" Lign = Lign + 1 Loop 'Ouverture du DXF *************************************************** Fichier = Application.GetOpenFilename("Fichiers DXF,*.dxf") If Not Fichier = False Then Open Fichier For Input As #1 Else Exit Sub End If 'Suppression du chemin du fichier LIN ******************************* Sheets(NomFeuille).Cells(2, 55).Value = "" 'Lecture du DXF ***************************************************** Lign = 3 Do While Not EOF(1) Line Input #1, chaine$ If Trim(chaine$) = "AcDbLinetypeTableRecord" Then Do While Not EOF(1) Line Input #1, chaine$ If Trim(chaine$) = "2" Then Line Input #1, chaine$ Sheets(NomFeuille).Cells(Lign, 55).Value = Trim(chaine$) Lign = Lign + 1 Exit Do End If Loop End If Loop Close End Sub Je le poste si ça peu servir à d'autres... Je sais qu'il est un peu simple, voir simpliste, mais il est à ma portée et aussi à celle d'un novice... En plus, vu qu'il est de moi, je le comprend et pourrais le modifier si le cas se présente... Un grand merci à vous tous pour votre aide et votre patience... Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
DenisHen Posté(e) le 5 décembre 2021 Auteur Posté(e) le 5 décembre 2021 Bonjour à tous. Voilà, j'ai presque terminé mon classeur Excel. Pour l'instant, il fonctionne chez moi et est compatible avec les versions LT et complètes d'AutoCAD 2022. Je vous le "livre" en "béta test"... Pour le téléchargement, voir le message suivant, tout est "à jour"... Au début, je ne l'avais fais que pour moi, et ensuite, j'ai pensé aux collègues, et après, je me suis dis que les membres de CadXP étaient aussi des collègues, quelque part. Donc, je vous le partage... Vous pouvez en faire ce que vous voulez, il est libre de droit (sauf le code pour l'instant), mais j'aimerais avoir quelques retours (remarques, observations, options...), s'il vous plaît, pour le faire évoluer et ainsi, répondre aux besoin du plus grand nombre d'entre vous. Je pense que les icons parlent d'eux-mêmes, mais je vous fais un petit mode d'emploi très simple. Bien à toi, la communauté. Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
DenisHen Posté(e) le 5 décembre 2021 Auteur Posté(e) le 5 décembre 2021 Salut à toi, la communauté. J'ai travaillé toute l'après-midi... Je pense espérer que cette version fonctionne sur toutes les versions complètes d'AutoCAD, sauf explications données dans le PDF... Tout est dans le PDF du Zip... Cordialement... Denis... CréaCalques (Denis)_v1.01_Beta.zip Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Curlygoth Posté(e) le 6 décembre 2021 Posté(e) le 6 décembre 2021 Fait des function pour les réutiliser ! Une fonction pour lire le TXT Une pour mettre tes variables à 0 ou "" une autre pour chercher un fichier de cette manière te pourra les réemployer n'importe où ! et n'importe quand ! Mon site Web (en cours de construction) : Site DA-CODE de @didier
DenisHen Posté(e) le 7 décembre 2021 Auteur Posté(e) le 7 décembre 2021 Salut @Curlygoth. Merci beaucoup pour ta remarque, je vais la suivre... Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Curlygoth Posté(e) le 7 décembre 2021 Posté(e) le 7 décembre 2021 d'ailleurs une fonction d'importation de .bas est utile quand tu en serais à beaucoup de modules nommé XD (je l'ai pas encore fait mais je vais devoir le faire j'ai 53 modules...) Mon site Web (en cours de construction) : Site DA-CODE de @didier
didier Posté(e) le 7 décembre 2021 Posté(e) le 7 décembre 2021 Bonjour @DenisHen Sans parler de la programmation de ce genre de truc je me permets de déconseiller l'utilisation du type de ligne CONTINU. CONTINUOUS sera plus correct. Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
DenisHen Posté(e) le 7 décembre 2021 Auteur Posté(e) le 7 décembre 2021 Salut didier. Oui, j'ai tenu compte de ton observation, depuis un autre fils je crois. J'ai prévu, dans mon VBA, le remplacement automatique de "Continu" par "Continuous"... J'ai fais ce classeur Excel en tenant beaucoup compte de toutes les remarques des participants... Voici la ligne de code : If TypLign = 0 Or TypLign = "" Or TypLign = "Continu" Then TypLign = "Continuous" Si le type de ligne n'est pas définie : "0" (parfois Excel considère rien comme 0), vide ou "Continu", elle sera "Continuous". Merci à toi pour ce retour. Bien à toi. PS : j'ai en fait corrigé mon programme, maintenant, il vérifie si le type de ligne existe dans le liste des importations, sinon, ce sera "Continuous". Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
DenisHen Posté(e) le 9 décembre 2021 Auteur Posté(e) le 9 décembre 2021 Bonjour. J'ai modifié le ZIP d'origine. J'ai corrigé un petit bug dans le XLSM (importation depuis AutoCAD des types de ligne) et ajouté du contenu dans le PDF. Bien à toi, la communauté. Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
DenisHen Posté(e) le 13 décembre 2021 Auteur Posté(e) le 13 décembre 2021 Bonjour à tous. Suite à une demande, on peut désormais utiliser les couleurs classiques (de 1 à 255) et les couleurs RVB (de 1 à 256 par couleur, exemple : 53,156,242). J'ai mis à jour le ZIP d'origine. Bien à toi, la communauté. Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
DenisHen Posté(e) le 13 décembre 2021 Auteur Posté(e) le 13 décembre 2021 ZIP mis à jour. Correction sur la vérification de l'existence du fichier .lin et l'existence de types de ligne. Je suis actuellement sur l'importation des calques depuis AutoCAD (plus tard depuis un DXF)... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant