LElemurien Posté(e) le 26 avril 2019 Posté(e) le 26 avril 2019 Bonjour, Je suis débutant en LISP et grâce à l'aide de Didier que je remercie j'ai commencé à apprendre quelque base. Toujours grâce à son aide j'ai essayer de faire une routine pour pouvoir sélectionner toutes les entités "cotation" d'un dessin pour pouvoir les mettre dans le calque MD_Annotation. Didier m'a donc fourni cette routine suivante: (defun c:FDPlanv (/ jeusel ent defent posent new) (setq posent 0 newlayer "MD_Annotation" ) ;_ Fin de setq (setq jeusel (ssget "x" '((0 . "DIMENSION")))) (repeat (sslength jeusel) (setq ent (ssname jeusel posent)) (setq defent (entget ent)) (setq calqueactuel (cdr (assoc 8 defent))) (if (/= newlayer calqueactuel) (progn (setq new (subst (cons 8 newlayer) (cons 8 calqueactuel) defent)) (entmod new) ) ;_ Fin de progn ) ;_ Fin de if (setq posent (1+ posent)) ) ;_ Fin de repeat (princ) Donc cette routine fonctionne parfaitement bien. Maintenant je voulais faire la même chose, donc avec la même structure de routine, mais à la place des entités cotation je voulais le faire avec les entités vues de dessin. Donc je pensais juste changer le nom de l'entité "DIMENSION" par le nom de l'entité vue de dessin, mais le problème c'est que je n'arrive pas à trouver le nom des entités de vue de dessin qu'il faut mettre j'ai essayer avec plusieurs chose sans succès comme par exemple : "DRAWINGVIEW" et "AcDbPlotSettings" et aussi "ACDBVIEWREPBLOCKREFERENCE" Donc ma question est de savoir quelle est le nom des entités vue de dessin qu'il faudrait mettre? J'espère avoir été clair dans mes explications et d'avoir utilisé les bons termes. Merci d'avance
zebulon_ Posté(e) le 27 avril 2019 Posté(e) le 27 avril 2019 Bonjour, concernant la fonction ssget, il faut fournir le code dxf qui correspond à ce qu'on cherche. Si on ne le connait pas et qu'on ne trouve pas son bonheur dans la documentation, on peut consulter directement le contenu dxf d'une entité existante en la sélectionnant par un (setq e (car (entsel))). Puis un (entget e) nous donnera tout le contenu dxf de l'entité en question. Il suffira de copier la ou les paires qui sont intéressantes, notamment la paire (0 . "....") 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)
LElemurien Posté(e) le 27 avril 2019 Auteur Posté(e) le 27 avril 2019 Bonjour, concernant la fonction ssget, il faut fournir le code dxf qui correspond à ce qu'on cherche. Si on ne le connait pas et qu'on ne trouve pas son bonheur dans la documentation, on peut consulter directement le contenu dxf d'une entité existante en la sélectionnant par un (setq e (car (entsel))). Puis un (entget e) nous donnera tout le contenu dxf de l'entité en question. Il suffira de copier la ou les paires qui sont intéressantes, notamment la paire (0 . "....") AmicalementVincent Merci pour la réponse.Et c'est bien ce que j'ai essayer de faire pour trouver le nom de l'entité.Voici le résultat de entget : Mon lien Et le souci c'est que dans la paire pointée je trouve (0 . "DRAWINGVIEW") malheureusement cela ne fonctionne pas.Comme je suis pas un expert il doit y avoir une chose que je comprends pas.
(gile) Posté(e) le 27 avril 2019 Posté(e) le 27 avril 2019 Salut, As-tu essayé avec des guillemets ?(0 . "DRAWINGVIEW") Par curiosité, quel AutoCAD utilises-tu ? Je ne connaissais pas ces entités DRAWINGVIEW. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
LElemurien Posté(e) le 27 avril 2019 Auteur Posté(e) le 27 avril 2019 Salut, As-tu essayé avec des guillemets ?(0 . "DRAWINGVIEW") Par curiosité, quel AutoCAD utilises-tu ? Je ne connaissais pas ces entités DRAWINGVIEW. Bonjour et merci pour la réponse oui j'ai mis les guillemets (à la place de "DIMENSION" j'ai mis "DRAWINGVIEW"j'utilise Autocad 2016. Ces entités en fait ce font automatiquement dans la présentation c'est une élévation d'un objet 3D qui est fait avec la fonction VUEBASE.J'ai l'impression que peu de personne utilise cette fonction qui est pourtant très pratique pour faire des élévations d'un objet 3D, on peut ensuite faire des coupes et vue de détail à partir de cette élévation.
(gile) Posté(e) le 27 avril 2019 Posté(e) le 27 avril 2019 D'accord merci. J'ai bien utilisé ces fonctionnalités (issues d'Inventor sur lequel elles existent depuis longtemps), mais je n'avais jamais eu besoin de leur nom DXF. Ceci-dit, ton problème soulève une bizarrerie,(ssget "_X" '((0 . "DRAWINGVIEW"))) entré en ligne commande fonctionne bien, mais ne fonctionne pas quand il est appelé depuis une routine LISP.De plus, la fonction entmod semble ne pas fonctionner avec ce type d'entité (comme elle ne fonctionne pas avec les entités VIEWPORT).Je te propose donc une façon différente qui parcourt toutes les entités du dessin avec entnext et qui utilise getpropertyvalue pour changer le calque. (defun c:DWGVIEWLAYER (/ layerId ent) (setq layerId (cond ((tblobjname "layer" "MD_Annotation")) ((entmakex '((0 . "LAYER") (100 . "AcDbSymbolTableRecord") (100 . "AcDbLayerTableRecord") (2 . "MD_Annotation") (70 . 0) ) ) ) ) ent (entnext) ) (while ent (if (= (cdr (assoc 0 (entget ent))) "DRAWINGVIEW") (setpropertyvalue ent "LayerId" layerId) ) (setq ent (entnext ent)) ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lecrabe Posté(e) le 27 avril 2019 Posté(e) le 27 avril 2019 Hello Alors qq souvenirs 3D que j espère corrects ?!- Cette fonctionnalités de générer des vues 2D depuis un modele 3D est apparue avec la version 2012 ?!- En principe cela ne fonctionne que avec la 3D volumique ?!- Malheureusement il y a des bugs non corrigés: bug avec les blocs 3D ayant des facteurs d échelle XYZ NON uniformes, bug avec les blocs 3D imbriqués, etc ?! Bye, lecrabe Autodesk Expert Elite Team
LElemurien Posté(e) le 28 avril 2019 Auteur Posté(e) le 28 avril 2019 Bonjour, @ Gile, Merci c'est tout simplement parfait cela fonctionne ! @ Lecrabe, je ne sais plus si cela est depuis 2012 ou 2014 mais c'est vrai que ce n'est pas si vieux que cela,je me souviens qu'avant on utilisait la fonction soldraw et solview me semble-t-il mais qui n'était nettement moins bien adapté.Et oui cela sert pour des projets dessinés en 3D (en propriété solide 3D pour ma part), ce que j'utilise depuis le début que je travaille sur Autocad (environ 12 ans).Et oui aussi il est possible d'avoir des bugs avec les blocs 3D mais j'en utilise très peu dans mes projets. Encore merci Gile pour la routine et bonne journée à tous!
lecrabe Posté(e) le 28 avril 2019 Posté(e) le 28 avril 2019 Hello YES j'ai un peu utilise cette nouvelle fonctionnalite de la 2012 avec la 2012/2013/2014 ... Mais APRES j'ai arrete a cause des bugs lies aux multiples Blocs 3D que j'utilisais pour faire des assemblages 3D !C etait mon epoque 3D avec des "Legos" ... La 2012 est d'ailleurs la derniere a avoir eu des nouveautes en 3D avec ces Vues de Dessins 3D Solid La 2012 a aussi apporte le NOUVEAU Reseau Associatif 2D/3D en Trajectoireet les Reseaux 2D/3D rectangulaires et polaires/circulaires Associatifs ... Pour moi, la 2012 etait une BONNE version et RAPIDE !!! J'ai plusieurs PCs x64 sous Win 7 Pro avec AutoCAD MAP 2012 et le VIEUX Plugin Google Earth d'Autodesk ... Si Autodesk avait corrige les Bugs et eventuellement etendu cette fonctionnalite aux objets 3D Surfaciques, cela aurait ete Tip-Top !! Bon Dimanche, Bye, lecrabe Autodesk Expert Elite Team
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