-
Compteur de contenus
12 247 -
Inscription
-
Dernière visite
-
Jours gagnés
209
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par (gile)
-
zoom avec la roulette pendant une orbite 3D ???
(gile) a répondu à un(e) sujet de restdays dans AutoCAD 2005
Salut, Quand tu zoomes, est-ce que ton pointeur est bien positionné sur le centre de la vue ? -
Salut, (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))) (vla-put-ActiveSpace AcDoc acPaperSpace) (if (setq sel (ssget "_:S:E" '((0 . "VIEWPORT")))) (progn (setq vpobj (vlax-ename->vla-object (ssname sel 0))) (vla-Display vpobj :vlax-true) (vla-put-MSpace AcDoc :vlax-true) (vla-put-ActivePViewport AcDoc vpobj) ) )
-
Salut Esbe, Regarde du côté de la variable système MEASUREMENT: Détermine si le dessin courant utilise des fichiers de type de ligne et des motifs de hachure métrique ou anglo-saxons.. 0 Système anglo-saxon ; utilise les fichiers de motifs de hachures et de type de ligne désignés par les paramètres de registre ANSIHatch et ANSILinetype. 1 Système métrique ; utilise les fichiers de motifs de hachures et de type de ligne désignés par les paramètres de registre ISOHatch et ISOLinetype. Edit : J'ai répondu sans lire le début du sujet, tout y était dit. [Edité le 22/11/2006 par (gile)]
-
Le LISP prop_profil accepte désormais aussi les régions.
-
Re, Voici une version plus aboutie, elle fonctionne avec les arcs, cercles, ellipses, lignes, polylignes, splines. les objets doivent être jointifs. Si plusieurs régions sont créées, les ilots dans le profil (trous) sont soustraits de la région qui a la plus grande superficie. Une fois le LISP chargé, taper prop_profil et sélectionner tous les objets qui constituent un profil. Si les objets sélectionnés constituent un contour fermé, une (ou des) région(s) est (sont) créée(s). Si plusieurs régions sont créées, celles dont les surfaces sont plus petites sont soustraites de celle dont la surface est la plus grande, pour ne donner qu'une région avec des ilots (trous). Seule la région créée est conservée (a sa place originale). Un message donne ensuite les moments d'inertie et l'aire de la région. (defun c:prop_profil (/ ss lst reg cen inert) (prompt "\nSélectionnez les objets décrivant le profil: ") (if (setq ss (ssget '((0 . "ARC,CIRCLE,ELLIPSE,LINE,LWPOLYLINE,REGION,SPLINE")))) (progn (setq lst (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))) ) ) (if (vl-every '(lambda (x) (= x "AcDbRegion")) (mapcar 'vla-get-ObjectName lst) ) (setq reg lst lst nil ) (progn (foreach obj lst (if (= (vla-get-ObjectName obj) "AcDbRegion") (setq lst (append (vlax-invoke obj 'Explode) (vl-remove obj lst))) ) ) (if (not (listp (setq reg (vl-catch-all-apply 'vlax-invoke (list (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object) ) ) 'addRegion lst ) ) ) ) ) (setq reg nil) ) ) ) (if reg (progn (setq reg (vl-sort reg '(lambda (e1 e2) ( (while (cdr reg) (vla-Boolean (last reg) acSubtraction (car reg)) (setq reg (cdr reg)) ) (setq cen (append (vlax-get (car reg) 'Centroid) '(0.0))) (vla-Move (car reg) (vlax-3d-point cen) (vlax-3d-point '(0 0 0))) (setq inert (vlax-get (car reg) 'MomentofInertia)) [surligneur](vla-Move (car reg) (vlax-3d-point '(0 0 0)) (vlax-3d-point cen))[/surligneur] (alert (strcat "Moments d'inertie.\nX: " (rtos (car inert) 2 1) "\nY: " (rtos (cadr inert) 2 1) "\nAire de la section: " (rtos (vla-get-Area (car reg))) "\nPérimètre: " (rtos (vla-get-Perimeter (car reg))) ) ) (mapcar 'vla-delete lst) ) (alert "Pas de région créée.") ) ) ) (princ) ) [Edité le 22/11/2006 par (gile)] [Edité le 23/11/2006 par (gile)]
-
Est tu bien sûr d'avoir copié tout le code et que le code ? :casstet: J'ai peur de ne pas bien comprendre, le LISP aussi, pour fermer les polylignes utilise un équivalent de la fonction clore.
-
Re, En l'état, la routine ci dessus ne fonctionne qu'avec des polylignes. Elle les ferme si elle ne le sont pas, crée une region, la déplace de façon à ce que le centre de gravité soit en 0,0 et retourne les moments d'inertitie dans un message. La polyligne source n'est pas effacée. Il est possible de modifier cette routine : - si la région doit être créée à partir de plusieurs objets - si les objets sources doivent être effacés. - si on préfère ne pas replacer la région à son point départ - si on veut mettre un objet point sur le centre de gravité etc ... Si tu veux bien préciser ta demande, je verrais ce que je peux faire. [Edité le 22/11/2006 par (gile)]
-
Salut, Une réponse en LISP : (defun c:inert_prof (/ pl reg cen inert) (if (setq pl (ssget "_:S:E" '((0 . "LWPOLYLINE")))) (progn (setq pl (vlax-ename->vla-object (ssname pl 0))) (vla-put-closed pl :vlax-true) (setq reg (car (vlax-invoke (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object) ) ) 'addRegion (list pl) ) ) ) (setq cen (append (vlax-get reg 'Centroid) '(0.0))) (vla-Move reg (vlax-3d-point cen) (vlax-3d-point '(0 0 0))) (setq inert (vlax-get reg 'MomentofInertia)) (alert (strcat "Moments d'inertie.\nX: " (rtos (car inert) 2 1) "\nY: " (rtos (cadr inert) 2 1) ) ) ) ) (princ) ) [Edité le 22/11/2006 par (gile)]
-
Tu peux créer un HYPERLIEN (commande du même nom).
-
Salut, bl:name, bl:layer, bl:x et bl:y sont les informations concernant le bloc, respectivement son nom, son calque et les coordonnées X etY de son point d'insertion. Tu peux mettre ou ne pas mettre ces champs dans ton fichier d'extraction. Ensuite tu ajoutess d'autres champs pour les attributs : att1, att2, att3... dont les noms correspondent aux étiquettes des attributs de ton bloc. Il peut y avoir dans ton fichier d'extraction plus de champs que d'attributs dans tes blocs (ton fichier sera plus polyvalent). Pour chaque champ, on indique son format, la lettre (c ou n) correspond au type de donnée (chaine de caractère ou numérique). Ces lettres sont suivies de 6 chiffres. Pour les champs de type caractère les trois premiers chiffres sont le nombre de caractères autorisé, les trois derniers sont toujours 000. Pour les valeurs numérique, les 3 premiers chiffres indiquent le nombre total de signes, les 3 derniers le nombre de décimales. Exemple : bl:name c050000 bl:x c012002 att1 c025000 Le premier champ est le nom du bloc, il peut contenir 050 caractères. Le deuxième champ est la coordonnées X du point d'insertion, il peut contenir 012 chiffres et affiche 002 décimales. Le troisième champ est un attribut dont l'étiquette est ATT1 et peut contenir 25 caractères. Pour que le fichier puisse servir pour des blocs dont les attributs sont indifféremment des valeurs numérique ou des chaines de caractères, il est préférable d'extraire tous les attributs comme des chaines de caractère, les valeurs numériques seront rconnues comme telle dans Excel. Tel que décrit, le fichier d'extraction pourra servir à extraire les attributs de tous les blocs dont les attributs ont des étiquettes nommées ATT1, ATT2, ATT3 etc... J'espère avoir été clair, tout cç est dit de mémoire, ça fait longtemps que je n'ai pas utilisé de LT. J'ai été un peu lent, les "anciens" sont plus vifs que moi ;) . [Edité le 22/11/2006 par (gile)]
-
Oui, d'après mes souvenirs, c'est possible. Depuis la boite de dialogue de personnalisation de l'interface (menu Outils > Personnaliser) à l'onglet "Racourci clavier". Ou directement dans le fichier MNS, section ***ACCELERATORS.
-
Salut, Pour modifier un menu contextuel, il faut modifier le fichier de menu .MNS que tu utilises. Si tu n'en as pas créé, c'est le fichier AutoCAD.mns situé dans : C:\Documents and Settings\NomUtilisateur\Application Data\Autodesk\AutoCAD 2005\R16.1\fra\support Dans le fichier MNS les menus contextuels sont décrits aux rubriques ***POP500 et suivantes. Dans le menu contextuel dans lequel tu veux ajouter la commande déplacer, tu ajoutes : ID_Move [&Déplacer]$M=$(if,$(eq,$(substr,$(getvar,cmdnames),1,4),GRIP),_move,^C^C_move) À noter qu'il est préférable de ne pas modifier les fichier originaux, il vaut mieux en créer des nouveaux.
-
Est-ce que cela peut convenir : (setenv "PlotToFilePath" "C:\\Test\\")
-
Salut, Je pense que cette ligne ne peut pas marcher : (vlax-put-property OutputObject 'DefaultPlotToFilePath "c:\\Test\\") Le preference Output est en lecture seule, extrait de l'aide: Il faut la trouver dans la base de registre.
-
Bon c'était pas encore tout à fait au point, le résultat retourné par WCS2RCS était faux quand le bloc avait subi une (ou des) rotation(s) 3D et une échelle non uniforme sur les différents axes. Ça semble maintenant fonctionner bans les cas les plus tordus.
-
Effectivement, la fonction EXTATTBE n'existe pas sur les LT, mais on peut tout de même extraire des attributs avec la fonction ATTEXTR. C'est un peu plus compliqué, il faut faire un fichier de gabarit d'extraction. Voir l'excellent didacticiel de Rebcao Devis, métré, estimation, quantitatif.
-
Salut, Je te donnes mon adresse, mais je ne suis pas sûr de pouvoir interpréter ton dessin (dans quelle mesure les LISP répondent à ta demande) n'étant pas de la partie. gilecantel(at)wanadoo.fr
-
ET oui toujours ces filtres de sélection
(gile) a répondu à un(e) sujet de oniwo59 dans Débuter en LISP
Salut, Les deux LISP suivant devraient répondre à ta demande. (defun c:match_textstyle (/ ss) (prompt "\Sélectionnez un style de texte.") (if (setq ss (ssget "_:S:E" '((0 . "*TEXT")))) (sssetfirst nil (ssget "_X" (list '(0 . "*TEXT") (assoc 7 (entget (ssname ss 0))))) ) ) ) (defun c:match_textheight (/ ss) (prompt "\Sélectionnez une hauteur de texte.") (if (setq ss (ssget "_:S:E" '((0 . "*TEXT")))) (sssetfirst nil (ssget "_X" (list '(0 . "*TEXT") (assoc 40 (entget (ssname ss 0))))) ) ) ) -
Salut, Je crains qu'il n'y ait confusion, le code de Maximilien retourne l'idenficateur de l'objet (référence DXF). Pour l'ID telle que spécifiée dans les champs dynamiques, c'est plutôt : (vla-get-ObjectID (vlax-ename->vla-object (car (entsel))))
-
Salut, Pour un LISP, après avoir enregistré le code sous le nom que tu veux avec l'extension .lsp, tu le charges dans le dessin (APPLOAD) puis tu tapes à la ligne de commande ce qui est écrit juste après le c: dans (defun c:... ) par exemple TL pour le LISP ci dessus (defun C:TL ...) Ou long_line pour celui-ci, qui semble correspondre à ce que tu cherches : total des longueurs de ligne et polylignes sur le calque sélectionné ou spécifié (possibilité d'enregistrer les résultats dans un fichier.
-
Tu peux faire ta sélection rapide par calque, vérifie l'opérateur : "= Egal à".
-
Merci, Je suis content que d'autres soient intéressés. Je suis bien sûr ouvert à tous les commentaires.
-
Salut, j'ai effectivement reçu ton mail, mais il n'y a pas de fichier joint :cool:
-
Salut, Le plus simple, tu charges le fichier Edit_bloc.vlx à partir de la boite de dialogue de la commande APPLOAD, puis tu tapes edit_bloc à la ligne de commande, la boite de dialogue devrait apparaître à l'écran. PS : il y a un petit fichier "Lisez moi" dans le ZIP.
-
Si le répertoire existe, l'expression retourne nil, s'il n'existe pas, il est créé et l'expression retourne T. Si tu veux tester avant : (vl-file-directory-p "c:\\Plans_en_PDF") [Edité le 17/11/2006 par (gile)]
