Aller au contenu

Program qui ferais le décompte


Messages recommandés

Posté(e)

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 !

Posté(e)

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

Posté(e)

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

Posté(e)

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.

Posté(e)

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 main

ceci 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

Posté(e)

Coucou

les gens ne demandaient pas ainsi des programmes clés en main

ceci 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

Posté(e)

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

Posté(e)

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ées

mais 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élection

si pas de sélection faire ss(option) sur le totalité du dessin

...

 

pas sur que ce soit aussi simple vu la taille du lisp

 

:)

Posté(e)

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!

Posté(e)

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

Posté(e)

@(gile)

je comprend bien ton point de vue... et étant moi même un piètre contributeur...je demande souvent...et dis merci :)

 

@CadFrank

si tu as des aptitudes à la programmation

je 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 science

ssd (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...

Posté(e)
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

Posté(e)

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 !

Posté(e)

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

Posté(e)

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 !

Posté(e)

hello

 

pour une fois et surtout grace aux autres j'ai peut etre ta réponse

regarde 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 blocs

il 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

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité