lecrabe Posté(e) le 13 mars 2020 Posté(e) le 13 mars 2020 Hello Toute la partie 3DSOLID d'AutoCAD est "un peu CACHEE" au developpement !? Soit des 3DSOLIDs qui seraient en fait des extrusions de Polylignes 2D ... SVP peux t-on recuperer par programmation la hauteur d'extrusion et l'angle (Defaut = Verticale) Le TOP serait d'avoir cette ou ces 2 Infos dans un champ dynamiqueMAIS BON cela me parait impossible !? LA SANTE, Bye, lecrabe "triste"Automne 2020, la retraite ... Autodesk Expert Elite Team
(gile) Posté(e) le 13 mars 2020 Posté(e) le 13 mars 2020 Salut, Tu peux essayer ça (pour le champ, je crains que ça ne soit plus compliqué). (defun c:extrudata (/ ent) (while (not (and (setq ent (car (entsel "\nSélectionnez un solide extrudé: "))) (= (cdr (assoc 0 (entget ent))) "3DSOLID") (= (getpropertyvalue ent "SolidType") "Extrusion") ) ) (prompt "\nVous n'avez pas sélectionné un solide extrudé.") ) (prompt (strcat "\nHauteur = " (rtos (getpropertyvalue ent "Height")) "\tAngle d'extrusion = " (angtos (getpropertyvalue ent "TaperAngle")) ) ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 13 mars 2020 Posté(e) le 13 mars 2020 En fait, c'est pas si compliqué. (defun c:extrudechamp (/ ent util oid str) (vl-load-com) (while (not (and (setq ent (car (entsel "\nSélectionnez un solide extrudé: "))) (= (cdr (assoc 0 (entget ent))) "3DSOLID") (= (getcname (getpropertyvalue ent "SolidType")) "_EXTRUDE") ) ) (prompt "\nVous n'avez pas sélectionné un solide extrudé.") ) (setq util (vla-get-Utility (vla-get-ActiveDocument (vlax-get-acad-object))) oid (vla-GetObjectIdString util (vlax-ename->vla-object ent) 0) str (strcat "Hauteur = " "%<\\AcObjProp Object(%<\\_ObjId " oid ">%).Height \\f \"%lu6\">%" " Angle = " "%<\\AcObjProp Object(%<\\_ObjId " oid ">%).TaperAngle \\f \"%au5\">%" ) ) (vl-cmdf "_.text" pause pause pause str) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lecrabe Posté(e) le 14 mars 2020 Auteur Posté(e) le 14 mars 2020 Hello Gilles Cet après-midi, j avais prévu de construire en manuel le champ dynamique voulu en testant les propriétés: Height & TaperAngle ... MERCI beaucoup, tu m as devance ! C FOU de voir qu Autodesk cache dans la commande CHAMP les Propriétés 3D POSSIBLES sur les 3DSOLIDs !! D ailleurs qu en est il des Propriétés 3D CACHEES sur les 3DSURFACEs ??? Notre Grand Maître Gilles saura peut être ?! LA SANTE, Bye, lecrabe "triste"Automne 2020, la retraite... Autodesk Expert Elite Team
(gile) Posté(e) le 14 mars 2020 Posté(e) le 14 mars 2020 Je n'en sais pas plus, je ne fais que tester. Il semblerait que les propriétés qui apparaissent dans la palette des propriétés pour certains types de solides ou de surface (ceux qui ont une propriété "Type de solide" ou "type de surface") soient utilisables dans les champs. Ce qui est curieux (mais on n'en est pas à une incohérence près chez Autodesk) c'est qu'il semble que, pour les solides, ces propriétés ne soient accessible par programmation qu'en AutoLISP via les fonctions getpropertyvalue ou setpropertyvalue. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
LElemurien Posté(e) le 15 mars 2020 Posté(e) le 15 mars 2020 Bonjour,Dans le même esprit est-il possible d'avoir par programmation les infos longueur, largeur et hauteur dans un champs pour un type de solide 3D appelé boîte (_box) et aussi pour le type cylindre (_cylinder) ?Bon dimanche
(gile) Posté(e) le 15 mars 2020 Posté(e) le 15 mars 2020 La commande CHAMPSOLIDE accepte tous les solides "primitifs" ("Boîte" "Cylindre" "Cône" "Sphère" "Pyramide" "Biseau" "Tore").Elle fonctionnera uniquement sur des versions françaises (la propriété SolidType est localisée).Elle affiche dans des champs les dimensions du solide sélectionné en utilisant les formats courants (LUNITS, LUPREC). ;; Affiche dans des champs les dimensions du solide primitif sélectionné ;; Version française uniquement (defun c:CHAMPSOLIDE (/ ent solidType str) (vl-load-com) (while (not (and (setq ent (car (entsel "\nSélectionnez un solide (primitive uniquement): "))) (= (cdr (assoc 0 (entget ent))) "3DSOLID") (not (vl-catch-all-error-p (setq solidType (vl-catch-all-apply 'getpropertyvalue (list ent "SolidType"))) ) ) (member solidType '("Boîte" "Cylindre" "Cône" "Sphère" "Pyramide" "Biseau" "Tore")) ) ) (prompt "\nSélection non valide.") ) (setq id (vla-GetObjectIdString (vla-get-Utility (vla-get-ActiveDocument (vlax-get-acad-object) ) ) (vlax-ename->vla-object ent) 0 ) str (cond ((= solidType "Boîte") (strcat "Longueur = %<\\AcObjProp Object(%<\\_ObjId " id ">%).Length \\f \"%lu6\">%" "\\PLargeur = %<\\AcObjProp Object(%<\\_ObjId " id ">%).Width \\f \"%lu6\">%" "\\PHauteur = %<\\AcObjProp Object(%<\\_ObjId " id ">%).Height \\f \"%lu6\">%" ) ) ((= solidType "Cylindre") (if (zerop (getpropertyvalue (car (entsel)) "Elliptical")) (strcat "Rayon = %<\\AcObjProp Object(%<\\_ObjId " id ">%).Radius \\f \"%lu6\">%" "\\PHauteur = %<\\AcObjProp Object(%<\\_ObjId " id ">%).Height \\f \"%lu6\">%" ) (strcat "Grand rayon = %<\\AcObjProp Object(%<\\_ObjId " id ">%).MajorRadius \\f \"%lu6\">%" "\\PPetit rayon = %<\\AcObjProp Object(%<\\_ObjId " id ">%).MinorRadius \\f \"%lu6\">%" "\\PHauteur = %<\\AcObjProp Object(%<\\_ObjId " id ">%).Height \\f \"%lu6\">%" ) ) ) ((= solidType "Cône") (if (zerop (getpropertyvalue (car (entsel)) "Elliptical")) (strcat "Rayon de base = %<\\AcObjProp Object(%<\\_ObjId " id ">%).BaseRadius \\f \"%lu6\">%" "\\PRayon supérieur = %<\\AcObjProp Object(%<\\_ObjId " id ">%).TopRadius \\f \"%lu6\">%" "\\PHauteur = %<\\AcObjProp Object(%<\\_ObjId " id ">%).Height \\f \"%lu6\">%" ) (strcat "Grand rayon de base = %<\\AcObjProp Object(%<\\_ObjId " id ">%).BaseMajorRadius \\f \"%lu6\">%" "\\PPetit rayon de base = %<\\AcObjProp Object(%<\\_ObjId " id ">%).BaseMinorRadius \\f \"%lu6\">%" "\\PGrand rayon supérieur = %<\\AcObjProp Object(%<\\_ObjId " id ">%).TopMajorRadius \\f \"%lu6\">%" "\\PPetit rayon supérieur = %<\\AcObjProp Object(%<\\_ObjId " id ">%).TopMinorRadius \\f \"%lu6\">%" "\\PHauteur = %<\\AcObjProp Object(%<\\_ObjId " id ">%).Height \\f \"%lu6\">%" ) ) ) ((= solidType "Sphère") (strcat "Rayon = %<\\AcObjProp Object(%<\\_ObjId " id ">%).Radius \\f \"%lu6\">%" ) ) ((= solidType "Pyramide") (strcat "Côtés = %<\\AcObjProp Object(%<\\_ObjId " id ">%).Sides >%" "\\PRayon de base = %<\\AcObjProp Object(%<\\_ObjId " id ">%).BaseRadius \\f \"%lu6\">%" "\\PRayon supérieur = %<\\AcObjProp Object(%<\\_ObjId " id ">%).TopRadius \\f \"%lu6\">%" "\\PHauteur = %<\\AcObjProp Object(%<\\_ObjId " id ">%).Height \\f \"%lu6\">%" ) ) ((= solidType "Biseau") (strcat "Longueur = %<\\AcObjProp Object(%<\\_ObjId " id ">%).Length \\f \"%lu6\">%" "\\PLargeur = %<\\AcObjProp Object(%<\\_ObjId " id ">%).Width \\f \"%lu6\">%" "\\PHauteur = %<\\AcObjProp Object(%<\\_ObjId " id ">%).Height \\f \"%lu6\">%" ) ) ((= solidType "Tore") (strcat "Rayon de tore = %<\\AcObjProp Object(%<\\_ObjId " id ">%).TorusRadius \\f \"%lu6\">%" "\\PRayon de tube = %<\\AcObjProp Object(%<\\_ObjId " id ">%).TubeRadius \\f \"%lu6\">%" ) ) ) ) (vl-cmdf "_.mtext" pause "_width" 0.0 str "") (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
LElemurien Posté(e) le 16 mars 2020 Posté(e) le 16 mars 2020 Bonjour,Merci c'est parfait!Vraiment incroyable tout ce que l'on peut faire avec de la programmation.Bonne journée
lecrabe Posté(e) le 16 mars 2020 Auteur Posté(e) le 16 mars 2020 Hello MERCI Grand Maitre Gilles ! LA SANTE, Bye, le crabe "triste" - Pret pour le ConfinementAutomne 2020, la retraite ... 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