-
Compteur de contenus
12 247 -
Inscription
-
Dernière visite
-
Jours gagnés
208
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par (gile)
-
Mais pas quand la couleur est changée avec CHPROP ou la fenêtre propriétés.
-
commande imprimer avec test
(gile) a répondu à un(e) sujet de zebulon_ dans Pour aller plus loin en LISP
Dans la barre d'état, mais uniquement dans l'espace présentation. -
commande imprimer avec test
(gile) a répondu à un(e) sujet de zebulon_ dans Pour aller plus loin en LISP
Salut, Déjà dans la version 2005 (peut-être même 2004, je ne me souviens plus). -
Re, Je pensais que tu voulais modifier les proprités de plusieurs textes d'un seul coup.
-
Salut, S'il s'agit d'attribuer les mêmes propriétés à plusieurs textes multilignes, après avoir fait ta sélection comme le suggère jalna ou en les "grippant" directement à l'écran, tu peux les modifier dansr la fenêtre Propriétés (CTRL+1).
-
Voici une version avec les commandes internationalisées et les invites francisées : EDIT: suppression des bbcodes obsolètes : [surligneur] [/surligneur] ;;;CADALYST 10/05 Tip 2065: HatchMaker.lsp Hatch Maker (c) 2005 Larry Schiele ;;;* ====== B E G I N C O D E N O W ====== ;;;* HatchMaker.lsp written by Lanny Schiele at TMI Systems Design Corporation ;;;* Lanny.Schiele@tmisystems.com ;;;* Tested on AutoCAD 2002 & 2006. -- does include a 'VL' function -- should work on Acad2000 on up. ;;; Traduction littérale et approximative des invites en français : Gile (defun c:drawHatch (/ os) (command "_undo" "_begin") (setq os (getvar "OSMODE")) (setvar "OSMODE" 0) (command "_ucs" "_w") (command "_pline" "0,0" "0,1" "1,1" "1,0" "_c") (command "_zoom" "_c" "0.5,0.5" 1.1) (setvar "OSMODE" os) (setvar "SNAPMODE" 1) (setvar "SNAPUNIT" (list 0.01 0.01)) (command "_undo" "_end") (alert "Dessiner le modèle dans un carré de 1x1 \nen utilisant uniquement des POINTS et des LIGNES..." ) (princ) ) (defun C:SaveHatch (/ round dxf ListToFile user SelSet SelSetSize ssNth Ent EntInfo EntType pt1 pt2 Dist AngTo AngFrom XDir YDir Gap DeltaX DeltaY AngZone Counter Ratio Factor HatchName HatchDescr FileLines FileLines FileName Scaler ScaledX ScaledY RF x y h _AB _BC _AC _AD _DE _EF _EH _FH DimZin ) ;;;* BEGIN NESTED FUNCTIONS (defun round (num) (if (>= (- num (fix num)) 0.5) (fix (1+ num)) (fix num) ) ) (defun dxf (code EnameOrElist / VarType) (setq VarType (type EnameOrElist)) (if (= VarType (read "ENAME")) (cdr (assoc code (entget EnameOrElist))) (cdr (assoc code EnameOrElist)) ) ) (defun ListToFile (TextList FileName DoOpenWithNotepad AsAppend / TextItem File RetVal ) (if (setq File (open FileName (if AsAppend "a" "w" ) ) ) (progn (foreach TextItem TextList (write-line TextItem File) ) (setq File (close File)) (if DoOpenWithNotepad (startapp "notepad" FileName) ) ) ) (FindFile FileName) ) ;;;* END NESTED FUNCTIONS (princ (strcat "\n." "\n 0,1 ----------- 1,1" "\n | | " "\n | Lignes et | " "\n | points doivent | " "\n | être accrochés | " "\n | au plus proche | " "\n | 0.01 | " "\n | | " "\n 0,0 ----------- 1,0" "\n." "\nNota: Les lignes doivent être dessinées entre 0,0 et 1,1 et sur une grille de 0.01." ) ) (textscr) (getstring "\nTaper [ENTER] pour continuer...") (princ "\nSelectionnez un modèle de 1x1 constitué de lignes et/ou de points pour un nouveau motif de hachures..." ) (while (not (setq SelSet (ssget (list (cons 0 "LINE,POINT"))))) ) (setq ssNth 0 SelSetSize (sslength SelSet) DimZin (getvar "DIMZIN") ) (setvar "DIMZIN" 11) (if (> SelSetSize 0) (princ "\nAnalyse des entités...") ) (while (< ssNth SelSetSize) (setq Ent (ssname SelSet ssNth) EntInfo (entget Ent) EntType (dxf 0 EntInfo) ssNth (+ ssNth 1) ) (cond ((= EntType "POINT") (setq pt1 (dxf 10 EntInfo) FileLine (strcat "0," (rtos (car pt1) 2 6) "," (rtos (cadr pt1) 2 6) ",0,1,0,-1" ) ) (princ (strcat "\n" FileLine)) (setq FileLines (cons FileLine FileLines)) ) ((= EntType "LINE") (setq pt1 (dxf 10 EntInfo) pt2 (dxf 11 EntInfo) Dist (distance pt1 pt2) AngTo (angle pt1 pt2) AngFrom (angle pt2 pt1) IsValid nil ) (if (or (equal (car pt1) (car pt2) 0.0001) (equal (cadr pt1) (cadr pt2) 0.0001) ) (setq DeltaX 0 DeltaY 1 Gap (- Dist 1) IsValid T ) (progn (setq Ang (if (< AngTo pi) AngTo AngFrom ) AngZone (fix (/ Ang (/ pi 4))) XDir (abs (- (car pt2) (car pt1))) YDir (abs (- (cadr pt2) (cadr pt1))) Factor 1 RF 1 ) (cond ((= AngZone 0) (setq DeltaY (abs (sin Ang)) DeltaX (abs (- (abs (/ 1.0 (sin Ang))) (abs (cos Ang))) ) ) ) ((= AngZone 1) (setq DeltaY (abs (cos Ang)) DeltaX (abs (sin Ang)) ) ) ((= AngZone 2) (setq DeltaY (abs (cos Ang)) DeltaX (abs (- (abs (/ 1.0 (cos Ang))) (abs (sin Ang))) ) ) ) ((= AngZone 3) (setq DeltaY (abs (sin Ang)) DeltaX (abs (cos Ang)) ) ) ) (if (not (equal XDir YDir 0.001)) (progn (setq Ratio (if (< XDir YDir) (/ YDir XDir) (/ XDir YDir) ) RF (* Ratio Factor) Scaler (/ 1 (if (< XDir YDir) XDir YDir ) ) ) (if (not (equal Ratio (round Ratio) 0.001)) (progn (while (and (<= Factor 100) (not (equal RF (round RF) 0.001)) ) (setq Factor (+ Factor 1) RF (* Ratio Factor) ) ) (if (and (> Factor 1) (<= Factor 100)) (progn (setq _AB (* XDir Scaler Factor) _BC (* YDir Scaler Factor) _AC (sqrt (+ (* _AB _AB) (* _BC _BC))) _EF 1 x 1 ) (while (< x (- _AB 0.5)) (setq y (* x (/ YDir XDir)) h (if (< Ang (/ pi 2)) (- (+ 1 (fix y)) y) (- y (fix y)) ) ) (if (< h _EF) (setq _AD x _DE y _AE (sqrt (+ (* x x) (* y y))) _EF h ) ) (setq x (+ x 1)) ) (if (< _EF 1) (setq _EH (/ (* _BC _EF) _AC) _FH (/ (* _AB _EF) _AC) DeltaX (+ _AE (if (> Ang (/ pi 2)) (- _EH) _EH ) ) DeltaY (+ _FH) Gap (- Dist _AC) IsValid T ) ) ) ) ) ) ) ) (if (= Factor 1) (setq Gap (- Dist (abs (* Factor (/ 1 DeltaY)))) IsValid T ) ) ) ) (if IsValid (progn (setq FileLine (strcat (angtos AngTo 0 6) "," (rtos (car pt1) 2 8) "," (rtos (cadr pt1) 2 8) "," (rtos DeltaX 2 8) "," (rtos DeltaY 2 8) "," (rtos Dist 2 8) "," (rtos Gap 2 8) ) ) (princ (strcat "\n" FileLine)) (setq FileLines (cons FileLine FileLines)) ) (princ (strcat "\n * * * Ligne avec angle non valide " (angtos AngTo 0 6) (chr 186) " proscrit. * * *" ) ) ) ) ((princ (strcat "\n * * * Entite non valide " EntType " proscrit(e).") ) ) ) ) (setvar "DIMZIN" DimZin) (if (and FileLines (setq HatchDescr (getstring T "\nDécrivez brièvement ce motif de hachures: " ) ) (setq FileName (getfiled "Fichier de hachures" "I:\\Acad\\Hatch\\" ; Chemin du dossier des hachures personnalisées "pat" 1 ) ) ) (progn (if (= HatchDescr "") (setq HatchDescr "Modèle de hachures personnalisé") ) (setq HatchName (vl-filename-base FileName) FileLines (cons (strcat "*" HatchName "," HatchDescr) (reverse FileLines) ) ) (princ "\n============================================================" ) (princ (strcat "\nAttendez que le fichier de hachures soit créé SVP...\n" ) ) (ListToFile FileLines FileName nil nil) (command "_delay" 1500) ; Délai requis pour que le fichier soit créé et trouvé (stupide, mais requis) (if (findfile FileName) (progn (setvar "HPNAME" HatchName) (princ (strcat "\nLe motif de hachures '" HatchName "' est prêt pour l'utilisation !" ) ) ) (progn (princ "\nImpossible de créer le fichier de hachures:") (princ (strcat "\n " FileName)) ) ) ) (princ (if FileLines "\nAbandon." "\nImpossible de créer le motif de hachures avec les entités sélectionnées." ) ) ) (princ) ) (princ "\n ************************************************************** " ) (princ "\n** **") (princ "\n* HatchMaker.lsp written by Lanny Schiele -- enjoy! *" ) (princ "\n* *") (princ "\n* Taper DRAWHATCH pour avoir l'environment de dessin. *" ) (princ "\n* Taper SAVEHATCH pour enregistrer le motif créé. *" ) (princ "\n** **") (princ "\n ************************************************************** " ) (princ) Nota : On peut remplacer " I:\\Acad\\Hatch\\" par le chemin de son choix (le dossier doit être dans un chemin de recherche des fichiers de support) ou par "" (le dossier par défaut est celui contenu dans la variable DWGPREFIX). [Edité le 30/10/2005 par (gile)]
-
Tu peux aller voir ce sujet.
-
modification de boite DCL
(gile) a répondu à un(e) sujet de cedwit dans Pour aller plus loin en LISP
Salut, Le code .DCL permet simplement de définir le contenu d'une boite de dialogue, décrire ses éléments (tile), si tu modifies le fichier *.DCL (en respectant la syntaxe, bien sûr) et que tu l'enregistres, l'apparence de la boite va changer, mais les nouveaux boutons seront inactifs. C'est avec le LISP que tu contrôles la boite de dialogue, par exemple, tu vas pouvoir associer des fonctions aux éléments de la boite de dialogue pour les besoins du programme. L'élaboration de boites de dialogue avecles langages LISP et DCL est plutôt "prise de tête" et suppose une bonne connaissance du LISP. Tu peux voir des exemples dans ce sujet, et celui-là. Sinon, pour t'en dire plus, il faudrait en savoir d'avantage sur ce que tu veux exactement... [Edité le 27/10/2005 par (gile)] -
Curieux :casstet: As tu essayé MENU (sans le underscore) ?
-
fmult avec boite de dialogue (suite)
(gile) a répondu à un(e) sujet de zebulon_ dans Pour aller plus loin en LISP
Salut, Je m'immisce... Extrait de l'aide -
Salut, Je vais essayer d'être clair. Place un point à l'endroit de ton point de vue (au milieu de la rue, à environ 1.55 m du sol) ce point est appelé "caméra" par AutoCAD. Place un (ou des) autre point à l'endroit ou tu veux regarder (cible) Active l'accrochage aux objet "nodal" Tape VUEDYN sur la ligne de commande. Choisis les objets que tu veux avoir dans ton rendu et les points créés. Option "POints" et sélectionne la cible puis la caméra. Options "DIstance" la perspective est générée, quand le curseur est sur 1 la caméra est sur le point spécifié. Entrer pour sortir de la commande et enregistre la vue.
-
Re, Pour avoir l'affichage en lignes cachées dans une fenêtre sans avoir à passer par l'aperçu : - avec 2006, 2005 (et sûrement 2004, je ne sais plus), tu peux faire : double clic dans cette fenêtre -> Affichage -> Cacher et t'assurer, en selectionnant la fenêtre -> clic droit ->Tracé de l'ombrage que l'option "Comme affiché" est cochée. - dans tous les cas, copier la fenêtre dans laquelle tu a fait _SOLPROF et geler dans la nouvelle fenêtre le calque PH-...
-
Salut, Çà ne serait pas plutôt la variable HPSCALE ?
-
Re, Après avoir remis le paramètre des lignes cachées inactif dans les options. Dans la fenêtre où tu veux afficher les lignes cachées en pointillé, tu passes en espace objet (double clic dans la fenêtre) et tu fais _SOLPROF (Dessin -> Solides -> Configuration -> Profil) et ENTER aux trois invites. Cette commande crée une projection 2D de la vue en 3D sur 2 nouveaux calques. Tu desactives dans cette fenêtre tous les calques sauf les PV-... et PH-... qui ont été créés par _SOLPROF (tu peux renommer ces calques) sur le calque PV-... il y a les lignes visibles sur PH-... les lignes cachées, tu peux attribuer à ce calque un type de lignes interrompu. Pour la fenêtre dans laquelle tu ne veux pas voir les lignes cachées, tu sélectionne la fenêtre, clic droit -> Tracer de l'ombrage -> Lignes cachées. Le résultat n'apparaît pas à l'écran, il faut faire un aperçu du tracé. Tu peux aussi faire une copie de la première fenêtre et y geler le calque PH-... NOTA : la commande _SOLPROF ne fonctionne qu'avec des solides. [Edité le 26/10/2005 par (gile)]
-
Salut, Outils -> Options... -> Préferences utilisateur -> Paramètres des lignes cachées...
-
fmult avec boite de dialogue (suite)
(gile) a répondu à un(e) sujet de zebulon_ dans Pour aller plus loin en LISP
Salut, Pour le nombre d'arguments insuffisants, l'erreur vient de moi : faute de frappe en introduisant le code de test de chargement de geomcal :mad2: En fait çà marche très bien. J'ai modifié mon précédent message en conséquence. -
fmult avec boite de dialogue (suite)
(gile) a répondu à un(e) sujet de zebulon_ dans Pour aller plus loin en LISP
Impressionant !!! J'ai remarqué une ou deux petites choses : les appels de la commande cal (do_DefCreerAccept et do_DefModifierAccept) ne fonctionnent pas si geomcal.arx n'est pas chargé, peut-être faudrait il glisser quelque part quelque chose du genre : (if (not (member "geomcal.arx" (arx))) (arxload "geomcal") ) J'ai remarqué aussi dans le*.dcl : sans guillemets, les attributs peuvent ils être autre choses que des chaines de caractères (des variables) ? En tous cas, BRAVO !!! [Edité le 26/10/2005 par (gile)] -
Salut, Une sorte de pas à pas en image de la création d'un filet, le LISP en fait ensuite un réseau, unit les éléments et coupe à la longueur spécifiée : http://img361.imageshack.us/img361/2798/vis5ci.jpg Pour les explications, j'ai fait une vague traduction des invites et des commantaires : ; THREAD.LSP Creates 3D solid (ACIS) threads. 3/3/98 ; ; Corrected 3/4/98 ; Corrected again 3/6/98 ; ; written by: Jim Fitzgerald ; ; Credit goes to Bernd Hoffmann and Ken Shearron for showing ; me this modeling technique and helping me spot ; some bugs. ; ;------------------------------------------------------------------- ; ; This is a way to make 3D solid external threads in ; AutoCAD R13 and R14. Just so you know, it's not ; geometrically correct, but it's pretty darn close. ; There is no error trapping or anything like that. ; ; You are prompted for the Nominal thread size ; (actual size like .190 or .112, not #10, #4, etc..), ; threads per inch (tpi), the total length of the thread, and a ; center point. The program works by creating a single thread ; and then arraying it out to the proper length. The threads are ; drawn a little long and then sliced off to the correct length. ; This program only draws the thread, you're on your own drawing ; the rest of the screw. For internal threads, just subtract this from ; another solid. ; ; Note, the threads created by this can make for some rather big files, ; so make sure your system is up to it. Also, it might take a while ; to union all of the single threads together so be patient. ; ;------------------------------------------------------------------- ; This is gratuiciel . Do what you want with it. If you modify it, ; please take my name off of it so I don't have to support your ; software. ; ; All the typical legal stuff applies. I make no claims that ; this actually works. Use it at your own risk. You can't sue me ; for any problems that you have as a result of using this ; (either personal or professional). Don't drink and ; drive. Eat your vegetables, and call your mother. ;------------------------------------------------------------------- ; ; Traduction littérale approximative des invites et commentaires: Gile (defun c:thread ( / nom pitch length_t cpt total pt1 pt1z pt2 pt3 ang pt1a pt1az pt3a pt1b pt1bz pt3b pt4 pt4 pt6 pt7 pt8 pt9 pt10 pt11 pt12 ss osm) ;------------------------------------------------------------------- ; Saisit la taille nominale, le nombre de filets ; par millimètres, et la longueur totale puis calcule ; un tas de points géométriques. ; Tous les accrochages aux objets sont désactivés. ;------------------------------------------------------------------- (setq nom (getdist "\nTaille nominale: ") pitch (/ 1.0 (getreal "\nFilets par millimètre: ")) length_t (getdist "\nLongueur totale du filetage: ") cpt (getpoint "Point d'axe: ") total (+ (fix (/ length_t pitch)) 2) pt1 (list (- (car cpt) (/ nom 2.0)) (cadr cpt)) pt1z (list (- (car cpt) (/ nom 2.0)) (cadr cpt) 1.0) pt2 (polar pt1 (/ (* 30.0 pi) 180.0) 0.1) pt3 (list (+ (car pt1) nom) (+ (cadr pt1) (/ pitch 2.0))) ang (angle pt1 pt3) pt1a (polar pt1 (+ ang (/ pi 2.0)) pitch) pt1az (list (car pt1a) (cadr pt1a) 1.0) pt3a (polar pt1a ang nom) pt1b (polar pt1 (- ang (/ pi 2.0)) pitch) pt1bz (list (car pt1b) (cadr pt1b) 1.0) pt3b (polar pt1b ang nom) pt4 (polar pt3 (/ (* 150.0 pi) 180.0) 0.1) pt5 (inters pt1 pt2 pt3 pt4 nil) pt6 (list (car pt5) (cadr cpt)) pt7 (polar pt1 (/ (* 330.0 pi) 180.0) 0.1) pt8 (polar pt3 (/ (* 210.0 pi) 180.0) 0.1) pt9 (inters pt1 pt7 pt3 pt8 nil) pt10 (list (car pt9) (cadr pt3)) pt11 (polar cpt (/ pi 2.0) pitch) pt12 (polar pt11 (/ pi 2.0) length_t) osm (getvar "osmode") ) (setvar "osmode" 0) ;------------------------------------------------------------------- ; Dessine deux cones qui sont inversés et décalés d'un demi pas. ; Chaque cone est coupé à l'angle de la ligne de crête ; et ils sont unis. ;------------------------------------------------------------------- (princ "\nCréation du filetage...çà peut prendre un peu de temps.") (command "_.pline" pt1 pt5 pt6 "_c") (command "_.revolve" "_l" "" pt5 pt6 "") (command "_.slice" "_l" "" pt1 pt3 pt1z pt5) (command "_slice" "_l" "" pt1a pt3a pt1az pt3) (setq ss (ssadd (entlast))) (command "_.pline" pt3 pt9 pt10 "_c") (command "_.revolve" "_l" "" pt9 pt10 "") (command "_.slice" "_l" "" pt1 pt3 pt1z pt9) (command "_.slice" "_l" "" pt1b pt3b pt1bz pt3) (setq ss (ssadd (entlast) ss)) (command "_.union" ss "") ;------------------------------------------------------------------- ; Le solide ci-dessus est coupé en deux et une moitié est réfléchie. ; Cela crée "l'hélice" du filetage. La hauteur de ce filet est pour ; l'instant égale au double du pas, mais l'excès sera soit absorbé ; soit coupé à la dernière étape. ;------------------------------------------------------------------- (command "_.slice" ss "" "xy" cpt "_b") (setq ss (ssadd (entlast) ss)) (command "_.mirror" "_l" "" pt1 "@10(command "_.union" ss "") ;------------------------------------------------------------------- ; Le filet est multiplié en réseau puis l'ensemble est uni (cette ; partie peut prendre un peu de temps). ; Le solide résultant est coupé à la longueur spécifiée. ;------------------------------------------------------------------- (setq e (entlast)) (command "_.-array" ss "" "_r" total 1 pitch) (repeat (1- total) (setq e (entnext e) ss (ssadd e ss) ) ) (command "_.union" ss "") (command "_.slice" "_l" "" "_zx" pt11 pt12) (command "_.slice" "_l" "" "_zx" pt12 pt11) (princ "\nDone") (setvar "osmode" osm) (princ) )
-
Salut, Tu peux faire un dossier contenant tes routines LISP, tes icones, tes menus (*.MNS ou *.CUI) et un fichier *.MNL (même nom que le MNS ou CUI) dans lequel tu commande le chargement de tes routines (load "MaRoutine1") (load "MaRoutine2") etc... Il suffit ensuite d'indiquer à AutoCAD le chemin de ce dossier dans les chemin de recherche des fichiers de support et de charger ton MNS avec la commande chargmnu pour un menu partiel. Personnellement, comme je partage les postes que j'utlise avec d'autres, j'utilise des MNS ou CUI qui sont des copies des AutoCAD.mns ou AutoCAD.cui auxquels j'ai rajouté mes outils et je les charge avec la commande menu dans un nouveau profil utilisateur, dans ce cas il faut ajouter au fichier *.MNL (load "acad.mnl") pour avoir les LISP utilisé par les menus originaux. Il y a sûrement d'autres façons de faire, celle-là marche.
-
Aire d\'une zone avec Autocad 2004
(gile) a répondu à un(e) sujet de dracenois83 dans AutoCAD Architecture
Salut, En tranformant tes objets en régions (menu Dessin -> région ou barre d'outils Dessin) tu peux ensuite leur faire subir des opérations booléennes (addition, soustraction et intersection). Ces opérations sont dans le Menu Modification -> Edition de solides ou dans la barre d'outils Edition de solides. Tu pourra ensuite trouver des renseignements sur la région résultant de ces opérations : l'aire mais aussi des proprités mécaniques. -
Salut, C'est encore une fois un problème de traduction (anglais -> international) Il suffit de remplacer : par : (defun c:drawHatch (/) (command "_undo" "_begin") (setq os (getvar "OSMODE")) (setvar "OSMODE" 0) (command "_ucs" "_w") (command "_pline" "0,0" "0,1" "1,1" "1,0" "cc") (command "_zoom" "_c" "0.5,0.5" 1.1) (setvar "OSMODE" os) (setvar "SNAPMODE" 1) (setvar "SNAPUNIT" (list 0.01 0.01)) (command "_undo" "_end") (alert "Draw pattern within 1x1 box using LINE or POINT entities only..." ) (princ) ) Ansi que : par : (command "_delay" 1500) ;delay required so file can be created and found (silly, but req.)
-
Salut, _SOLPROF ? Voir ce sujet [Edité le 25/10/2005 par (gile)]
-
Salut, Tu peux utiliser la commande _CHPROP en insérant ce bout de code juste après la création de la ligne concernée : (command "_chprop" (entlast) ; Dernière entité créée "" ; Validation de la sélection "_lt" "cache" ; Type de ligne "" )
-
J'ai eu ce message sous 2006 dans une boite de dialogue qui propose oui ou non pour la boucle d'arrêt. PS : pour voir le "subterfuge" utilisé pour simuler la vis, diminuer le nombre de filets par "inch" (par unité de dessin, en fait) : entrer, par exemple successivement 10 0.2 20 et faire orbite3d.
-
Encore un très joli coup de Bonuscad !!! La routine marche très bien, il faudrait juste remplacer la variable length qui est le nom d'une fonction AutoLISP pour éviter le message : Affectation à un symbole protégé: LENGTH Voulez vous entrer une boucle d'arrêt ? Une petite traduction des invites et c'est nickel !!!
