CadFrank Posté(e) le 7 août 2012 Posté(e) le 7 août 2012 Bonjour à tous, Je cherche à créer une routine lisp pour faire le décompte d'item particulier. J'ai déja trouvé un program concu par Lee Mac qui fonctionne à merveille par contre il compte tous les blocs. Et moi je cherche à faire en sort qu'il ne compte que ceux qui sont important. J'aimerais si possible savoir ce que je devrais utilisé comme fonction pour y arrivé. Merci !
(gile) Posté(e) le 7 août 2012 Posté(e) le 7 août 2012 Salut, Difficile de t'aider avec aussi peu de précisions...Que fait le LISP de Lee Mac (donne un lien vers le LISP) ?Qu'est ce qui caractérise les "blocs importants" ? Programmer c'est parler à une machine qui ne fera qu'exécuter les instructions explicites qu'on lui passe.Si nous ne sommes pas des machines, il nous faut quand même connaître un minimum les données d'un problème pour essayer d'y répondre... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
CadFrank Posté(e) le 7 août 2012 Auteur Posté(e) le 7 août 2012 Ce que j'aimerais avoir c'est pas mal la meme chose mais que la liste des blocs choisi pour etre compté sois déterminé
(gile) Posté(e) le 7 août 2012 Posté(e) le 7 août 2012 Toujours aussi peu clair... Si tu ne fais pas un effort pour expliciter ce que tu veux faire (et pour l'orthographe*), je renonce.As-tu essayé le LISP SSD dans Special_Selections (comme te l'avais conseillé Patrick_35 dans un autre sujet) ? tu devrais pouvoir t'inspirer du code. * Je n'arriverais jamais à comprendre comment on peut être aussi négligeant avec l'orthographe quand on a la prétention de vouloir écrire du code qui ne supporte pas la moindre erreur de syntaxe. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
CadFrank Posté(e) le 7 août 2012 Auteur Posté(e) le 7 août 2012 Umm ben je sais pas comment etre plus clair mais je vais essayer. De un j'ai une bibliothèque de blockdynamic. chaque block a des visibility states. Je veux etre capable de faire le decompte de ses visibilitystate ainsi que des look up. Par contre ce ne sont pas chaque item que je veux compter mais seulement un certaine quantité. Celui de Lee Mac compte tout les blocks du dessin. Ce que je ne veux pas faire. mon but est de faire le décompte des items sur une vue en plan et non sur mes élévations et coupes. Dsl pour l'écrit.
didier Posté(e) le 8 août 2012 Posté(e) le 8 août 2012 Coucou Lee Mac est une pointure et le principe de son site est de montrer les possibilités en étant didactique. il est certain que si tu veux quelque chose de ressemblant, il va falloir s'y coller.le squelette est fourni, à toi (ou d'autres) de mettre la viande autour (moi je dis que c'est de la métaphore de course). au début de CadXP (c'était mieux avant, hein ?) les gens ne demandaient pas ainsi des programmes clés en mainceci explique la rareté de ma présence qui se terminera par un pur abandon. poue en revenir à CadFranck (on se connaît ?) il faut donner des exemples, il faut passer des pièces jointes, faire des croquis en disant : çà je veux le lister avec une flèche qui montre l'objet et ses caractéristiques qui le différencient des autres. aide-nous à t'aider. amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
usegomme Posté(e) le 8 août 2012 Posté(e) le 8 août 2012 Coucoules gens ne demandaient pas ainsi des programmes clés en mainceci explique la rareté de ma présence Les lisp aux lispeurs en somme ! La musique aux musiciens etc... Bel esprit pour un philosophe et ce n'est pas l'esprit d'internet même si certains exagèrent malheureusement. En tout cas j'ai été heureux toutes ces années de pouvoir bénéficier de quelques développements que je suis incapable de produire même avec la meilleure des volontés. De chacun selon ses moyens,À chacun selon ses besoins Cordialement
didier Posté(e) le 8 août 2012 Posté(e) le 8 août 2012 coucou c'est une habitude d'être mal interprété aussi je n'y attache que très peu d'importance. ce que je voulais dire, c'est que poser des questions en montrant où on en est de ses propres recherches et argumenter ses désirs par des pièces jontes et des copies d'écran est différent que de demander tout simplement en appuyant sur le bouton si tu as compris "le lisp aux lispeurs" c'est que je me suis vraiment très mal exprimé, désolé. pour revenir à la question on n'en sait toujours pas plus... amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
x_all Posté(e) le 8 août 2012 Posté(e) le 8 août 2012 bonjour je m'incruste un peu sur le sujet. j'aime beaucoup spécial-sélection et je m'en sert plus que souvent.Mais je crois comprendre le besoin de CadFrank car c'est une réfection que je me fait parfois... Il m'arrive de vouloir faire une sélection filtrée sur une partie du dessin et pas sur sa totalité. par exemple je veux sélectionner toutes les menuiseries du 1er étage, mais sur mon plan j'ai 4 étage, donc quand je fait ssl et mon calque menuiserie, j'ai 3 étage de trop... le top du top, ce serai d'inclure une option pour faire le ssl sur une sélection..... je fait une fenêtre de sélection sur mon 1er étage, puis ssl une menuiserie et je me retrouverai avec les seules menuiseries du 1er de sélectionnéesmais comme je suis pas sur que ce soit trivial comme modif, je me suis toujours débrouiller sans... du genre,si il y a une sélection alors faire ss(option) sur cette sélectionsi pas de sélection faire ss(option) sur le totalité du dessin... pas sur que ce soit aussi simple vu la taille du lisp :) quelques trucs sur autocad
CadFrank Posté(e) le 8 août 2012 Auteur Posté(e) le 8 août 2012 Re bonjour Bon Bien je savais bien que quelqu'un me comprendrais bien :D Merci X_all. et pour revenir au program je jvoudrais etre capable de le faire par moi meme. Je veux juste etre pointé dans la bonne direction si possible. Le type de fonction que je devrais prendre ou si il est mieu que je le fasse en lisp standard ou bien avec les vla, vlax etc (genre safearray ou variant le genre de tralala!) Et voila!
(gile) Posté(e) le 8 août 2012 Posté(e) le 8 août 2012 Salut, Je vais essayer de répondre aux dernières interventions. x_all,Les LISPs de Spécial_Selections ont été fait pour fournir des moyens (très) rapides de sélectionner tous les objets d'un dessin suivant une propriété. Pour la plupart, les premiers en tout cas, le code ne fait qu'une dizaine de lignes. J'ai reçu maintes demandes pour y ajouter des fonctionnalités qui les auraient rendues à mon gout trop proches des commandes natives : SELECTRAP ou FILTRER. Par ailleurs, les LISP que j'ai pu publier ici ou là l'ont été plus parce que ça m'intéressait de les écrire et de les partager que parce que ça répondait à une demande spécifique.Ceci fait la transition avec les réponses que je voulais faire à usegomme et Didier. Je pense comprendre la réponse de Didier parce qu'il m'arrive de plus en plus souvent d'être lassé par les demandes spécifiques de programmes tout fait, à fortiori quand le demandeur ne fait pas d'effort pour décrire clairement ce qu'il veut et qu'il considère comme un dû que "l'internet" lui fournisse des outils gratuits pour lui faire gagner du temps dans son travail (en clair, de l'argent).J'ai probablement une responsabilité non négligeable dans le développement de ce genre d'attitude pour avoir (peut-être) trop donné sans compter... Répondre à des demandes, quand le sujet intéresse, est un formidable moyen d'apprendre pour celui qui (ou ceux) qui tentent de répondre, je pense que d'autres comme bonuscad ou Patrick_35 pour ne citer que les plus prolixes parmi les anciens ne me contrediront pas. Partager les solutions est aussi le meilleur moyen de faire tester les programmes. Il me semble que d'autres l'ont bien compris, entre autre usegomme. Si s'entendre dire que la routine qu'on a écrite fonctionne bien et satisfait la demande flatte l'ego, rien ne peut faire plus plaisir que de susciter des vocations et voire des débutants progresser à l'aide de ce qu'on a pu fournir (j'arrête de donner des noms, ils se reconnaitront). Quant à la maxime :"De chacun selon ses moyens,À chacun selon ses besoins"je rappellerai que c'est une maxime communiste (au sens premier du terme) qui veut décrire un monde de partage (sans classes, sans État, sans argent) qui est bien loin d'être celui dans lequel on vit aujourd'hui. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
x_all Posté(e) le 8 août 2012 Posté(e) le 8 août 2012 @(gile)je comprend bien ton point de vue... et étant moi même un piètre contributeur...je demande souvent...et dis merci :) @CadFranksi tu as des aptitudes à la programmationje donne peut etre une piste: s'appuyer sur spécial_selection et y ajouter la fonctionnalité que je propose apparemment, tu as besoin de la routine ssd et de tester s'il y a une sélection en entrée ou pas.j'ai l'idée, mais pas la sciencessd (suivant les valeurs de paramètres de blocs dynamiques). De un j'ai une bibliothèque de blockdynamic. chaque block a des visibility states. Je veux etre capable de faire le decompte de ses visibilitystate ainsi que des look up. et pour revenir au program je jvoudrais etre capable de le faire par moi meme tu sélectionne ta zone, et tu applique ssd sur cette seule zone il suffit de récupérer la longueur de la sélection ou simplement de la lire dans la fenêtre des propriétés si tu arrive à lire le code de (gile) et que tu connais le lisp je crois bien qu'il y a moyen de s'en sortir, mais je ne saurai évaluer la complexité d'une telle tache dans un quelconque des langage que tu cites.je ne crois pas que (gile) soit offusqué qu'on s'appuie sur une de ces routine tant il a écrit de lignes de code pour ce forum... quelques trucs sur autocad
(gile) Posté(e) le 8 août 2012 Posté(e) le 8 août 2012 si tu arrive à lire le code de (gile) et que tu connais le lisp je crois bien qu'il y a moyen de s'en sortir, mais je ne saurai évaluer la complexité d'une telle tache dans un quelconque des langage que tu cites.je ne crois pas que (gile) soit offusqué qu'on s'appuie sur une de ces routine tant il a écrit de lignes de code pour ce forum... J'ai proposé SSD dès la réponse 5.SSD permet, une fois les critères établis dans la boite de dialogue, de sélectionner soit sur tout le dessin, soit par sélection classique.Ce n'est certainement pas le code le plus facile à comprendre, mais on ne peut accéder aux propriétés des blocs dynamique qu'avec Visual LISP (COM/ActiveX), c'est le prix à payer quand on se fixe des objectifs à ce niveau. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
x_all Posté(e) le 8 août 2012 Posté(e) le 8 août 2012 edit----------------pwha!!!!je vien de lire la description détaillée de ssd... ..... je sort.... quelques trucs sur autocad
CadFrank Posté(e) le 8 août 2012 Auteur Posté(e) le 8 août 2012 Bon j'apprécie tout les commentaires.. bref tout l'info... Comme je suis une peu nouveau à la programmation lisp ou Visual Lisp.. je ne saisit pas toujours ce que les codes dise bien. Je m'explique, je lis les fonction utilisé mais je ne sais pas pourquoi le programmeur les a utilisé. J'aimerais savoir si il y a une approche particulier a utiliser quand je lis un code que je n'ai pas ecrit. Car souvent les codes code on quelque peu de ligne. Je réussi bien a utilisé le Vlide. De plus il y a tellement de fonction différente dans le language que ce n'est pas toujour facile de savoir si c'est le bon. Merci encore !
(gile) Posté(e) le 8 août 2012 Posté(e) le 8 août 2012 J'aimerais savoir si il y a une approche particulier a utiliser quand je lis un code que je n'ai pas ecrit. Car souvent les codes code on quelque peu de ligne. Je réussi bien a utilisé le Vlide. À mon avis la meilleure approche pour apprendre est d'écrire soi-même des fonctions (simples au début puis de plus en plus complexes) et de les finaliser tout seul : c'est en faisant des erreurs et en les corrigeant qu'on apprend, pas en recopiant des bouts de code qui fonctionnent mais qu'on ne comprends pas.Utiliser l'aide aux développeurs (AutoLISP References) et surtout tester, tester et encore tester dans la console Visual LISP.Lire des codes écrits par d'autre est certes aussi un moyen d'apprendre à condition de comprendre ce qu'on lit.Le problème quand on lit des codes écrit par d'autre, n'est pas une question de nombre de lignes. Surtout si tu lis des codes écrit par des LISPeurs aguerris et de plus fanatiques de la concision comme Lee Mac, moi, ou pire, le maitre Evgeniy Elpanov. Amoureux de la syntaxe du LISP, nous avons une fâcheuse tendance à écrire en 4 lignes non documentées ce que d'autres auraient écrit de façon plus accessible pour le profane en 10 ou 20 lignes commentaires compris. Je pense qu'il est beaucoup plus facile de comprendre des routines parfois longues écrites par usegomme (par exemple) que certaines écrites par Evgeniy. De plus il y a tellement de fonction différente dans le langage que ce n'est pas toujour facile de savoir si c'est le bon.Il n'y en a vraiment pas tant que ça et les fonctions ne sont que le vocabulaire du langage que l'on ne peut comprendre qu'utilisé dans une grammaire : la syntaxe. Comme dans tout apprentissage, il faut y aller progressivement, en commençant par apprendre à utiliser les fonctions de base AutoLISP et la syntaxe. AutoLISP (pur) ne connait qu'environ 250 fonctions (dont certaines sont très peux utilisée) ce qui est fort peu et permet de faire énormément de choses. On pourra ensuite y ajouter les fonctions vl-* qui sont aussi des fonctions AutoLISP (même si elles sont arrivées en même temps que Visual LISP.Ce qu'on appelle Visual LISP à savoir l'utilisation de l'interface COM/ActiveX et des réacteurs doit à mon vis être considéré comme une nouvelle étape. Même si certaines choses sont plus facile à coder avec les fonctions vla-*, la syntaxe est un peu différente (plus proche des styles de programmation procédurale que de la programmation fonctionnelle d'où est issue AutoLISP), mais ne devrait pas être un gros obstacle si on a déjà acquis quelques bases. Avec COM (fonctions vla-*) c'est plus à un problème de vocabulaire qu'on aura à faire. Les 3 principales fonctions : vla-get-, vla-put- et vla- s'utilisent avec les propriétés et méthodes des objets de l'Object Model de l'API COM d'AutoCAD qui sont assez nombreux (même si c'est incomparablement beaucoup moins que les classes de l'API ObjectARX ou .NET).Depuis 2010 l'aide ActiveX (l'aide VBA en fait) est cachée dans :%programfiles%/Common Files/Autodesk Shared/acadauto.chm Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
CadFrank Posté(e) le 9 août 2012 Auteur Posté(e) le 9 août 2012 Encore une fois gile je te remercie de tes conseille. Très apprécié ! Donc, d'après ce que tu as dit des petits programme serait le début de tout. Merci encore Salutations !
PHILPHIL Posté(e) le 10 août 2012 Posté(e) le 10 août 2012 hello pour une fois et surtout grace aux autres j'ai peut etre ta réponseregarde ici http://cadxp.com/index.php?/topic/26983-tableau-de-bloc-encore/page__p__147620__hl__tbc5__fromsearch__1#entry147620 apres si tu recheches a lister tjrs les meme nom de blocsil faut changer "parnomblocs" par une liste que tu connais ou (ssget (list '(0 . "INSERT") (cons 2 (strcat "*" parnombloc1 "*,`*U*")) ) ) par (ssget (list '(0 . "INSERT") (cons 2 (strcat "*" wc "*,strcat "*" porte "*,strcat "*" fenetre "*)) ) ) et le tour est joué et apres tu selectionnes par secteur sur ton fichier a+ phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
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