Aller au contenu

VDH-Bruno

Membres
  • Compteur de contenus

    1 146
  • Inscription

  • Dernière visite

  • Jours gagnés

    20

Tout ce qui a été posté par VDH-Bruno

  1. Je pense que zébulon parlait lorsque l'on sélectionne les onglets que l'on passe par un clic-bouton-droit dans le menu déroulant et non sur la ligne de commande. A+
  2. Re, Quand je dis que c’est prometteur c’est parce que tu es arrivé à l’adapter et que cela fonctionne après que ce soit pour un style de cote spécifique (celles dont la définition des couleurs n’est pas forcé), c’est un peu secondaire. Pour ce qui est de mes explications sur les données étendues, tu peux faire l’impasse dessus dans un premier temps cela te parlera plus tard si tu persiste dans cette voie. Tu as de la chance, l’aide au développement n’est plus traduite pour les versions française depuis la R14 (environ 15 ans), et pour moi l’anglais me parle presque autant que le japonais, tu vois il y a de l’espoir ;) Moi non plus au début, pour la petite histoire j’ai été utilisateur de Lisp avant d'en écrire, j’ai commencé par modifié les noms des commandes Lisp, puis à repérer et à changer les invites des commandes lisp, puis j’ai pris de l’assurance et j’ai voulu personnaliser certains programmes à mon environnement de travail pour gagner un clic ou deux et là ça a commencé à être la galère à se compliquer franchement (à ce taper la tête contre les mur) et devenir très chronophage pour une réussite rarement satisfaisante et un enrichissement personnel quasi nulle. Puis j’ai compris que la méthode n’était pas bonne et que le temps investie serai bien plus profitable dans la durée, en révisant à la baisse mes objectifs pour me consacrer à un véritable apprentissage du Lisp.. Bonne continuation,
  3. Salut, Je me doute bien que tu y avais songé, dans le cas de la création je ne crois pas que cela soit un problème car il va bien falloir aller dedans pour régler la vue sur l’EO, après effectivement dans le cas de déplacement ou suppression d’onglet, c’est plus délicat.. Dans pour les impressions pas de problème, par contre pour une publication, il faudrait tester.. C’est pourquoi je parlais de code relativement robuste. (Au pire un changement d’onglet résout le soucis) Ce qui m’ennuie le plus vis-à-vis de mon environnement de travail et de celui des collègues dessinateurs que je connais c’est d’écrire une routine pour un type de bloc et d’attribut spécifique. Car bien souvent les tailles (A0 A1 … A4), ainsi que pour les types de plans (plan d’ensembles, détails, accessoires, fiches de coffrage, plans de ferraillage) les noms des cartouches et d’attributs diffèrent. J’ai même réalisé des documents de présentation ou les numéros de page sont écrits dans des entités textes. Sur ce point j’ai bien quelques idées mais cela mérite quelques testes avant de m’avancer plus, et prochainement le temps risque de me manquer, en ce moment je renforce régulièrement le B.E .T en production car il prend un petit peu l’eau (doux euphémisme). Voilà si j’ai un peu plus de temps, j’essayerais de regarder une variante plus proche de mon environnement de travail, a moins que quelqu’un d’autre s'y colle. A+
  4. Bonjour, C’est vrai , la ligne de code aurait mérité une ou deux petites lignes d’explications, il était tôt/tard et j’étais pressé de finir cette journée. Sinon en variante possible au while un appel à initget et le code de bit qui va bien (réglé sur 1 pour éviter les saisie null) (cond ((numberp *MaVariableGlobal*)) (T (initget 1) (setq *MaVariableGlobal* (getreal "\nMa valeur à saisir: "))) ) A+
  5. Bonsoir, Pour le principe, (à placer au début de ton programme) (or *MaVariableGlobal* (setq *MaVariableGlobal* (getreal "\nMa valeur à saisir: "))) A+
  6. VDH-Bruno

    Commande TRACE

    Bonsoir, Je réponds très certainement à coté, mais si c’est pour faire du remplissage peut être la commande SOLIDE peut répondre à ton besoin.. A+
  7. Bonsoir zebulon_ Pour la position et le nombre de présentation, pas mieux que le vla-get-taborder et le vla-get-count rappelé par Patrick_35, par contre pour ce qui est de tes interrogations sur le choix du réacteur, j’aurais plus tenté un vlr-miscellaneous-reactor et son événement vlr-layoutswitched (déclenché chaque fois que l’utilisateur change de présentation). Cela me semble beaucoup plus simple et plus économe qu’un vlr-acdb-reactor et suffisamment robuste pour le besoin.. A+
  8. Bonjour, C’est plutôt très bon et prometteur pour des débuts en lisp, sauf que commencer par la programmation des cotations, c’est pas forcément ce qu’il y a de plus simple pour débuter en lisp pur si tu veux écrire un code robuste. Pour t’en convaincre re-teste ton code sur un style de cote dont les couleurs (ligne d’attache, ligne de cote, et texte) ne sont pas dépendant DuCalque… En pur Lisp, il faudra donc passer par une réécriture des styles de cotes pour forcer les couleurs (Référence DXF-> Section ENTITIES-> DIMENSION-> Réécriture des styles de cotes) en jouant avec les codes 176, 177, 178 dans les données étendues de l’application A-C-A-D(les tirets sont pour éviter de voir écrit AutoCAD automatiquement :unsure: ) Tu vois pas forcément si tu restes en AutoLisp, à moins de préférer le VLisp et le paramétrage des propriétées DimensionLineColor, ExtensionLineColor, TextColor. Ceci : (setq d (entget (ssname ss i))) (setq l (cdr (assoc 42 d))) (cond ;;Debut des conditions : Ajouter des conditions a la suite ;;l : longueur a evaluer () ;;c : couleur {(1~255) 256=bylayer} ;; {1:rouge 2:jaune 3:vert 4:cyan 5:bleu 6:magenta 7:blanc} ((equal l 1500.0 0.000001) (setq c 1)) ((equal l 2000.0 0.000001) (setq c 2)) ((equal l 2500.0 0.000001) (setq c 3)) ;;SI aucune condition n'est rempli : couleur ByLayer (t (setq c 256)) ;;Fin des conditions ) Peux se "factoriser" comme cela : (setq d (entget (ssname ss i)) l (cdr (assoc 42 d)) c (cond ((equal l 1500.0 1e-6) 1) ((equal l 2000.0 1e-6) 2) ((equal l 2500.0 1e-6) 3) (256) ) ) Et ici même si cela fonction très bien : (entmod (append d (list (cons 62 c)))) Dans la definition dxf de ton entité tu crées deux fois le code 62 dans le cas où la valeur existe déjà, la fonction entmod filtrant les entrées par la queue de liste dans ce sens cela se passe bien (encore faut-il l’avoir à l’esprit). Avec le dxf, suivant "les recommandations d'Autodesk", il faut être sensé programmer indépendamment de l’ordre des élément de la liste dxf, donc habituellement on teste la présence du code dans la liste si oui on le substitue dans la définition DXF avec subst, sinon on l’ajoute avec append : (entmod (if (setq dxf62 (assoc 62 d)) (subst (cons 62 c) dxf62 d) (append d (list (cons 62 c))) ) ) Sinon tu peux éventuellement éviter une sélection utilisateur en remplaçant (setq ss (ssget '((0 . "DIMENSION")))) Par (ssget "_X" '((0 . "DIMENSION"))) A titre d'exemple une variante possible en VLisp : ;; VDH-Bruno - la cote 1.50m en bleu, 2.00m en vert, 2.50m en rouge (defun c:DIMCOLOR () (vl-load-com) (if (ssget "_X" '((0 . "DIMENSION"))) (vla-delete (vlax-map-collection (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object))) '(lambda (o / l c) (setq l (vla-get-Measurement o) c (cond ((equal l 1.5 1e-6) 1) ((equal l 2.0 1e-6) 2) ((equal l 2.5 1e-6) 3) (256) ) ) (foreach p '(DimensionLineColor ExtensionLineColor TextColor) (vlax-put o p c)) ) ) ) ) (princ) ) Cordialement Bruno
  9. Bonjour, Les variantes que j’avais écrites sur le même thème, le site étant difficilement accessible dernièrement, je n’ai pu les poster avant.. ;; VDH-Bruno - Mettre entre parenthèses "()" les entités textes sélectionnés (defun c:APT () (vl-load-com) (if (ssget '((0 . "*TEXT"))) (vla-delete (vlax-map-collection (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object))) '(lambda (x) (vla-put-TextString x (strcat "(" (vla-get-TextString x) ")"))) ) ) ) (princ) ) Et pour le jeu la fonction inverse ;; VDH-Bruno - Supprimer les parenthèses "()" encadrant les entités textes sélectionnés (defun c:SPT () (vl-load-com) (if (ssget '((0 . "*TEXT"))) (vla-delete (vlax-map-collection (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object))) '(lambda (x) (vla-put-TextString x (vl-string-right-trim ")" (vl-string-left-trim "(" (vla-get-TextString x))))) ) ) ) (princ) ) A+
  10. Bonjour Arcasdk, Je pense qu’avec foreach ce sera plus concis.. De plus avec entmake (il y a déjà une vérification implicite de la présence ou non de ta définition dans la table) en résumé tblsearch n’est pas indispensable tout comme ton progn. Pour l'exemple (foreach x '(("COT 1-1" . 1) ("COT 1-10" . 10) ("COT 1-20" . 20) ("COT 1-5" . 5) ("COT 1-8" . 8)) (ENTMAKE (LIST (CONS 0 "DIMSTYLE") (CONS 100 "AcDbSymbolTableRecord") (CONS 100 "AcDbDimStyleTableRecord") (CONS 2 (car x)) (CONS 70 0) (CONS 3 "") (CONS 4 "") (CONS 5 "") (CONS 6 "") (CONS 7 "") (CONS 40 (cdr x)) (CONS 41 2.5) (CONS 42 1.0) (CONS 43 1.0) (CONS 44 1.0) (CONS 45 0.0) (CONS 46 0.0) (CONS 47 0.0) (CONS 48 0.0) (CONS 140 2.5) (CONS 141 1.0) (CONS 142 0.0) (CONS 143 25.4) (CONS 144 1.0) (CONS 145 0.0) (CONS 146 1.0) (CONS 147 1.0) (CONS 71 0) (CONS 72 0) (CONS 73 0) (CONS 74 0) (CONS 75 0) (CONS 76 0) (CONS 77 1) (CONS 78 12) (CONS 79 3) (CONS 170 0) (CONS 171 2) (CONS 172 0) (CONS 173 0) (CONS 174 0) (CONS 175 0) (CONS 176 256) (CONS 177 256) (CONS 178 7) (CONS 179 4) (CONS 270 2) (CONS 271 4) (CONS 272 4) (CONS 273 2) (CONS 274 2) (CONS 275 0) (CONS 276 0) (CONS 277 2) (CONS 279 0) (CONS 280 0) (CONS 281 0) (CONS 282 0) (CONS 283 1) (CONS 284 12) (CONS 285 0) (CONS 286 0) (CONS 287 0) (CONS 288 1) (CONS 289 3) ) ) ) Ps : Corrigé une erreur de parenthèse dans ton code (CONS 287 0)) A+
  11. Re, Rien de bien méchant un problème de parenthèses, tu as juste imbriqué les lignes du setq donné en exemple dans le setq de l’ID, soit tu paramètre ton préfixe ou suffixe avant ou tu supprime le setq et ses parenthèses ou tu les codes directement dans le strcat comme ceci.. Le code en exemple pour tester: (defun c:sf (/ AcDoc Space bloc nom ent obj ins op reg ech id long aire ref) (vl-load-com) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= (getvar "CVPORT") 1) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) (if (or (tblsearch "BLOCK" (setq bloc "sf")) (findfile (setq bloc "sf.dwg"))) (progn ;; attribut "nom de la pièce" (if (not (setq nom (getname "Nom de la pièce"))) (setq nom "") ) (while (not (setq ent (car (entsel))))) (setq obj (vlax-ename->vla-object ent)) (if (= "AcDbPolyline" (vla-get-ObjectName obj)) (progn (if (not (setq ins (getpoint "\nSpécifiez le point d'insertion ou < Centre >: "))) (progn (if (= (vla-get-closed obj) :vlax-false) (progn (vla-put-closed obj :vlax-true) (setq op T)) ) (setq reg (vlax-invoke space 'addRegion (list obj)) ins (vlax-get (car reg) 'Centroid) ) (if op (vla-put-closed obj :vlax-false) ) (vla-delete (car reg)) ) ) (if (not (vlax-ldata-get "sf" "ech")) (vlax-ldata-put "sf" "ech" 3) ) (if (not (setq ech (getreal (strcat "\nEntrez le facteur d'échelle <" (rtos (vlax-ldata-get "sf" "ech")) ">: "))) ) (setq ech (vlax-ldata-get "sf" "ech")) (vlax-ldata-put "sf" "ech" ech) ) (setq id (vla-get-ObjectID obj) ;; Attribut périmètre (mm² -> m²) aire (strcat "surface: " "%<\\AcObjProp Object(%<\\_ObjId " (itoa id) ">%).Area \\f \"%lu2%pr2%ct8[1e-0]\">%" " m²" ) ;; Attribut surface (mm -> m) long (strcat "Perimétre: " "%<\\AcObjProp Object(%<\\_ObjId " (itoa id) ">%).Length \\f \"%lu2%pr2%ct8[1.00]\">%" " ml" ) ) (setq ref (vla-InsertBlock Space (vlax-3d-point (trans ins 1 0)) bloc ech ech 1 (angle '(0 0 0) (trans (getvar 'ucsxdir) 0 (trans '(0 0 1) 1 0 T))) ) ) ;; attribution de leur valeur aux attributs (mapcar '(lambda (x y) (vla-put-TextString x y)) (vlax-invoke ref 'GetAttributes) (list nom aire long) ) (vla-regen AcDoc acActiveViewport) ) (alert "L'objet sélectionné n'est pas une polyligne.") ) ) (alert "Le bloc \"sf\" est introuvable.") ) (princ) ) (Ps1 : Attention les commentaires périmètre et surface ne sont pas en phase avec la ligne de code correspondant) (Ps2 : J’ai également adapté quelques routines très célèbre (écrite par Patrick_35, (gile), BonusCAD etc. ..) à mes propres besoins. Par convention il est d’usage de changer le nom de l’auteur (mieux citer la routine originale dont on s’est inspiré ainsi que son auteur), mais laisser l’entête tel quel pourrait être une source de confusion pour d’autres utilisateurs) Bonne continuation, A+
  12. Bonjour, Si tu ne veux pas coder en dur tu peux les déclarer dans des variables (setq prefixe "surface: " suffixe " m²") Puis il suffit de les concaténer à la valeur de ton champ. ;; Attribut surface (mm² -> m²) aire (strcat prefixe "%<\\AcObjProp Object(%<\\_ObjId " (itoa id) ">%).Area \\f \"%lu2%pr2%ct8[1]\">%" suffixe ) A+
  13. Bonsoir jalna, Comme le sujet me rappel des souvenirs et en espérant que tu n’égareras plus la routine, je profite de l’occasion pour rappeler également la variante de Patrick_35, et la solution diésel de Rebcao http://cadxp.com/index.php?/topic/9621-cercle-multiple-avec-meme-centre/ Dans celui-ci il y a également une astuce de Tramber avec les poignées. http://cadxp.com/topic/33451-cercle-continu/ A+
  14. Bonjour Rebcao, Au cas où la variable GRIPS n’aurais pas désactivé les POIGNEES comme indiqué par (gile), alors regarde de coté de la variable GRIPOBJLIMIT car peut être que ta sélection dépasse le nombre d’objet spécifié par la variable. A+
  15. Effectivement avec angtof c’est là le gros avantage, bonne remarque et merci du rappel.
  16. Oui pas mieux, entièrement d’accord, lorsqu’il s’agit d’exprimer un angle en radians dans un autre système d’unité angulaire, mais dans le cas de la demande suivante… Cela laissait supposer la demande inverse pour pouvoir utiliser la valeur du gisement (supposé en grade) dans la fonction polar, mais à la lecture de l’autre post, je pense que je n’avais certainement pas tout saisie à la demande... A+
  17. Bonsoir, Oui Les conversions d’angles radians->grades->degrés (et vice-versa) ne sont que des règles de trois, pour un model de fonction de conversion voir dans le tutorial visual lisp de l’aide d’AutoCAD ou sur le forum, fait une recherche sur la fonction DTR La valeur 100 permet d’exprimer un angle ayant pour origine le nord (comme ça doit être le cas pour des gisements), en un angle ayant l’est pour origine, le signe moins permet le passage du sens horaire au sens trigonométrique. Et les valeurs pi et 200 permettent la conversion d’un système d’unité angulaire à l’autre. A+
  18. Salut, Si j’ai bien compris, cela revient à définir les coordonnées d’un point relativement à un autre en fonction de coordonnées polaire. Dans ce cas regarde la fonction polar qui renvoie les coordonnées d’un point, en fonction d’un point, d’un angle et d’une distance. Syntaxe: (polar point ang dist) Il te faut juste convertir l’angle de ton gisement exprimé en grades dans le sens horaires avec le nord pour origine (si ma mémoire et bonne), en une valeur d’angle exprimé en radians par rapport à l’axe des X positif augmentant dans le sens trigonométrique (par rapport au plan courant). Ce qui devrait te donner une expression du type : (polar pt (* Pi (/ (- (- ang 100)) 200.0)) dist) Exemple pour un point p1 ‘(10.0 10.0), d’un gisement de 150 gr et d’une distance de 10 unités : _$ (polar '(10.0 10.0) (* Pi (/ (- (- 150 100)) 200.0)) 10) (17.0711 2.92893) Cordialement A+
  19. Je viens de tester, superbes routines (gile), même si c’est avec retard, je tiens à m’associer à ce concert de louanges. A+
  20. Bonjour (gile), Merci beaucoup pour la piqure de rappel, car j’avais réagie sur le post… A ma décharge niveau version, j’ai toujours plusieurs trains de retard et si je n’applique pas, je ne mémorise pas... A+ Ps : Tes interventions sur ce forum sont toujours très appréciés.
  21. Bonjour, Je viens de poster 2 petites routines ici: http://cadxp.com/topic/37832-lister-les-proprietes-et-les-methodes-applicables-a-un-objet/page__pid__208465#entry208465 Monté sur le retour de la fonction atoms-family, fonction que j’avais complétement zappé au moment de cette discussion, je pense que tu devrais pouvoir y trouver une source d’inspiration à ton problème, si c’est encore d’actualité.. A+
  22. Bonjour, Pour faire suite à une discussion qui date un peu, http://cadxp.com/topic/36853-faire-une-liste-des-proprietes-dun-object/page__p__201435__fromsearch__1#entry201435 Voici 2 petites fonctions qui devrait éviter l’emploi de listes de propriétées pour obtenir un équivalent à la fonction vlax-dump-object. ;; (bv:property obj check-modify) VDH-Bruno ;; --------------------------------------------------------------------------- ;; Retourne la liste des propriétées de l'objet. Si check-modify est non nil, ;; les propriétées en lecture seules sont omises. ;; Exemples: ;; (bv:property (vlax-ename->vla-object (car(entsel))) nil) ;; --> Retourne la liste de toutes les propriétés consultable de l'objet. ;; (bv:property (vlax-ename->vla-object (car(entsel))) T) ;; --> Retourne la liste de toutes les propriétés modifiable de l'objet. (defun bv:property (obj check-modify) (vl-sort (apply 'append (mapcar '(lambda (x) (if (and (/= x (setq x (vl-string-subst "" "VLA-GET-" x))) (vlax-property-available-p obj x check-modify) ) (list x) ) ) (atoms-family 1) ) ) '< ) ) ;; (bv:method obj) VDH-Bruno ;; --------------------------------------------------------------------------- ;; Retourne la liste des méthodes applicable à l'objet. ;; Exemples: ;; (bv:method (vlax-ename->vla-object (car(entsel)))) (defun bv:method (obj) (vl-sort (apply 'append (mapcar '(lambda (x) (if (and (/= x (setq x (vl-string-subst "" "VLA-" x))) (vlax-method-applicable-p obj x) ) (list x) ) ) (atoms-family 1) ) ) '< ) ) Exemples d’applications sur une entité cercle : $ (setq objCircle (vlax-ename->vla-object (entmakex '((0 . "CIRCLE") (62 . 1) (10 4.0 4.0 0.0) (40 . 1.0))))) #<VLA-OBJECT IAcadCircle 22f58a84> Pour lister toutes les propriétés accessibles en lecture : _$ (bv:property objCircle nil) ("APPLICATION" "AREA" "CENTER" "CIRCUMFERENCE" "COLOR" "DATABASE" "DIAMETER" "DOCUMENT" "HANDLE" "HASEXTENSIONDICTIONARY" "HYPERLINKS" "LAYER" "LINETYPE" "LINETYPESCALE" "LINEWEIGHT" "MATERIAL" "NORMAL" "OBJECTID" "OBJECTNAME" "OWNERID" "PLOTSTYLENAME" "RADIUS" "THICKNESS" "TRUECOLOR" "VISIBLE") Pour lister les seules propriétés accessibles en écriture : _$ (bv:property objCircle T) ("AREA" "CENTER" "CIRCUMFERENCE" "COLOR" "DIAMETER" "LAYER" "LINETYPE" "LINETYPESCALE" "LINEWEIGHT" "MATERIAL" "NORMAL" "PLOTSTYLENAME" "RADIUS" "THICKNESS" "TRUECOLOR" "VISIBLE") Pour obtenir la liste de toutes les méthodes applicable à l’objet cercle : _$ (bv:method objCircle) ("ARRAYPOLAR" "ARRAYRECTANGULAR" "COPY" "DELETE" "ERASE" "GETBOUNDINGBOX" "GETEXTENSIONDICTIONARY" "GETXDATA" "HIGHLIGHT" "INTERSECTWITH" "MIRROR" "MIRROR3D" "MOVE" "OFFSET" "ROTATE" "ROTATE3D" "SCALEENTITY" "SETXDATA" "TRANSFORMBY" "UPDATE" ) A comparer avec l’emploie d’un appel à la fonction vlax-dump-object _$ (vlax-dump-object objCircle T) ; IAcadCircle: Interface AutoCAD Circle ; Valeurs de propriétés: ; Application (RO) = #<VLA-OBJECT IAcadApplication 00d098b4> ; Area = 3.14159 ; Center = (4.0 4.0 0.0) ; Circumference = 6.28319 ; Diameter = 2.0 ; Document (RO) = #<VLA-OBJECT IAcadDocument 0b4dcc20> ; Handle (RO) = "11A" ; HasExtensionDictionary (RO) = 0 ; Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 22f58894> ; Layer = "0" ; Linetype = "ByLayer" ; LinetypeScale = 1.0 ; Lineweight = -1 ; Material = "ByLayer" ; Normal = (0.0 0.0 1.0) ; ObjectID (RO) = 2130256016 ; ObjectName (RO) = "AcDbCircle" ; OwnerID (RO) = 2130251000 ; PlotStyleName = "Couleur_ 1" ; Radius = 1.0 ; Thickness = 0.0 ; TrueColor = #<VLA-OBJECT IAcadAcCmColor 22f5a6e0> ; Visible = -1 ; Méthodes prises en charge: ; ArrayPolar (3) ; ArrayRectangular (6) ; Copy () ; Delete () ; GetBoundingBox (2) ; GetExtensionDictionary () ; GetXData (3) ; Highlight (1) ; IntersectWith (2) ; Mirror (2) ; Mirror3D (3) ; Move (2) ; Offset (1) ; Rotate (2) ; Rotate3D (3) ; ScaleEntity (2) ; SetXData (2) ; TransformBy (1) ; Update () T A+
  23. VDH-Bruno

    vla-put-

    Bonsoir, Pour savoir si une propriété est modifiable ou pas, il existe plusieurs moyen plus ou moins direct: Tout d’abord un vlax-dump-object, retourne la liste des propriétés de l’objet, les propriétés suivie de (RO) signifie qu'elles ne sont accessible qu'en lecture seul (vlax-get), sinon elles sont en plus accessible en écriture (vlax-put). Exemple sur un arc : _$ (vlax-dump-object (vlax-ename->vla-object (car(entsel)))) ; IAcadArc: Interface AutoCAD Arc ; Valeurs de propriétés: ; Application (RO) = #<VLA-OBJECT IAcadApplication 0000000140102308> ; ArcLength (RO) = 784.38 ; Area (RO) = 84936.2 ; Center = (1738.22 1330.67 0.0) ; Document (RO) = #<VLA-OBJECT IAcadDocument 0000000002c162c8> ; EndAngle = 4.60922 ; EndPoint (RO) = (1719.89 1153.57 0.0) ; EntityTransparency = "DuCalque" ; Handle (RO) = "236" ; HasExtensionDictionary (RO) = 0 ; Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 00000000330cb198> ; Layer = "0" ; Linetype = "ByLayer" ; LinetypeScale = 1.0 ; Lineweight = -1 ; Material = "ByLayer" ; Normal = (0.0 0.0 1.0) ; ObjectID (RO) = 42 ; ObjectID32 (RO) = 42 ; ObjectName (RO) = "AcDbArc" ; OwnerID (RO) = 43 ; OwnerID32 (RO) = 43 ; PlotStyleName = "ByLayer" ; Radius = 178.043 ; StartAngle = 0.203658 ; StartPoint (RO) = (1912.59 1366.68 0.0) ; Thickness = 0.0 ; TotalAngle (RO) = 4.40556 ; TrueColor = #<VLA-OBJECT IAcadAcCmColor 00000000330cb070> ; Visible = -1 T Il est également possible d’utiliser l’argument optionnel check-modify de la fonction vlax-property-available-p pour savoir si une propriété d’objet est modifiable dans le cas d’un arc la fonction retourne nil pour la propriété StartPoint, cette dernière étant consultable en lecture seul. _$ (vlax-property-available-p (vlax-ename->vla-object (car(entsel))) 'StartPoint T) nil D’une manière générale les propriétés modifiables sont celles que l’on retrouve dans la définition dxf de l’entité. Et ce sont également celles qui apparaissent en clair dans la fenêtre de propriétés d’AutoCAD. A+
  24. VDH-Bruno

    Ajuster avec dimension

    Bonjour, Oui à ceci près que le 0.1 (1/10) devient 0.2 (1/5), petit rappel : Pour arrondir un nombre positif à la précision voulue par défaut, On divise le nombre par la précision souhaité (pour en connaitre le nombre de part) Puis on garde la partie entière (avec la fonction fix) que l’on multiplie par la précision voulue.. Dans ton cas (* (fix (/ (- d2 d1) 5)) 5) avec d2>d1 Pour arrondir un nombre positif à la précision voulue, Il suffit d’ajouter 0.5 au résultat de la division du nombre par sa précision. Dans ton cas on obtient (* (fix (+ (/ (- d2 d1) 5) 0.5)) 5) avec d2>d1 A+
  25. Hélas pas autant que je le souhaiterais... Sinon si tu as 5 minutes recharge la version précédente, j’avais été trop vite et je conservais dans le cas du clore les caractéristiques de la nouvelle polyligne ajouté et pas celle d’origine. A+
×
×
  • 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é