bonuscad Posté(e) le 13 juin 2008 Posté(e) le 13 juin 2008 Suite à cette réponse , j'ai voulu me pencher sur les champ en lisp. Voici à quoi je suis arrivé, la solution est intéressante et peut être étendue par exemple pour mettre les longueurs ou les surfaces d'objets.Ce que j'aurais voulu aussi réalisé est de mettre en œuvre les échelles d'annotation pour que cela soit exploitable à plusieurs échelles différentes, mais je ne sais pas du tout comment m'y prendre. :( Donc voici le code, certainement imparfait, mais qui gagnerais beaucoup à être amélioré.Si vous avez des idées... (defun make_field (pt / obj AcDoc Space nw_style) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= 1 (getvar "CVPORT")) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) (vlax-put (vla-add (vla-get-layers AcDoc) "Id-XY") 'color 96) (vlax-put (vla-add (vla-get-layers AcDoc) "Id-Z") 'color 174) (vlax-put (vla-add (vla-get-layers AcDoc) "Id-Point") 'color 2) (setq nw_style (vla-add (vla-get-textstyles AcDoc) "Anno-Romand25")) (vlax-put nw_style 'fontfile "romand.shx") (vlax-put nw_style 'height 0.0) (vlax-put nw_style 'obliqueangle (/ (* 15.0 pi) 180)) (vlax-put nw_style 'width 1.0) (vlax-put nw_style 'textgenerationflag 0.0) (vlax-put (vla-AddPoint Space (vlax-3d-point pt)) 'layer "Id-Point") (setq obj (entlast)) (mapcar '(lambda (lx) (apply '(lambda (ins_point value_field att_point txt_height dwg_dir name_style name_layer / nw_obj) (setq nw_obj (vla-addMtext Space (vlax-3d-point (trans ins_point 1 0)) 0.0 (strcat "%[b]<[/b]\\AcObjProp.16.2 Object(%[b]<[/b]\\_ObjId " (itoa (vla-get-ObjectID (vlax-ename-[b]>[/b]vla-object obj))) value_field ) ) ) (vlax-put nw_obj 'AttachmentPoint att_point) (vlax-put nw_obj 'Height txt_height) (vlax-put nw_obj 'DrawingDirection dwg_dir) (vlax-put nw_obj 'InsertionPoint ins_point) (vlax-put nw_obj 'StyleName name_style) (vlax-put nw_obj 'Layer name_layer) ) lx ) ) (list (list (mapcar '+ pt '(2.5 0.0 0.0)) "[b]>[/b]%).Coordinates \\f \"%lu2%pt1%pr3%ps[X=,]\"[b]>[/b]%" 7 2.0 5 "Anno-Romand25" "Id-XY" ) (list (mapcar '+ pt '(2.5 -0.5 0.0)) "[b]>[/b]%).Coordinates \\f \"%lu2%pt2%pr3%ps[Y=,]\"[b]>[/b]%" 1 2.0 5 "Anno-Romand25" "Id-XY" ) (list (mapcar '+ pt '(-2.5 0.0 0.0)) "[b]>[/b]%).Coordinates \\f \"%lu2%pt4%pr3%ps[Z=,]\"[b]>[/b]%" 6 2.0 5 "Anno-Romand25" "Id-Z" ) ) ) ) (defun c:renseign_pt ( / js dxf_cod n ent) (princ "\nChoix d'un point modèle pour le filtrage: ") (while (null (setq js (ssget "_+.:E:S" '((0 . "POINT")))))) (setq dxf_cod (entget (ssname js 0))) (setq js (ssget "_X" (foreach n '(-1 330 5 100 10) (setq dxf_cod (vl-remove (assoc n dxf_cod) dxf_cod)))) n -1) (vl-load-com) (repeat (sslength js) (make_field (cdr (assoc 10 (entget (setq ent (ssname js (setq n (1+ n)))))))) (entdel ent) ) (prin1) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
bonuscad Posté(e) le 30 juin 2008 Auteur Posté(e) le 30 juin 2008 Plus de 300 lectures, et pas une seule remarque ! Pourtant le code est loin d'être parfait. Je suis bon prince, je livre sur ma page une révision du code ci-dessus et en prime vous trouverez la même démarche pour des longueurs et des surfaces, toujours avec les champs dynamiques ;) Si vous avez des remarques sur ceux-ci.... Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
lili2006 Posté(e) le 30 juin 2008 Posté(e) le 30 juin 2008 Bonsoir à toutes et tous, Désolé bonuscad, mais je n'ai pas le niveau pour te suivre,... Pourrais-tu nous expliquer comment utiliser à bon escient ces outils que tu met gracieusement à notre disposition STP ? Merci d'avance,.. PS: Je suis revenu régulièrement sur ce post en espérant une remarque de l'un d'entre-nous,... [Pour être honnête, j n'avais pas vu le C: defun,..., alors qu'après avoir ouvert multitudes de tes lisps, je sais qu'on le trouve souvent faire la fin,... ;) ) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lili2006 Posté(e) le 30 juin 2008 Posté(e) le 30 juin 2008 Re, Heu, il suffisait p'têtre de tester pour trouver ces outils géniaux ! Merci bonuscad, en plus le rendu est tip-top => http://images4.hiboox.com/images/2708/c8920161715351369d1274731fe5dbab.jpg Pas mal le coup de la selection d'un seul point pour avoir les infos des autres,.... Heu !, et si on pouvait faire une fenêtre de capture pour les objets ?? Je prend l'exemple de la ligne sur l'image, si je veux toutes les cotées d'un coup, par exemple,... Que la surface et le périmètre de mon polygone se mettent à jour aprés étirement avec un malheureux "RG", c'est excellent ! Super également la gestion des calques. Merci encore de ce partage,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lili2006 Posté(e) le 30 juin 2008 Posté(e) le 30 juin 2008 Re, que cela soit exploitable à plusieurs échelles différentes, mais je ne sais pas du tout comment m'y prendre. J'en suis bien sur bien incapable, mais l'idée est géniale et ça, j'en suis sûr,...! :P Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 30 juin 2008 Posté(e) le 30 juin 2008 Salut Bonuscad, Plus de 300 lectures, et pas une seule remarque ! Tu sais bien que c'est monnaie courante :cool: Et encore, CADxp n'est vraiment pas le pire, sur le forum AutoCAD français d'AutoDESK je ne compte pas les réponses à des questions restées sans suite J'ai fait une petite recherche sur des sujets (certes sûrement pas tous intéressants) que j'avais lancé et qui sont restés sans réponse (à par parfois les miennes) : Centrer des objets dans la fenêtre courante 296 vuesConvertir un fichier .pat ou .lin 378 vuesPoints de vue 3D avec le pavé numérique 519 vuesEllipse -> polyligne 393 vuesZoomObject 419 vuesBouton bascule 863 vuesPiping 3d 440 vuesBissectrice et médiatrice 287 vues [Edité le 30/6/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
bonuscad Posté(e) le 30 juin 2008 Auteur Posté(e) le 30 juin 2008 [Pour être honnête, j n'avais pas vu le C: defun,..., alors qu'après avoir ouvert multitudes de tes lisps, je sais qu'on le trouve souvent faire la fin,... C'est vrai que je place toujours mes (defun C: à la fin, La raison est que comme ça la dernière fonction chargée apparait dans la ligne de commande, exemple C:MAFONCTION, cela permet de savoir quelle commande taper pour lancer celle-ci. Heu !, et si on pouvait faire une fenêtre de capture pour les objets ?? Je prend l'exemple de la ligne sur l'image, si je veux toutes les cotées d'un coup, par exemple,... Ceci j'y ai pensé, mais ne l'ai pas mis encore en oeuvre.Je pense me servir des milieux de ligne/polyligne pour la position et de récupérer leur orientation afin de placer le champ aligné à celui-ci. Ceci pour les longueurs.Pour les surfaces, j'ai pensé au boundingbox pour récuperer a peu prés le milieu de l'encombrement de l'objet, et je pense laisser l'orientation à zéro pour ceux-ci. J'en suis bien sur bien incapable, mais l'idée est géniale et ça, j'en suis sûr,...! Ben par programmation, moi aussi. Mais après coup (je n'ai pas encore fait l'essai), je pense que de changer manuellement le style créé (ici "Romand-Field") en annotatif serait aussi simple, même moins compliqué ;) Tu sais bien que c'est monnaie courante Ho que oui! C'était pour avoir une réaction, mais comme d'hab c'est les membres les plus assidus qui répondent... :( Je rejoins Bred dans sa 4ème dimension :P (Bred tu n'es plus seul ! ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
lili2006 Posté(e) le 1 juillet 2008 Posté(e) le 1 juillet 2008 Bonjour à toutes et tous, En effet bonuscad, les annotatifs, Mais utilisable que depuis la V2008 !! Dis-donc (gile), moi qui pensait suivre tous tes posts,.... Remarque tu interviens tellement souvent que l'on a parfois du mal à te suivre et du coup passé à coté de quelque chose,...Merci d'avoir mis les liens, on va pouvoir se refaire ;) Bonne journée à tous et vive les développeurs. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
bonuscad Posté(e) le 4 juillet 2008 Auteur Posté(e) le 4 juillet 2008 Heu !, et si on pouvait faire une fenêtre de capture pour les objets ?? Je prend l'exemple de la ligne sur l'image, si je veux toutes les cotées d'un coup, par exemple,... Pas de capture, mais un filtrage effectué avec l'entité modèle. Essayes les 3 routines que j'ai mises à jour sur mon site J'espère que tu ne rencontrera pas de "bugs". :exclam: Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
lili2006 Posté(e) le 4 juillet 2008 Posté(e) le 4 juillet 2008 Bonsoir à toutes et tous, Les lignes et polylignes (fermées ou non), même principe que les points ? Bien vu bonuscad,... http://images4.hiboox.com/images/2708/bd3cabb69031507d29c1f8e3bc806a79.jpg Suivant l'orientation des coordonnées de pts (et l'echelle choisie, peut-être ??), les coordonnées x et y se recouvrent. A part ça, j'ai rien vu d'autres,.... http://images4.hiboox.com/images/2708/6ee87002521b3b20f3bff1729c5582b2.jpg A quand les longueurs développées de splines ? Non, non, je blague ! Je réitère ce que j'ai déjà écrit, bientôt, plus besoin de progiciel type covadis pour les topos,... ;) Beau travail, merci encore . Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
bonuscad Posté(e) le 4 juillet 2008 Auteur Posté(e) le 4 juillet 2008 Suivant l'orientation des coordonnées de pts (et l'echelle choisie, peut-être ??), les coordonnées x et y se recouvrent. A part ça, j'ai rien vu d'autres,.... Merci lili2006 pour tes tests ;) Ceci est corrigé + 1 bug avec les polylignes 2D. La routine PtDef-XYZ_Field.lsp permet de coter en x,y,z TOUT les points de définitions d'objet: "LINE,LWPOLYLINE,POLYLINE,MLINE,POINT,ARC,CIRCLE,SPLINE,ELLIPSE,INSERT"ce qui correspond en général au code DXF10 parfois 11 des définitions des entités. NB:Le filtrage sur les polylignes se fait AUSSI sur le code dxf70, donc le filtrage se fera sur des polylignes closes OU ouvertes en plus du type lissée ou splinée ou en 3dLe reste du filtrage se fait sur les propriétés communes :calques, couleur, type de ligne etc... Cela devrait fonctionner quelque soit le SCU (sous réserve, malgré mes tests) A quand les longueurs développées de splines ? CurveLength_Field.lsp ne fonctionne pas pour les SPLINE, mais par contre fonctionne avec des polyligne splinées. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
lili2006 Posté(e) le 5 juillet 2008 Posté(e) le 5 juillet 2008 Bonjour à toutes et tous, bug avec les polylignes 2D. Par curiosité, c'était quoi ce beug ? polyligne splinées. Heu, et comment obtient -on cela ? Cela devrait fonctionner quelque soit le SCU J'ai pas vu de problème non plus,... Et trois routines de plus dans ma lispothèque,... Merci encore bonuscad Et les autres topos, vous en pensez quoi ? Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
bonuscad Posté(e) le 5 juillet 2008 Auteur Posté(e) le 5 juillet 2008 citation extraite du message original:bug avec les polylignes 2D. Par curiosité, c'était quoi ce beug ? J'ai voulu optimiser deux fonctions de (gile) en une seule, mais j'avais fais une "boulette". Je vais lui faire part d'ailleurs de mon optimisation (c'est tout bête mais ça simplifie le code) ;) Heu, et comment obtient -on cela ? Une des toutes première spline d'autocad :P Polyligne 2D en segment puis PEDIT option "Spline".... Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
dilack Posté(e) le 6 juillet 2008 Posté(e) le 6 juillet 2008 salut à tous,PtDef-XYZ_Field.lsp dans un scu le recouvrement persiste en tout cas avec AutoCAD 2009,Bonne fin de week end à tous
lili2006 Posté(e) le 6 juillet 2008 Posté(e) le 6 juillet 2008 Bonjour à toutes et tous, PtDef-XYZ_Field.lsp dans un scu le recouvrement persiste en tout cas avec AutoCAD 2009, En reprenant les tests, effectivement (idem sous 2008) Moi, j'ai carrément un nouveau jeu de points ??? http://images4.hiboox.com/images/2708/2d656cf416e4e0432f8519b2d82656dc.jpg polyligne splinées. J'avais déjà utiliser cette option sans connaître le nom,... Merci bonuscad Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
bonuscad Posté(e) le 7 juillet 2008 Auteur Posté(e) le 7 juillet 2008 Merci à vous pour vos tests Je pense avoir corrigé les dysfonctionnements depuis des SCU. J'ai cherché un bon moment pour mettre les coordonnées dans le SCU courant, pour enfin remarquer au final que les champs ne renvoyaient que les coordonnées dans le SCG, ceci même en le faisant manuellement. Donc retourne les coordonnées générales, mais positionnés par rapport au SCU courant. NB: Les 2 autres fonctions ont été également corrigées. Re-téléchargez celles-ci... Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
lili2006 Posté(e) le 7 juillet 2008 Posté(e) le 7 juillet 2008 Bonsoir à toutes et tous, Re-téléchargez celles-ci... C'est fait ! Je reteste demain après midi. Merci à vous pour vos tests Merci à toi pour le partage (oui, je sais, c'est pas original, mais j'ai pas trouvé mieux, désolé ! ;) ) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lili2006 Posté(e) le 8 juillet 2008 Posté(e) le 8 juillet 2008 Bonjour à toutes et tous, L'ensemble semble fonctionner nickel maintenant ! http://images4.hiboox.com/images/2808/6e22768bd04d7e1d6d311bdc4e5ce461.jpg Juste une idée : En option, pouvoir choisir une polyligne fermée ou non afin de donner la longueur totale ou bien la longueur des segments, pourrait être pas mal non plus, du coup, cela pourrait même être des cotes entre bornes si l'on ajoute le préfixe et suffixe "-", histoire de rester dans les habitudes,...(Ou bien faire l'objet d'une autre routines,...) Ce qui pourrait donner => http://images4.hiboox.com/images/2808/e21fc2618951f1709804191ab2b75c6b.jpg A suivre donc,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
thry0 Posté(e) le 8 juillet 2008 Posté(e) le 8 juillet 2008 Bonjour à tous,Tout d'abord félicitations à tous pour toutes ces compétences partagées avec tant d'altruismeJe suis sur le site depuis peu et je ne peux que m'incliner devant tant de savoir ... et ne pourrais que très rarement apporter ma petite pierre à votre édifice !Petite question à bonuscad: j'utilise entre autre la 2006 et je rencontre le pb suivant avec le lisp CurveArea_Field.lsp, en effet les unités de surface sont indiquées en mm? ou cm? etc ...Pb de police ? ou bien ...Voilà j'arrive en soulevant un pb ... désolé !!!
lili2006 Posté(e) le 8 juillet 2008 Posté(e) le 8 juillet 2008 Re, Bienvenue thry0 C'est bizarre, j'ai bien les unités choisit au carré ! Regarde l'image ci-dessus vers le centre (S = 327713.63 cm²) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
thry0 Posté(e) le 8 juillet 2008 Posté(e) le 8 juillet 2008 J'avais bien remarqué oui ... mais moi il me retourne un point d'interrogation en lieu et place du 2. J'ai essayé de regarder dans le lisp (sans rien y connaître biensûr sinon pas drôle ...)si je voyais où est fait référence l'exposant 2 mais je reste bredouille
lili2006 Posté(e) le 8 juillet 2008 Posté(e) le 8 juillet 2008 Re, Tu est sur quelle version ?Le style utilisé est "Romand-Field", si tu ne l'as pas, modifie le dans les lisps, Mais ce n'est peut_être pas ça car je ne suis pas spécialiste,.... De toute façon, bonuscad va repasser par là, Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
thry0 Posté(e) le 8 juillet 2008 Posté(e) le 8 juillet 2008 C'est tout à fait ça ... bien vu !J'ai remplacé la police de référence de "Romand-Field" par un banal romans.shx et tout est OK Encore merçi ... et à bientôt sans aucun doute
bonuscad Posté(e) le 9 juillet 2008 Auteur Posté(e) le 9 juillet 2008 Bonjour, Pour thry0 mais moi il me retourne un point d'interrogation en lieu et place du 2 Étrange car j'utilise une police standard d'Autocad "Romand.shx"As-tu bien cette police dispo? Si Romans.shx fonctionne... c'est bien un problème de police. Toujours est-il que dans le/les lisp tu peux changer la police de référence ici: (cond ((null (tblsearch "STYLE" "Romand-Field")) (setq nw_style (vla-add (vla-get-textstyles AcDoc) "Romand-Field")) (mapcar '(lambda (pr val) (vlax-put nw_style pr val) ) (list 'FontFile 'Height 'ObliqueAngle 'Width 'TextGenerationFlag) (list [surligneur]"romand.shx"[/surligneur] 0.0 (/ (* 15.0 pi) 180) 1.0 0.0) ) ) ) Tu peux remplacer ce qui est surligné par une police de ton choix (acceptant le ² bien entendu)Si tu ne veux pas d'inclinaison dans ton style tu change (/ (* 15.0 pi) 180) par 0.0Ici 15 représente l'angle d'inclinaison en degré. Pour lili2006 afin de donner la longueur totale ou bien la longueur des segments Les champs dynamiques ne me permettent pas de mettre en œuvre cette option souhaitée.Si tu veux vraiment obtenir cette possibilité, c'est de décomposer la/les polylignes avant d'utiliser le lisp. Dans ce cas les surfaces ne seront plus possibles :mad: et si les champs de surfaces étés déjà en place, la décomposition de la polyligne fera perdre la liaison avec le champ et du obtiendra des "#####" dans celui-ci. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
lili2006 Posté(e) le 9 juillet 2008 Posté(e) le 9 juillet 2008 Bonjour à toutes et tous, Ok, bonsucad ! C'était une idée comme ça ! c'est de décomposer la/les polylignes avant d'utiliser le lisp C'est ce que j'ai fait => J'ai copier la poly sur un autre calque, décomposer, coter. Et je garde la surface puisque l'original est toujours en place,... Seul inconvénient, bien sûr, c'est quand il y a une modif, je change deux entités (la polyligne sur un calque Surface, par exemple, et la polyligne sur un calque "distance", par exemple,...!) Il me semblait que le style, d'après les propriétés que le style utilisé est => "Romand-Field", . Merci encore bonsucad, Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
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