-
Compteur de contenus
12 247 -
Inscription
-
Dernière visite
-
Jours gagnés
209
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par (gile)
-
Salut, Tu peux utiliser l'attribut LispFunction pour créer une fonction LISP en .NET (comme on crée une commande avec CommandMethod). La méthode qui définit la fonction LISP ne prend qu'un argument de type ResultBuffer (une collection de TypedValue représentant les arguments de la fonction LISP) et peut renvoyer tout type de donnée compatible avec AutoLISP (CF l'énumération LispDataType utilisable pour les instances de TypedValue dans un Resultbuffer). Comme le dit Olivier, il faudra coder en C# la récupération des arguments (le ResultBuffer), le comportement de la boite de dialogue et la valeur de retour. Un peu plus d'explications et un exemple ici. Personnellement, j'ai bien sûr essayé des liaisons AutoLISP / .NET et même si c'est dans ce sens là que ça fonctionne le mieux (le moins mal plutôt), j'ai assez vite renoncé. Quand on commence à coder du .NET pour AutoLISP on s'aperçoit assez vite qu'il est plus simple de tout coder en .NET que de faire interagir les deux. Mais si tu veux tenter le coup, je peux essayer de te guider
-
[RESOLU] récupérer l'expression de CHAMP d'un TEXTE vers un ATTRIBUT
(gile) a répondu à un(e) sujet de rebcao dans Débuter en LISP
Salut, Retrouver l'expression du champ par les listes DXF n'est pas si simple, il faut chercher dans le dictionnaire d'extension du texte pour retrouver des objets imbriqués afin de reconstituer cette expression. Avec Visual LISP (COM/ActiveX), c'est plus facile: (vla-fieldcode (vlax-ename->vla-object mtext)) -
Salut, Quelle version d'AutoCAD cibles-tu ? Depuis AutoCAD 2010, il faut référencer AcCui.dll.
-
Au vu des réponses, j'avais mal dû lire / comprendre la demande. Je pensais qu'il s'agissait de polylignes closes, pas forcément rectangulaires.
-
Salut, J'avais fait cette petite vidéo pour montrer une méthode pour construire une expression LISP (command ...).
-
Salut, Ce que tu demandes me semble impossible sans programmation et bien difficile avec. Que faudrait-il faire quand on étire un sommet d'une polyligne (rectangulaire ou pas) pour en conserver l'aire ? Quel(s) autre(s) sommet(s) déplacer ? Dans quelle(s) direction(s) ? Etc.
-
[<= 2013] Rendre les calques verrouillés non sélectionnables (3, le retour)
(gile) a répondu à un(e) sujet de (gile) dans ObjectARX/DBX, C++, .NET, RealDWG
Salut, Je ne comprends pas la question. As-tu essayé, après avoir installé le plugin, de mettre la variable LAYLOCKSEL à 1 et de verrouiller le calque du nuage de points ? -
Cacher une boite DCL et laisser complètement la main
(gile) a répondu à un(e) sujet de alexbrabo dans LISP et Visual LISP
Salut, Avec DCL on ne peut faire que des boites de dialogue modales qu'il est possible de masquer la boite de dialogue pour laisser l'utilisateur effectuer une action précise à l'écran (spécifier un point, sélectionner un ou plusieurs objets, ...) et la boite s'affiche à nouveau une fois cette action terminée. Pour ce que tu veux faire, il faudrait une fenêtre non-modale (type palette par exemple) ce qui ne peut se faire directement en DCL. Il te faudrait utiliser une application tierce (OpenDCL ou ObjectDCL) ou un autre environnement de programmation. -
Salut, Coller le code sur la ligne commande charge la routine dans le dessin courant. Il faut ensuite la lancer en entrant le nom de la commande définie en LISP à savoir le nom de la fonction LISP moins le préfixe 'c:' ; dans le cas présent, le nom de la fonction est : c:balustrade donc le nom de la commande est BALUSTRADE. Pour plus de détails, voir ce sujet.
-
En même temps, les options, c'est un peu fait pour être changé...
-
Creer et modifier ordre attributs dans blocs
(gile) a répondu à un(e) sujet de lepetitrossi dans LISP et Visual LISP
On tourne en rond. Concernant l'organisation de la bibliothèque de bloc, voir ma question #6 et la réponse de lepetitrossi #7. Et concernant l'automatisation, on n'avancera pas tant qu'on aura pas une réponse détaillée à ma question #8. -
Creer et modifier ordre attributs dans blocs
(gile) a répondu à un(e) sujet de lepetitrossi dans LISP et Visual LISP
Si j'ai bien compris, la bibliothèque des blocs de lepetitrossi est constituée de fichiers DWG séparés, chaque fichier pouvant être inséré dans un dessin (et devenir un bloc dans ce dessin). Donc les modifications 'à la source' reviennent à modifier le contenu de l'espace objet du fichier qui devrait contenir les définitions d'attribut. -
Creer et modifier ordre attributs dans blocs
(gile) a répondu à un(e) sujet de lepetitrossi dans LISP et Visual LISP
Tu peux ouvrir, dans l'éditeur de bloc, toutes les définitions de bloc (dynamiques ou statiques) ainsi que l'espace objet du dessin. Pour ouvrir l'espace objet , ce qui devrait t'intéresser si tu veux modifier l'ordre des définitions d'attribut dans le fichier de ta bibliothèque: commande MODIFBLOC (_BEDIT) puis puis OK, tu peux ensuite utiliser ORDREATTBLOC (_BATTORDER). -
Ou encore, puisque LISP n'est qu'imbrications et traitement de listes :
-
Salut, Plusieurs choses : tu utilises une même variable elst pour différents types de données, AutoLISP le permet mais c'est une mauvaise pratique (généralement elst -pour entitylist- est utilisé pour une liste de données DXF telle que retournée par entget) ; tu construis une chaîne pour pour le groupe DXF 10 alors que ce groupe requiert une liste ; tu ne traites pas le groupe DXF 11 qui est déterminant pour les textes qui ne sont justifiés en bas à gauche. La programmation nécessite beaucoup de rigueur, surtout quand on utilise des langages à typage dynamique comme AutoLISP qui ne permettent pas de vérifier le type des variables avant l'exécution. Quand tu as une erreur, tu peux utiliser la méthode montrée dans le screencast ci-dessous pour arrêter l'interprétation du code à l'endroit de l'erreur et inspecter les variables à ce moment de l'exécution.
-
Creer et modifier ordre attributs dans blocs
(gile) a répondu à un(e) sujet de lepetitrossi dans LISP et Visual LISP
Si tu veux automatiser l'ajout d'attributs ou le tri des attributs, il faut que tu donnes plus de précisions. Aucun LISP ou autre programme ne peut deviner ce qu tu as en tête. Pour l'ajout d'une définition d'attribut dans un DWG, il faut préciser les paramètres de l'attribut comme dans la boite de dialogue de la commande ATTDEF. Pour le tri des attributs, il faut que tu donnes la règle de tri que tu veux employer. Si ces informations sont différentes pour chaque bloc / fichier, aucune automatisation n'est possible, autant le faire à la main. -
Creer et modifier ordre attributs dans blocs
(gile) a répondu à un(e) sujet de lepetitrossi dans LISP et Visual LISP
@lepetitrossi, Il faudrait aussi que tu précises comment est faite ta bibliothèque. Est-ce un dossier contenant un fichier DWG pour chaque bloc ou un fichier unique contenant toutes les définitions de bloc ? Ce n'est pas la même chose d'ajouter une définition d'attribut directement dans l'espace objet d'un DWG ou dans une définition de bloc. -
Creer et modifier ordre attributs dans blocs
(gile) a répondu à un(e) sujet de lepetitrossi dans LISP et Visual LISP
Salut, Je ne vois pas bien comment un LISP pourrait faire mieux que GESTATTB (_BATTMAN) pour ré-ordonner des définitions d'attributs. Dans tous les cas il faut bien traiter les blocs un par un pour modifier l'ordre à moins qu'il y ait une règle de tri non équivoque genre tri alphabétique. -
Et Javascript alors !!!???
(gile) a répondu à un(e) sujet de Fraid dans ObjectARX/DBX, C++, .NET, RealDWG
.NET est une plateforme de programmation qui regroupe un ensemble de produits et de technologies (Framework, CLR, etc). C# est un des langages supportés par .NET c'est en fait le langage créé spécifiquement pour .NET (VB .NET est une adaptation du Visual Basic à .NET). L'utilisation d'un ActiveX ADODB permet de créer un flux (stream) pour écrire dans un fichier texte avec d'autres encodages de caractères que l'ASCII (le seul supporté en AutoLISP classique). -
Et Javascript alors !!!???
(gile) a répondu à un(e) sujet de Fraid dans ObjectARX/DBX, C++, .NET, RealDWG
Si on fait de la programmation Web côté client, JavaScript est incontournable, donc, si on a une bonne connaissance de ce langage (impératif vu le nombre d'incohérences dont il regorge*) il peut être envisageable de l'utiliser dans AutoCAD, sinon, je dirais qu'il vaut mieux éviter et se tourner vers un environnement plus robuste et plus polyvalent comme .NET. * JavaScript est "le langage de programmation le plus détesté" avec une certaine constance depuis plusieurs années. Cet article explique plus en détail pourquoi. -
Et Javascript alors !!!???
(gile) a répondu à un(e) sujet de Fraid dans ObjectARX/DBX, C++, .NET, RealDWG
Je pense que l'apprentissage de JavaScript pour AutoCAD (avec tous handicaps que tu décris) n'est pas vraiment beaucoup plus simple que celui de .NET (C#) et .NET est tellement plus puissant. -
Il s'agit bien d'une liste LISP classique mais dont les éléments (obj1 obj2 obj3) sont de type VLA-OBJECT, c'est à dire l'équivalent vla d'un ENAME (on convertit d'un type à l'autre avec vlax-ename->vla-object ou vlax-vla-object->ename). C'est à mon avis la principale difficulté, si tu regardes l'aide pour l'objet SortentsTable (ou si tu fais un vlax-dump-object), tu verras qu'il n'y a une méthode GetFullDrawOrder qui permet de récupérer la collection des objets contenus dans la définition de bloc triés par ordre de tracé, mais ces objets ne sont pas ceux de ta nouvelle définition de bloc (il n'ont pas le même identifiant) il va donc falloir les comparer pour trouver les nouveaux objets correspondants aux anciens. Quand tu es face à un objet "vla" (COM/ActiveX), tu cherches dans l'aide aux développeurs section Reference ActiveX ou tu utilises la fonction vlax-dump-object qui te renvoie la liste des propriété (et leurs valeurs) plus les méthode si tu spécifie T comme deuxième argument.
-
Salut, L'ordre de tracé est stocké dans un objet "ACAD_SORTENTS" (de type AcDbSortentsTable) qui est une entrée du dictionnaire d'extension d'un "enregistrement de bloc" (AcAdBlockTableRecord) soit un espace ou une définition de bloc. Sur cette page, le fichier gc_Sortents.lsp fournit une bibliothèque de fonctions LISP pour gérer les ordres de tracé.
-
Le post "Les LISP de gile" est très loin de contenir toutes les routines que j'ai posté sur CADxp.
-
Salut, Regarde la routine ListBlocks.
