Patrick_35 Posté(e) le 17 juillet 2007 Posté(e) le 17 juillet 2007 SpeedySi tu coches la case comme indiquée dans l'image, les blocs insérés lors du dernier traitement seront effacés, ce qui permet donc une mise à jour. http://img520.imageshack.us/img520/1155/ixlpy4.jpg LecrabeMerci pour tous tes tests @+ [Edité le 18/7/2007 par Patrick_35] Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
pingoo666 Posté(e) le 18 juillet 2007 Posté(e) le 18 juillet 2007 Bon, je veins de faire un test avec 36528 blocs de 10 attributs chacuns et ca marche. génial ce lisp !
speedy Posté(e) le 31 juillet 2007 Posté(e) le 31 juillet 2007 Bonjourvoici un bout de code vba pour excel pratique avec ixl, si il y a mieux...... Public Sub Extraire_Attributs()Dim AcadApp As AutoCAD.AcadApplicationDim SelSet As AutoCAD.AcadSelectionSetDim FilterType(0) As IntegerDim FilterData(0) As VariantDim FiltersType, FiltersData As VariantDim i, Row, j, Column As IntegerDim Entity As AcadEntityDim BlocRef As AcadBlockReferenceDim Attributes As VariantDim ColumnExist As Boolean 'modifié par Michel a pour version ixl 1.01 ' Efface toutes les données contenues dans la feuille Range("1:65536").ClearContents ' On lance AutoCAD Set AcadApp = New AutoCAD.AcadApplication ' On remets Excel au premier plan (le lancement d'AutoCAD désactive la fenêtre Excel) Application.Visible = True ' On demande le nom du fichier à ouvrir Cells(1, 28).Value = Application.GetOpenFilename("Dessins AutoCAD (*.dwg), *.dwg") ' Remplissage de l'entête du tableau Cells(1, 1).Value = "Nom du bloc" Cells(1, 2).Value = "Calque" Cells(1, 3).Value = "X" Cells(1, 4).Value = "Y" Cells(1, 5).Value = "Z" Cells(1, 6).Value = "Rotation" Cells(1, 7).Value = "Echelle" Cells(1, 27).Value = "Handle" ' On ouvre le fichier dans AutoCAD AcadApp.Documents.Open (Cells(1, 28).Text) Row = 2 ' 1ère ligne du tableau ' On crée un jeu de sélection Set SelSet = AcadApp.ActiveDocument.SelectionSets.Add("SELSET") ' On prépare un filtre de sélection sur les insertions de bloc FilterType(0) = 0 FilterData(0) = "INSERT" FiltersType = FilterType FiltersData = FilterData ' Sélection des entités SelSet.Select acSelectionSetAll, , , FiltersType, FiltersData ' On balaye le jeu de sélection For i = 0 To SelSet.Count - 1 Set Entity = SelSet.Item(i) ' Si l'objet est une insertion de blocIf Entity.ObjectName = "AcDbBlockReference" Then' On précise le type de l'objet pour pouvoir accéder à ses propriétés et' ses méthodes spécifiquesSet BlocRef = EntityCells(Row, 1) = BlocRef.NamePoint = BlocRef.InsertionPointCells(Row, 2) = BlocRef.LayerCells(Row, 3) = Point(0)Cells(Row, 4) = Point(1)Cells(Row, 6) = BlocRef.RotationCells(Row, 5) = Point(2)Cells(Row, 7) = BlocRef.XScaleFactor ' Si il a des attributs If BlocRef.HasAttributes Then Cells(Row, 1).Value = BlocRef.Name Cells(Row, 27).Value = BlocRef.Handle ' On les récupére Attributes = BlocRef.GetAttributes ' On parcourt le tableau For j = LBound(Attributes) To UBound(Attributes) ' On recherche si une colonne existe déjà pour cette étiquette d'attribut Column = 8 ColumnExist = False While Not IsEmpty(Cells(1, Column)) If Cells(1, Column).Text = Attributes(j).TagString Then ' Une colonne existe, on la remplit avec la valeur de l'atribut Cells(Row, Column).Value = Attributes(j).TextString ColumnExist = True End If Column = Column + 1 ' On passe à la colonne suivante Wend If Not ColumnExist Then ' Aucune colonne n'existe, on en crée une et on la remplit Cells(1, Column).Value = Attributes(j).TagString Cells(Row, Column).Value = Attributes(j).TextString End If Next ' Attribut suivant Row = Row + 1 ' Ligne suivante End If End If Next ' On ferme AutoCAD AcadApp.Quit MsgBox "Les attributs du dessin " & Cells(28, 1).Text & " ont été extraits avec succès."End Sub @+ Michel a
twisterpro Posté(e) le 24 avril 2008 Posté(e) le 24 avril 2008 Salut patrick_35 je suis sous la version 2008 et ... problème... je ne sais pas s'il est de moi ou de la cversion ou quoi je demande explication...Le problème est le suivant :Il est possible d'insérer les bloc après moification des attributs... jusque là OK mais... les bloc sont insérés avec une rotation qui ne respecte pas celle du bloc initial ce qui crée un décalage parasite... De plus la case "effacer le bloc déjà inséré" est grisée et on ne peux pas y toucher par chance elle est quand meme coché le problème est qu'il ne m'efface pas le bloc inséré.. Merci à tous ceux qui pourront m'aider Et un grand bravo à patrick_35 pour tout ce travail!!!! Félicitation
papyrus1985 Posté(e) le 24 avril 2008 Posté(e) le 24 avril 2008 Salut patrick, Serait il possible de rendre ton lisp compatible avec les tableurs (Excel, OpenOffice, ...) via un fichier texte csv ? Cyprien Utilisateur AutoCAD depuis la R12 Longue Vie à CADxp
megadom195 Posté(e) le 9 avril 2010 Posté(e) le 9 avril 2010 Bonjour, J'ai essayé ce lisp et malheureusement pour moi, du fait de ma grande ignorance, il ne fonctionne pas sur ma bécane. Autocad me renvoi la boîte de dialogue "Fichier IXL.DCL introuvable." Je suis largué Help! Merci
(gile) Posté(e) le 9 avril 2010 Posté(e) le 9 avril 2010 Salut, Le fichier DCL doit être enregistré dans un répertoire du chemein de recherche des fichiers de support d'AutoCAD (boites de dialogue Options... > onglet Fichiers) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 9 avril 2010 Posté(e) le 9 avril 2010 Bonjour à toutes et tous, Bienvenue megadom195, Le fichier .dcl gère les boites de dialogues utiles au lisp. Il faut donc que les deux fichiers (.lsp et .dcl) soit dans un dossier de recherche des supports AutoCAD,... Un p'tit tour sur ce post,...(4 Boites de dialogue (DCL) en particulier puisque tu semble connaitre l'utilisation et le chargement de lisps),... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
megadom195 Posté(e) le 9 avril 2010 Posté(e) le 9 avril 2010 Merci à tous... C'est trop cool! Et ça marche Bonne journée
chul Posté(e) le 12 juillet 2010 Posté(e) le 12 juillet 2010 Bonjour à tous, Je suis nouveau sur ce site et par conséquent aussi sur ce forum. Je suis aussi nouveau sur AutoCAD. Je suis AutoCAD 2008. J'ai testé le progamme IXL V1.03 et il marche nickel. Par contre j'aimerai demander à Patrick_35 (ou à tout autre developpeur) s'il était possible d'avoir un programme similaire mais en VB cette fois. Merci,
Patrick_35 Posté(e) le 13 juillet 2010 Posté(e) le 13 juillet 2010 Salut Quelle demande surprenante.Je ne connais pas le vb, ou très mal, mais si tu veux traduire.... @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
chul Posté(e) le 13 juillet 2010 Posté(e) le 13 juillet 2010 Tout d'abord, merci pour ta réponse rapide. En fait c'est mon supérieur qui tiens absolument que la progrmmation soit faite en VB (VBA plus exactement) car ce langage est plus répandu que du LISP. Etant aussi grand débutant dans ce langage de programmation, j'avoue que j'aurai des difficultés montres à faire une quelconque traduction et par conséquent je ne préfère pas trop m'y aventurer.
Patrick_35 Posté(e) le 13 juillet 2010 Posté(e) le 13 juillet 2010 Tu peux dire à ton chef que VBA va disparaître au profit de VB.NETC'est Microsoft qui l'abandonne et Autodesk ne fait que suivre. J'ajouterai une chose, c'est que le lisp est un language natif d'Autocad. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
(gile) Posté(e) le 13 juillet 2010 Posté(e) le 13 juillet 2010 Salut, car ce langage est plus répandu que du LISP Pour quelles applications ? (rappel : VBA = Visual Basic for Application)Pour les applications Microsoft Office, certainement. Mais pas pour AutoCAD.L'immense majorité des routines pour AutoCAD est écrite en LISP.De plus, comme le dit Patrick_35 à moins d'être sûr de ne jamais vouloir utiliser de versions d'AutoCAD postérieures à 2011 (qui devrait être la dernière à supporter VBA) ni passer aux processeurs 64 bits (qui supportent très mal VBA), privilégier VBA est une aberration. VBA va disparaître au profit de VB.NET Ce n'est pas tout à fait exact, VBA va disparaître et Microsoft comme Autodesk conseillent de migrer vers .NET (qui supporte plusieurs langages dont VB.net).Si le choix de VB.net peut paraître évident pour ceux qui ont le courage de passer de VBA à .NET (je dis courage parce que l'apprentissage est plus difficile), je persiste à penser que ce n'est pas forcément judicieux.Certes les syntaxes VB, VBA, VB.net sont très proches (avec les mêmes lourdeurs) mais la question de la syntaxe est vraiment minime par rapport à l'apprentissage de l'environnement .NET et de la Programmation Orientée Objet.À mon avis changer aussi de syntaxe (pour C# qui est le langage développé spécifiquement pour .NET) permet plus facilement d'aborder .NET comme quelque chose de complètement différent et de se débarrasser des (pas toujours bonnes) habitudes acquise avec VBA. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lecrabe Posté(e) le 13 juillet 2010 Auteur Posté(e) le 13 juillet 2010 Hello +1 avec (gile) , +1 avec Patrick_35 Le VBA n'est plus supporte par Autodesk et il est officiellement abandonne !Autodesk fournissait en option le VBA sur les versions 2010 & 2011 , "gentiment" si on peut dire !? C comme tu le sens ! Le Decapode Autodesk Expert Elite Team
Invité simonG Posté(e) le 1 février 2011 Posté(e) le 1 février 2011 bonjour, j'ai parcourue votre echange et la problématique m'interesse, dans votre cas exel n'est qu'un tableau de donnée et le programme en lisp parcours ce tableau pour remplir un dessin autocad, est bien cela? pouvez vous me dire si le programme en VB remplace le programme lisp? quelqu'un saurait la routine pour affecter des valeurs d'attribut aux blocs via un programme sous VBA excel? merci
Novice_python Posté(e) le 23 mars 2015 Posté(e) le 23 mars 2015 Bonjour à tous, J'ai également essayé le lisp IXL, mais ce dernier ne fonctionne toujours pas. En effet, Autocad me renvoie la boîte de dialogue "Erreur : type d'argument incorrect: VLA-OBJECT nil." J'ai un peu de mal à comprendre d'où cela peut-il venir ? Merci d'avance
DenisHen Posté(e) le 24 mars 2015 Posté(e) le 24 mars 2015 Bonjour, As-tu tenté d'utilisé ExcelAttribute, C'est le top... 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)
bavmorda1 Posté(e) le 27 novembre 2015 Posté(e) le 27 novembre 2015 Salut,le programme detaillé ici pour une insertion de bloc auto m'interesse fortement mais impossible d'avoir une page encore active. Y a t'il quelqu'un qui l'aurait encore de coté?Merci d'avance
DenisHen Posté(e) le 27 novembre 2015 Posté(e) le 27 novembre 2015 Je viens d'essayer le lien que j'ai placé dans mon précédant post... Il fonctionne chez moi... Je ne sais pas comment t'aider... 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)
bavmorda1 Posté(e) le 3 décembre 2015 Posté(e) le 3 décembre 2015 Non c'est plutot les autres prog que je peux pas prendre, ceux qui permettent d'inserer un bloc automatiquement depuis excel.Mais pas celui qui permet de faire des mises à jour comme Attin et out
Ghislano Posté(e) le 23 avril 2018 Posté(e) le 23 avril 2018 Bonjour, C'est avec un grand intérêt que j'ai suivi vos échanges sur le ixl de patrick. mais je ne trouve malheureusement pas la réponse à mon problème : J'obtiens après avoir lancé le traitement le message d'erreur suivant : " impossible de trouver le bloc " Un_Bloc" indiqué dans la cellule "A9" de la feuille...etc" C'est peut être une question bête mais l'IXL ne doit-il pas justement en créer sous AutoCAD à partir des info+attributs renseignés dans l'EXCEL ? Pourriez-vous éclairer ma lanterne ? :) Je vous en remercie par avance, Ghislano PS : un grand merci à Patrick !
Patrick_35 Posté(e) le 24 avril 2018 Posté(e) le 24 avril 2018 Salut C'est peut être une question bête mais l'IXL ne doit-il pas justement en créer sous AutoCAD à partir des info+attributs renseignés dans l'EXCEL ?Non, le lisp ne créé pas le bloc, mais insère celui-ci dans le dessin depuis les infos données sur la feuille Excel.Le bloc doit donc être existant dans le dessin. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Ghislano Posté(e) le 24 avril 2018 Posté(e) le 24 avril 2018 Salut Non, le lisp ne créé pas le bloc, mais insère celui-ci dans le dessin depuis les infos données sur la feuille Excel.Le bloc doit donc être existant dans le dessin. @+ Je te remercie pour ta réactivité Patrick. Je me permets de t'expliquer ma problématique :-j'ai dessiné sur un plan 10 bureaux-à chaque bureau correspond un numéro de position, le nom, le prénom d'un personne recensé dans un tableau excel.-j'ai donc créer manuellement un bloc que j'ai nommé ETIQUETTE dans un calque ETIQUETTES à côté de chaque bureau avec les attributs correspondants aux informations mentionnées plus haut. Pour toutes modifs sur les ETIQUETTE, les fonctions ATTIN et ATTOUT me simplifient la vie. j'ATTOUT, je modifie l'excel créé puis j'ATTIN le tour est joué. Par contre maintenant que j'ai dessiné 100 bureaux, créer manuellement les 100 blocs avec attributs pour faire un ATTOUT/modif/ATTIN à partir de mon tableau excel me semble inutilement chronophage ( je parle bien sur de la création a la mano de 100 blocs repérant les positions) IL y a-t- il un moyen d'utiliser les fonctionnalités d'IXL ( ou autre) pour gagner du temps ? Merci pour vos lumières !
Patrick_35 Posté(e) le 25 avril 2018 Posté(e) le 25 avril 2018 Du point de vue des ressources, il est inutile de créer un bloc unique pour un bureau unique, sauf si tu utilises les extractions de données.Créer un bloc est très facile avec la commande bloc.IXL n'est pas prévu pour ton besoin. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
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