-
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)
-
Salut, Bien sûr, les boites dialogues servant essentiellement à récupérer des entrées spécifiées par l'utilisateur, tu peux faire comme j'ai fait pour Res_hel ou Helicoide. Tu peux faire dans un premier temps une fonction d'appel à la ligne de commande (defun c:-MonLisp ...) qui sert juste à récupérer les entrées utilisateurs (ce que fera la future boite de dialogue) et à lancer la (ou les) fonction qui utilisera ces données (defun Make_MonLisp ...). Ceci permet de déjà tester si tout fonctionne bien. Par la suite tu pourras faire la boite dialogue avec unfichier DCL et un LISP (defun c:MonLisp ...) qui fera la même chose que -MonLisp (entrées utilisateurs et lancement de Make_MonLisp). au final tu auras ainsi deux commandes : avec ou sans boite de dialogue pour faire la même chose.
-
Question \"bête\" sur les Champs dynamiques
(gile) a répondu à un(e) sujet de lecrabe dans AutoCAD 2007
Salut Jalna, Je ne comprends pas bien la demande, tu préfères avoir une ligne plutôt que l'objet en surbrillance ? Tu veux que la persistance de la ligne soit optionnelle ? Par exemple, créer une ligne à conserver ou non : ;;; CHP-OBJ -Gilles Chanteau- 16/12/06 -Version 2.0- ;;; Crée une ligne entre le champ et l'objet qui lui est lié. ;;; L'utilisateur peut choisir de conserver la ligne ou non. ;;; Fonctionne avec les champs contenus dans des tableaux ou des blocs. (defun c:chp-obj (/ ent txt elst dic chp obj) (vl-load-com) (while (not (and (setq ent (nentsel "\nSélectionnez un champ: ")) (setq txt (car ent)) (setq elst (entget txt)) (member (cdr (assoc 0 elst)) '("MTEXT" "ATTRIB")) ) ) (princ "\nAucun champ sélectionné.") ) (if (and (setq dic (cdr (assoc 360 elst))) (setq dic (cdr (assoc 360 (entget dic)))) (setq chp (cdr (assoc 360 (entget dic)))) (= (cdr (assoc 0 (entget chp))) "FIELD") (setq chp (cdr (assoc 360 (entget chp)))) ) (if (setq obj (cdr (assoc 331 (entget chp)))) (progn (entmake (list '(0 . "LINE") (cons 10 (if ( (setq pt (mapcar '+ (cdr (assoc 10 (entget (car (last ent))))) (cdr (assoc 10 elst)) ) ) (setq pt (cdr (assoc 10 elst))) ) ) (cons 11 (cdr (assoc 10 (entget obj)))) ) ) (initget "Oui Non") (if (= "Non" (getkword "\nConserver la ligne ? [Oui/Non] : ") ) (entdel (entlast)) ) ) (princ "\nLe champ n'est pas lié à un objet.") ) (princ "\nLe texte ne contient pas de champ.") ) (princ) ) [Edité le 16/12/2006 par (gile)] -
Salut, Menu Outils > Personnaliser > Paramètres de programme (acad.pgp) À la fin du fichier, tu ajoutes les alias que tu veux en respectant la syntaxe, exemple : ; -- Alias de commande définis par l'utilisateur -- ; Apportez vos modifications ou ajouts aux alias de commande AutoCAD par défaut de cette section ; afin de garantir la migration de ces paramètres lors de la mise à niveau vers la version ; ultérieure d'AutoCAD. Si des alias de commande en double sont trouvés dans ce fichier, ceux ; figurant dans la section Alias de commande définis par l'utilisateur auront la priorité sur les ; doublons qui figurent plus haut dans le fichier. 3M, *MIRROR3D 3R, *ROTATE3D ... Tu enregistres et tu fermes. Puis tu recharges le fichier en faisant : REINIT > cocher "Fichier PGP" > OK ou RE-INIT puis 16 Il se peut que tu aies des messages d'erreur du style : Erreur de syntaxe dans le fichier AutoCAD.pgp, ligne 9 dans le champ 1 Ces erreurs n'ont jamais empêché les alias que j'avais créés de fonctionner.
-
Question \"bête\" sur les Champs dynamiques
(gile) a répondu à un(e) sujet de lecrabe dans AutoCAD 2007
Salut, Voilà pour un Mtexte contenant un champ (ou un champ). Je n'y avais pas pensé au premier jet, mais en utilisant nentsel plutôt que entsel, je récupère la sous-entité Mtext dans un tableau ou dans un bloc. ;;; CHP-OBJ -Gilles Chanteau- 16/12/06 ;;; Met en surbrillance l'objet lié au champ sélectionné. ;;; Une option permet de créer une ligne du texte à l'objet. ;;; Fonctionne avec les champs contenus dans des tableaux ou des blocs. (defun c:chp-obj (/ ent txt elst dic chp obj) (while (not (and (setq ent (nentsel "\nSélectionnez un champ: ")) (setq txt (car ent)) (setq elst (entget txt)) (member (cdr (assoc 0 elst)) '("MTEXT" "ATTRIB")) ) ) (princ "\nAucun champ sélectionné.") ) (if (and (setq dic (cdr (assoc 360 elst))) (setq dic (cdr (assoc 360 (entget dic)))) (setq chp (cdr (assoc 360 (entget dic)))) (= (cdr (assoc 0 (entget chp))) "FIELD") (setq chp (cdr (assoc 360 (entget chp)))) ) (if (setq obj (cdr (assoc 331 (entget chp)))) (progn (redraw obj 3) (initget "Oui Non") (if (= "Oui" (getkword "\nLier l'objet au texte ? [Oui/Non] : ") ) (entmake (list '(0 . "LINE") (cons 10 (if ( (setq pt (mapcar '+ (cdr (assoc 10 (entget (car (last ent))))) (cdr (assoc 10 elst)) ) ) (setq pt (cdr (assoc 10 elst))) ) ) (cons 11 (cdr (assoc 10 (entget obj)))) ) ) ) ) (princ "\nLe champ n'est pas lié à un objet.") ) (princ "\nLe texte ne contient pas de champ.") ) (princ) ) -
Question \"bête\" sur les Champs dynamiques
(gile) a répondu à un(e) sujet de lecrabe dans AutoCAD 2007
Salut, Il y a peut être un moyen plus simple, mais l'expression suivante retourne la liste DXF de l'objet auquel le champ est lié : (entget (cdr (assoc 331 (entget (cdr (assoc 360 (entget (cdr (assoc 360 (entget (cdr (assoc 360 (entget (cdr (assoc 360 (entget (car (entsel))))) ) ) ) ) ) ) ) ) ) ) ) ) ) Edit : pour le mettre en surbrillance. (redraw (cdr (assoc 331 (entget (cdr (assoc 360 (entget (cdr (assoc 360 (entget (cdr (assoc 360 (entget (cdr (assoc 360 (entget (car (entsel))))) ) ) ) ) ) ) ) ) ) ) ) ) 3 ) [Edité le 15/12/2006 par (gile)] -
Fusion de plusieurs polylignes
(gile) a répondu à un(e) sujet de fabcad dans Suggestions de développements
J'ai jouté une ancienne routine que j'avais. (defun c:fusion (/ AcDoc Space ss lst reg) (vl-load-com) (setq AcDoc (vla-get-activeDocument (vlax-get-acad-object)) Space (if (= 1 (getvar "CVPORT")) (vla-get-PaperSpace AcDoc) (vla-get-Modelspace AcDoc) ) ) (prompt "\nSélectionnez les polylignes à fusionner: ") (if (setq ss (ssget '((0 . "LWPOLYLINE")))) (progn (vla-StartUndoMark AcDoc) (setq lst (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))) ) reg (vl-catch-all-apply 'vlax-invoke (list Space 'addRegion lst) ) ) (if (vl-catch-all-error-p reg) (princ (vl-catch-all-error-message reg)) (progn (while (cadr reg) (vla-boolean (car reg) acUnion (cadr reg) ) (setq reg (cons (car reg) (cddr reg))) ) (region2pline (vlax-vla-object->ename (car reg))) (vla-Highlight (vlax-ename->vla-object (entlast)) :vlax-true) ) ) (vla-EndUndoMark AcDoc) ) ) (princ) ) (defun region2pline (ent / ec os ss n lst) (setq echo (getvar "CMDECHO")) (setq os (getvar "OSMODE")) (setvar "CMDECHO" 0) (setvar "OSMODE" 0) (command "_.explode" ent) (setq ss (ssget "_p")) (repeat (setq n (sslength ss)) (setq lst (cons (ssname ss (setq n (1- n))) lst)) ) (if (vl-every '(lambda (x) (or (= (cdr (assoc 0 (entget x))) "LINE") (= (cdr (assoc 0 (entget x))) "ARC") ) ) lst ) (progn (command "_.ucs" "_save" "scu_init") (command "_.ucs" "_zaxis" '(0 0 0) (cdr (assoc 210 (entget (ssname ss 0)))) ) (if (= (getvar "PEDITACCEPT") 1) (command "_.pedit" (ssname ss 0) "_join" ss "" "") (command "_.pedit" (ssname ss 0) "_yes" "_join" ss "" "") ) (command "_.ucs" "_restore" "scu_init") (command "_.ucs" "_delete" "scu_init") ) ) (setvar "CMDECHO" echo) (setvar "OSMODE" os) ) -
http://img320.imageshack.us/img320/2342/chellewo4.png
-
Salut, Dans l'espace papier, tu ouvres la barre d'outils "Fenêtres", tu sélectionnes ta fenêtre, et tu choisis une échelle dans la liste déroulanteo u tu en entre une nouvelle.
-
Sache juste, cher sangracosan, que sur ce forum, si tu n'écris pas dans un français un tant soit peu correct nombre de membres ne liront même pas ton message.
-
En presentation objet lechelle se réinitialise
(gile) a répondu à un(e) sujet de jo974 dans AutoCAD 2007
Je ne suis pas sûr de comprendre, mais essaye : Sélection de la (ou des) fenêtre(s) > clic droit > verrouiller la vue > Actif -
Non c'est Align_insert Voir plus bas dans le code (defun c:Align_insert ...) c: indique que ce qui suit est comme un nom de commande et peut être entré directement à la ligne de commande
-
Fusion de plusieurs polylignes
(gile) a répondu à un(e) sujet de fabcad dans Suggestions de développements
Salut, Voici déjà un premier jet, à partir des polylignes sélectionnées un région est créée, elle est mise en surbrillance, les polylignes source ne sont pas effacées. Si tu veux supprimer les polylignes source, transformer la région en polyligne, merci de préciser la demande, je verrais ce que je (ou d'autres) peux faire. (defun c:pl2reg (/ AcDoc Space ss lst reg) (vl-load-com) (setq AcDoc (vla-get-activeDocument (vlax-get-acad-object)) Space (if (= 1 (getvar "CVPORT")) (vla-get-PaperSpace AcDoc) (vla-get-Modelspace AcDoc) ) ) (prompt "\nSélectionnez les polylignes à fusionner: ") (if (setq ss (ssget '((0 . "LWPOLYLINE")))) (progn (vla-StartUndoMark AcDoc) (setq lst (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))) ) reg (vl-catch-all-apply 'vlax-invoke (list Space 'addRegion lst) ) ) (if (vl-catch-all-error-p reg) (princ (vl-catch-all-error-message reg)) (progn (while (cadr reg) (vla-boolean (car reg) acUnion (cadr reg) ) (setq reg (cons (car reg) (cddr reg))) ) (vla-Highlight (car reg) :vlax-true) ) ) (vla-EndUndoMark AcDoc) ) ) (princ) ) -
Salut, Je ne sais pas si j'ai bien compris la demande, le texte (ou mtexte) est mis parallèle à la tangente à la polyligne au point le plus proche du point d'insertion du texte. (defun c:align-txt (/ text pline pt ang) (vl-load-com) (if (and (setq text (car (entsel "\nSélectionnez un texte: "))) (wcmatch (cdr (assoc 0 (entget text))) "*TEXT") (setq pline (car (entsel "\nSélectionnez une polyligne: "))) (= (cdr (assoc 0 (entget pline))) "LWPOLYLINE") ) (progn (vla-StartUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)) ) (foreach n '(text pline) (set n (vlax-ename->vla-object (eval n))) ) (setq pt (vlax-curve-getClosestPointTo pline (vlax-get text 'InsertionPoint) ) ang (angle pt (mapcar '+ pt (vlax-curve-getFirstDeriv pline (vlax-curve-getParamAtPoint pline pt) ) ) ) ) (if (= (vla-get-ObjectName text) "AcDbMText") (setq ang (- ang (angle '(0 0 0) (getvar "UCSXDIR")))) ) (vla-put-Rotation text ang) (vla-EndUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)) ) ) ) (princ) )
-
Avant que certains, encore plus "pointilleux/pinailleurs" que moi ne le fasssent remarquer, je précise que ce tracé (arc de cercle) n'est pas géométriquement exact, il semble plutôt s'agir d'un arc elliptique (pas vérifié). C'est la méthode préconisée dans les ouvrages de menuiserie et elle est, à mon avis, suffisament proche de la courbe exacte pour que les différences soient largement tolérables. "le papier de verre fera le reste" comme on dit.
-
Non, je n'ai jamais eu ce problème, j'ai pourtant une carte graphique plutôt genre "GameBoy" (Nvidia Geforce Fx 5600) Si tu veux voir une listes des cartes certifiées ou supportées par AutoCAD 2007, c'est ici.
-
Salut, Pas besoin de savoir programmer pour utiliser des LISP (ou d'autres programmes). Il suffit de les charger et de les lancer. Si tu télécharges Res_hel, par exemple, tu trouveras dans le Zip, outre un fichier lisez_moi.txt qui en explique rapidement le fonctionnement, trois autres fichiers : Res_hel.lsp, Res_hel.dcl et Res_hel.vlx. Le plus simple, après avoir extrait les fichier est de ne charger que le fichier Res_hel.vlx, c'est un fichier compilé (compilation de Res_hel.lsp et Res_hel.dcl). Depuis AutoCAD, dans le menu Outils > AutoLISP > Charger une application ... tu retrouves le fichier Res_hel.vlx et tu le charges, il sera chargé dans le dessin courant. Si tu veux qu'il soit chargé à chaque démarrage, tu cliques sur Contenu ... (la valise) et tu l'ajoutes aux fichiers qui sont chargés à chaque démarrage. La procédure est la même pour les fichiers *.arx, *.lsp, *.dvb, *.dbx, *.vlx, *.fas. Si tu copies directement un code LISP dans un forum (et ils sont nombreux ...) tu le colles dans le bloc-note et tu l'enregistres avec l'extension .lsp, ensuite tu peux le charger de la même façon. [Edité le 12/12/2006 par (gile)]
-
Je confirme, j'avais remarqué ça sur 2007. L'aide dit pourtant que la clé est retournée non abrégée. si on fait : (vlax-ldata-put "dict" "c1" "test") (vlax-ldata-put "dict" "c2" 120) (vlax-ldata-list "dict") retourne (("c" . 120) ("c" . "test")) Il faut peut-être se contenter de clés avec seul caractère (alphabétique ou numérique) pour les différencier ? :casstet: :mad:
-
Salut, Toujpurs pas de réseau hélicoïdal dans AutoCAD 2007... ...mais un LISP ici et un tutoriel là. On peut charger Res_hel depuis les Téléchargements proposés par les membres, setction LISP et VisualLISP ou depuis les liens dans les sujets sus cités.
-
Salut, Je suis d'acord avec JL, le raccord de moulure d'une partie courbe sur une partie courbe ou droite est un arc de cercle. Je vais essayer d'expliquer la méthode que j'avais utilisée pour cette table Louis XV. Pour trouver l'arc de cercle (ou le cercle) de chaque raccord, il faut, en 2D, faire deux parallèles de la rive chantournée. http://img185.imageshack.us/img185/8774/moulure1sh6.png Puis tracer un cercle, option 3 points, avec les trois points d'intersection. http://img166.imageshack.us/img166/1171/moulure2pi4.png Extruder le profil suivant le chemin d'une courbe. http://img167.imageshack.us/img167/8550/moulure3vq7.png Extruder un cylindre à partir du cercle. http://img185.imageshack.us/img185/2071/moulure4ra6.png Le soustraire à la moulure. http://img146.imageshack.us/img146/4634/moulure5nr2.png Idem pour la courbe suivante, avec un cylindre creux. http://img153.imageshack.us/img153/9460/moulure6yb1.png Le raccord est "juste". http://img96.imageshack.us/img96/9863/moulure7fj4.png
-
Version 1.4 Ajout d'une option : Tous ou T à entrer à la place de la sélection du deuxième segment pour faire le même "raccord" entre tous les segments de la poly 3D. [Edité le 11/12/2006 par (gile)]
-
lisp pour dessiner un arc avec 2 Pt et sa longueur
(gile) a répondu à un(e) sujet de willfrca dans Routines LISP
Avec 2 points et la longueur de l'arc, il faut que les 2 points soient des points "remarquables" départ/centre, fin/centre, ou départ/fin. Si un des deux points est un point quelconque sur l'arc, il existe une infinité d'arc de la longueur spécifiée passant par ces deux points. Comme tu semblais dire dans ton premier message qu'aucun des points n'est le centre, regarde du côté de arc_del (Départ, Extrémité, Longueur) dans le lien donné par Patrick ou de arc_length le lien donné par Bonuscad. [Edité le 10/12/2006 par (gile)] -
lisp pour dessiner un arc avec 2 Pt et sa longueur
(gile) a répondu à un(e) sujet de willfrca dans Routines LISP
Tu peux voir aussi ce sujet, plus général sur les relations entre les dimensions dans un arc de cercle. -
lisp pour dessiner un arc avec 2 Pt et sa longueur
(gile) a répondu à un(e) sujet de willfrca dans Routines LISP
Je ne suis pas sûr d'avoir compris la demande, mais il me semble bien qu'il ne puisse y avoir de réponse ni en LISP, ni d'aucune autre manière : les données (2 points quelconques et une longueur de corde) n'étant pas suffisantes pour définir un arc unique. -
Salut, Oui, comme les X-datas ça permet de conserver des données dans le dessin. Les données peuvent être stockées dans un Vla-object (entité graphique du dessin) ou une chaine (dictionnaire). Vois ce sujet.
-
Salut, Pense à utiliser l'aide d'AutoCAD : tu lances la commande et tu tapes F1, l'aide s'ouvre à la page de la commande concernée. http://img46.imageshack.us/img46/399/surfgauqe1.png Avant de lancer la commande SURFGAU (_EDGESURF) il faut pramétrer les variables systèmes SURFTAB1 et SURFTAB2 qui définissent respectivement le nombre de mailles sur M et N.
