kclement Posté(e) le 19 avril 2010 Posté(e) le 19 avril 2010 Ce matin, j'ai fait un rêve : J'avais des points altimétriques (un bloc composé dun point et d'un seul attribut) et j'ai rêvé qu'en choisissant deux blocs, un lisp me donnait la pente (en %) en récupérant la distance entre les 2 blocs et la valeur de leur attribut... Puis je me suis réveillée, et là j'ai espéré que les gentils membres de CadXP pourraient programmer un lisp capable de faire ça... (parce que même dans mes rêves les plus fous je ne saurais jamais programmer un de ces lisp !) Merci d'avance... kclement
zebulon_ Posté(e) le 19 avril 2010 Posté(e) le 19 avril 2010 Bonjour, parce que même dans mes rêves les plus fous je ne saurais jamais programmer un de ces lisp ! Un brin d'exagération ;) Personnellement, mes rêves les plus fous n'ont pas pour objet des lignes de code. Chacun ses fantasmes, on n'est pas là pour juger. Est-ce que le bloc est positionné à l'altitude indiquée par l'attribut ou est-ce qu'il se traîne bêtement à l'altitude 0 ? Dans le premier cas on pourrait faire ceci, sans se préoccuper de l'attribut (defun c:pnpt (/ b1 b2 pt1 pt2 DZ DL PENTE) (prompt "\nsélectionner le 1er bloc") (setq b1 (car (entsel))) (prompt "\nsélectionner le 2ème bloc") (setq b2 (car (entsel))) (setq pt1 (cdr (assoc 10 (entget b1)))) (setq pt2 (cdr (assoc 10 (entget b2)))) (setq DZ (- (caddr PT2) (caddr PT1))) (setq DL (distance (list (car PT1) (cadr PT1)) (list (car PT2) (cadr PT2)) ) ) (setq PENTE (/ DZ DL)) (alert (strcat "Delta Z : " (rtos DZ 2 3) "\nDelta L : " (rtos DL 2 3) "\nPente : " (rtos (* PENTE 100) 2 3) "%" ) ) ) AmicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
speedy Posté(e) le 20 avril 2010 Posté(e) le 20 avril 2010 Bonjour à toutes et à tousUn ancien sujet, peut être il fallait faire une petite recherche -;)http://cadxp.cadmag.info/modules.php?op=modload&name=XForum&file=viewthread&tid=20068&POSTNUKESID=c11cd06c9bc6334c61541574d65fd251 et au passage merci à Gile et à Zebulon_ ..... @+ Michel a
zebulon_ Posté(e) le 20 avril 2010 Posté(e) le 20 avril 2010 Un ancien sujet, peut être il fallait faire une petite recherche c'est vrai, mais ce n'est pas toujours évident d'y trouver son bonheur (la rançon du succès de CADxp, sans doute). Le code de Gile s'intéresse aux attributs. Aussi, si on veut l'utiliser, il faut que le tagstring du bloc corresponde à celui utilisé dans le lisp (à savoir "alt"). kclement en a rêvé et et le rêve était déjà réalisé ;). Preuve s'il en fallait que CADxp est une vraie mine d'or pour qui sait y trouver la pépite qui l'intéresse. AmicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
kclement Posté(e) le 20 avril 2010 Auteur Posté(e) le 20 avril 2010 Bonjour à tous ! Un brin d'exagération Personnellement, mes rêves les plus fous n'ont pas pour objet des lignes de code. Chacun ses fantasmes, on n'est pas là pour juger. Bon d'accord j'exagère un peu, mais être brossé dans le sens du poil c'est toujours plaisant non ?! Blagues à part, Est-ce que le bloc est positionné à l'altitude indiquée par l'attribut ou est-ce qu'il se traîne bêtement à l'altitude 0 ? Non, Zebulon, le bloc est à l'altitude 0 (quoi qu'il m'arrive de faire des bouts de 3D de temps en temps...)Ceci dit, j'ai testé ton lisp et il fonctionne nickel. Ce qui aurait été top, c'est que le texte s"inscrive sur le dessin... Un ancien sujet, peut être il fallait faire une petite recherche C'est vrai que d'habitude je prends le temps de chercher (c'est pour ça que finalement je ne poste pas de messages très souvent !), mais hier je n'ai pas eu le temps... Mais c'est vrai aussi que parfois il n'est pas facile de trouver si les massages n'ont pas un sujet explicite par exemple, ou si on fait une recherche avec plusieurs mots... Alors, j'ai testé le lisp de l'autre sujet et malgré la remarque de Zebulon sur le tagstring, j'ai toujours ce message "type d'argument incorrect: stringp nil". J'ai testé dans un dessin vierge avec un bloc du nom de "alt" avec une étiquette et une iinvite "alt" et là ça fonctionne... Visiblement ça vient de l'étiquette de l'attribut. Mais le problème c'est que si je change le nom de l'étiquette en "alt" et que je synchronise dans mon dessin, je perd toutes mes valeurs... Please help, parce que c'est exactement ce que je cherche et j'aimerai bien l'utiliser sur un fichier existant... Merci à vous pour votre réactivité en tous cas... et votre sympathie (encore une petite couche de pommade ?! ;) ) [Edité le 20/4/2010 par kclement] [Edité le 20/4/2010 par kclement]
speedy Posté(e) le 20 avril 2010 Posté(e) le 20 avril 2010 Bonjour à toutes et à tous Je pense qu'il suffit de changer le mon de la recherche de l'étiquette indiqué dans le code :(if (= (vla-get-TagString a) "ALT") --> par le nom de ton étiquette. @+ Michel a [Edité le 20/4/2010 par speedy]
zebulon_ Posté(e) le 20 avril 2010 Posté(e) le 20 avril 2010 mais être brossé dans le sens du poil c'est toujours plaisant non ?!surtout quand on est chauve. Pour le problème de nom d'étiquette, je pense que speedy a donné la bonne réponse. Mais le problème c'est que si je change le nom de l'étiquette en "alt" et que je synchronise dans mon dessin, je perd toutes mes valeurs... avec la commande BATTMAN et la synchronisation qu'elle permet, cela ne devrait pas arriver AmicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
kclement Posté(e) le 4 mai 2010 Auteur Posté(e) le 4 mai 2010 :( Ben, j'comprends pô : j'avais posté une réponse mais elle apparait pô... J'ai du faire une fausse manip ! En fait, je vous remerciais pour vos réponses, bien sûr, et surtout je disais que y avait des jours comme ça, où on retourne le problème dans presque tous les sens sauf 1, et celui là le bon évidemment ! Je disais aussi que ça marchait nickel et je me demandais si il y avait moyen d'insérer cette valeur dans un bloc à attribut (qui se mettrait dans le bon sens, comme le texte du lisp)... A bon entendeur... ;) Sinon, pour répondre à Zebulon, si je change le nom de mon étiquette et que je lance la synchronisation de la commande BATTMAN, je pers bien mes valeurs (ou alors y a encore un truc qui m'a échappé...) Encore merci à vous, Kclement
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