-
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, Personnellement, j'utilise l'éditeur VisualLISP inclus dans AutoCAD. Il a le mérite d'être en français (j'ai assez de l'aide aux développeurs pour réviser mon anglais), de pouvoir evaluer les routines (ou morceaux de codes) directement dans AutoCAD, d'accéder directement à l'aide et ce qu'il propose comme fonctions me suffit amplement (je ne les utilise pas toutes). À l'occasion, je jetterais un coup d'oeil un peu plus approfondi sur les liens que tu donnes. Merci. [Edité le 29/6/2006 par (gile)]
-
Alienware: bien pour la cao ou pas?
(gile) a répondu à un(e) sujet de krueger dans AutoCAD Architecture
D'après ce que j'ai pu voir c'est chez Keynux que j'ai trouvé la configuration requise pour AutoCAD 2007 la moins onéreuse (Ymax DX). -
Salut, Un petit LISP qui utilise la sélection dans une fenêtre polygonale à partir des sommets de la polyligne sélectionnée. - Pour "griper" les objets à l'intérieur de la poly avant de lancer une commande : taper s_poly et sélectionner la poly. - Pour répondre au "Choix des objets" après avoir lancé une commande de modification, taper (sp) et sélectionner la poly. (defun c:s_poly () (sssetfirst nil (sp)) (princ) ) (defun sp (/ ent) (ssget "_WP" (mapcar '(lambda (pt) (trans pt ent 1) ) (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget (setq ent (car (entsel "\nSélectionnez une polyligne: "))) ) ) ) ) ) ) [Edité le 29/6/2006 par (gile)]
-
Tu veux parler de la "Saisie dynamique" ? C'est le bouton "DYN" de la ligne d'état ou la touche F12 (variable système DYNMODE).
-
Salut, La commande LOFT est bien, je pense celle à utiliser. Je ne pense pas que dans ce cas il soit nécessaire de spécifier un chemin, l'option "cOUpes uniquement" puis "Lissée/ajustée" Il me semble qu'il est préférables que les coupes soient fermées.
-
Salut, Une fois que tu as attribué le matériau bois à chacun des objets, pour orienter les fibres, il faut que tu fasses le "Mapping" de la texture pour chaque objet. http://img160.imageshack.us/img160/6171/mapping6oa.png
-
En passant par un bloc, l'insertion du développé semble plus rapide, plus élégante (pas de ligne élastique) et permet la rotation pour un meilleur positionnement. Je modifie le LISP ci dessus en conséquence. PS : Le bloc est ensuite supprimé et purgé. [Edité le 29/6/2006 par (gile)]
-
Voici une petite routine qui crée un bloc figurant le développé de la surface réglée sélectionnée. Cette routine fonctionne avec tous les maillages 3D à 2 sommets M (surfaces réglées, cones, cylindres ...). La méthode employée consiste en une "triangulation" de chaque maille pour récupérer les distances entre les sommets et "reconstruction" des triangles en 2D dans le plan du SCU pour retrouver les sommets qui serviront à faire une spline. La précision de la méthode dépend donc du nombre de sommets N (ne pas hésiter à mettre une valeur importante à SURFTAB1). Après avoir positionné la région dans le dessin, il est proposé à l'utilisateur de faire un miroir, s'il préfère afficher l'autre face du développé. Toutes les critiques sont les bienvenues, notamment de la part des "forts en descro" concernant la méthode (je suis autodidacte dans ce domaine aussi). NOUVELLE VERSION (08/07/06) Le bloc est nommé par défaut avec un nom indexé : SurfDev_1, SurfDev_2 ... À la fin de la routine, il est proposé à l'utilisateur de renommer le bloc. ;;; SURFDEV -Gilles Chanteau- 08/07/06 ;;; Crée un bloc représentant le développé d'un maillage 3D ouvert ou ;;; fermé à 2 sommets M (surface réglée). ;;; La précision du développé augmente avec le nombre de mailles N (SURFTAB1) ;;; Après positionnement du bloc (insertion et rotation), il est proposé à ;;; l'utilisateur d'exécuter un miroir pour afficher l'autre face du développé. ;;; Par défaut, le bloc est nommé SurfDev_1, SurfDev_2, en fonction de l'existence ;;; de blocs du même nom dans le dessin. ;;; Il est proposé à l'utilisateur de le renommer. ;;; ;;;[color=#FF0000] NOTA : si les surfaces développables sont toujours des surfaces réglées, toutes ;;; les surfaces réglées ne sont pas forcément développables. ;;; Surfdev n'évalue si la surface sélectionnée est rigoureusement développable, ;;; et peut donc créer un développé erroné ou inexact pour celle-ci.[/color] ;;; SQR retourne le carré du nombre (defun sqr (num) (if (numberp num) (* num num) ) ) ;;; ACOS Retourne l'arc cosinus du nombre (defun acos (num) (if (<= -1 num 1) (atan (sqrt (- 1 (sqr num))) num) ) ) ;;; THIRD_PT Retourne le point qui est à dist1 de pt1 et dist2 de pt2 (defun third_pt (pt1 pt2 dist1 dist2 /) (cond ((zerop dist1) pt1) ((zerop dist2) pt2) (T (polar pt1 (+ (angle pt1 pt2) (acos (/ (+ (sqr (distance pt1 pt2)) (sqr dist1) (- (sqr dist2))) (* 2 (distance pt1 pt2) dist1) ) ) ) dist1 ) ) ) ) ;;; Index_name Crée un nom indexé dont l'indice n'est pas présent dans la table spécifiée (defun index_name (tbl prfx / nom compt) (setq nom (strcat prfx "1") compt 1 ) (while (tblsearch tbl nom) (setq compt (1+ compt) nom (strcat prfx (itoa compt)) ) ) nom ) ;;; Liste des sommets d'une polyligne 3D (defun 3dpoly_pts (ent / pt pts) (while (setq pt (cdr (assoc 10 (entget (entnext ent))))) (setq ent (entnext ent) pts (cons pt pts) ) ) pts ) ;;; Fonction principale (defun c:SurfDev (/ *error* osm cmd del obj lst n lst1 lst2 rslt1 rslt2 n1 n2 ss ind new) ;; Redéfinition de *error* (defun *error* (msg) (if (= msg "Fonction annulée") (princ) (princ (strcat "\nErreur: " msg)) ) (command "_undo" "_end") (command "_u") (princ) ) (setq osm (getvar "OSMODE") cmd (getvar "CMDECHO") del (getvar "DELOBJ") ) (while (not (setq obj (car (entsel "\Sélectionnez la surface à développer: ")) ) ) ) (if (and (= (cdr (assoc 0 (entget obj))) "POLYLINE") (zerop (logand (cdr (assoc 70 (entget obj))) 207)) (< (cdr (assoc 71 (entget obj))) 3) ) (progn (command "_undo" "_begin") (setq lst (3dpoly_pts obj) n 0 n1 0 n2 0 ) (repeat (/ (length lst) 2) (setq lst1 (cons (nth n lst) lst1) n (1+ n) ) ) (repeat (/ (length lst) 2) (setq lst2 (cons (nth n lst) lst2) n (1+ n) ) ) (if (equal (car lst1) (car lst2) 1e-9) (setq rslt1 (cons '(0 0 0) rslt1) rslt2 (cons '(0 0 0) rslt2) rslt1 (cons (polar '(0 0 0) (angle (car lst1) (cadr lst1)) (distance (car lst1) (cadr lst1)) ) rslt1 ) rslt2 (cons (third_pt (car rslt1) '(0 0 0) (distance (cadr lst1) (cadr lst2)) (distance (car lst2) (cadr lst2)) ) rslt2 ) lst1 (cdr lst1) lst2 (cdr lst2) ) (setq rslt1 (cons '(0 0 0) rslt1) rslt2 (cons (polar '(0 0 0) (angle (car lst1) (car lst2)) (distance (car lst1) (car lst2)) ) rslt2 ) ) ) (repeat (1- (length lst1)) (setq rslt1 (cons (third_pt (car rslt1) (car rslt2) (distance (nth n1 lst1) (nth (setq n1 (1+ n1)) lst1) ) (distance (nth n2 lst2) (nth n1 lst1)) ) rslt1 ) ) (if (equal (nth n1 lst1) (nth (1+ n2) lst2) 1e-9) (setq rslt2 (cons (car rslt1) rslt2) n2 (1+ n2) ) (setq rslt2 (cons (third_pt (car rslt1) (car rslt2) (distance (nth n1 lst1) (nth (1+ n2) lst2)) (distance (nth n2 lst2) (nth (setq n2 (1+ n2)) lst2) ) ) rslt2 ) ) ) ) (setvar "CMDECHO" 0) (setvar "OSMODE" 0) (setvar "DELOBJ" 1) (setq ss (ssadd)) (foreach l (list rslt1 rslt2) (if (not (vl-every '(lambda (pt) (equal pt (car l) 1e-9)) l) ) (progn (command "_.spline") (mapcar 'command l) (command "" "" "") (ssadd (entlast) ss) ) ) ) (foreach fun (list 'car 'last) (if (not (equal (apply fun (list rslt1)) (apply fun (list rslt2)) 1e-9 ) ) (progn (command "_.line" (apply fun (list rslt1)) (apply fun (list rslt2)) "" ) (ssadd (entlast) ss) ) ) ) (setq ind (index_name "BLOCK" "SurfDev_")) (command "_.block" ind '(0 0 0) ss "") (setvar "OSMODE" osm) (command "_.insert" ind "_scale" 1) (princ "\nSpécifiez le point d'insertion: ") (command pause) (princ (strcat "\nSpécifiez l'angle de rotation <" (angtos 0) ">: " ) ) (command pause) (setq bloc (entlast)) (initget "Oui Non") (if (= "Oui" (getkword "\nEffectuer un miroir ? [Oui/Non] < Non >: ") ) (progn (command "_mirror" bloc "" (setq pt (cdr (assoc 10 (entget bloc)))) "_non" (polar pt 0.0 1) "_yes" "_.explode" bloc "_.block" ind "_yes" pt "_previous" "" ) (command "_.insert" ind "_scale" 1) (princ "\nSpécifiez le point d'insertion: ") (command pause) (princ (strcat "\nSpécifiez l'angle de rotation <" (angtos 0) ">: " ) ) (command pause) ) ) (initget "Oui Non") (if (= "Oui" (getkword (strcat "\nRenommer le bloc \"" ind "\" ? [Oui/Non] < Non >: " ) ) ) (progn (initdia) (command "_.rename" "_block") (while (< 7 (getvar "CMDACTIVE")) (command pause) ) (command) ) ) (command "_.undo" "_end") (setvar "CMDECHO" cmd) (setvar "DELOBJ" del) ) (princ "\nL'objet sélectionné n'est pas une surface développable." ) ) (princ) )[Edité le 29/6/2006 par (gile)][Edité le 30/6/2006 par (gile)][Edité le 2/7/2006 par (gile)][Edité le 8/7/2006 par (gile)][Edité le 19/12/2007 par (gile)]
-
Il faut d'abord enlever de sous le capot les pièces obsolètes : http://img239.imageshack.us/img239/3372/ombrage8ta.png J'ai du mal à croire que même avec les versions précédentes, tu n'aies pas fait un peu de "tuning" avant de te mettre au volant ;)
-
autocad 3d 2007 ET lignes caches des objets 3d dans l4espace de presentation
(gile) a répondu à un(e) sujet de jeanpoco dans AutoCAD Architecture
Eh non Patrick05, plus avec la 2007. http://img222.imageshack.us/img222/6915/options18ik.png D'ailleurs, à mon goût, cette option ne donnait pas toujours des résultats très satisfaisants. -
Un petit test vite fait (avec des réels) donnerait, chez moi, un léger avantage à la division : Et, dans les deux cas, un leger avantage à la Console VisualLISP par rapport à ligne de commande : [Edité le 28/6/2006 par (gile)]
-
autocad 3d 2007 ET lignes caches des objets 3d dans l4espace de presentation
(gile) a répondu à un(e) sujet de jeanpoco dans AutoCAD Architecture
Salut, La commande SOLPROF (menu Dessin -> Solides -> Configuration), à utiliser dans l'espace objet d'une fenêtre de présentation, génère sur 2 nouveaux calques, des blocs 2D correspondant aux projections des lignes visibles (calque VIS) et aux lignes cachées (calque HID) des solides 3D. Un sujet ici, sinon fais "Rechercher dans les forums" avec le mot solprof. Tu peux aussi utiliser la nouvelle commande APLANIRGEOM (_flatshot) et choisir un style de lignes cachées dans "Lignes foncées" (?!), cette commande ne s'utilise que dans l'espace objet et crée un bloc que tu peux ensuite insérer dans une présentation.. [Edité le 28/6/2006 par (gile)] -
Alienware: bien pour la cao ou pas?
(gile) a répondu à un(e) sujet de krueger dans AutoCAD Architecture
Salut, Il me semble, mais je peux me tromper, que la certification Autodesk concerne essentiellement les cartes graphiques À ma connaissance, seules quatre marques proposent des portables avec des cartes certifiées Autodesk (Nvidia quadro) - Alienware - Dell (Precision) - HP Compaq - Keynux Fais une recherche avec "Portable" dans "Rechercher dans les forums", le sujet a été encore récemment abordé. -
La commande ATTACHERMATERIAU (_MaterialAttach) et son icône sont dans la "Liste des commandes" de ton CUI chéri ;) http://img419.imageshack.us/img419/6795/attacher9de.png
-
Moi non plus ! Je ne sais pas si c'est uniquement une histore d'habitude, mais je préfère faire la modélisation 3D dans la fenêtre AutoCAD classique en utilisant les nouveaux outils à partir de mes barres d'outils. en plus, il semble que ce "Tableau de bord" ne soit pas personnalisable (voir ici) [Edité le 28/6/2006 par (gile)]
-
Je n'ai pas trouvé non plus, il doit s'agir d'un nouveau concept : "Le menu déroulant avec des icônes dedans".
-
Salut christian, C'est dans le "Tableau de bord" de l'espace modélisation 3D "Panneau de configuration" Marériaux.
-
Encore une fois, bravo Bonuscad. Dès que j'ai un peu de temps, je me repencherais sur cet obscur code. Merci, tu as ouvert une voie que j'avais ignorée tant par manque d'observation que par flemme ;)
-
C'est une horloge, qui mesure le temps écoulé depuis le début de la session en fraction de jour. (* 16400 (getvar "TDUSRTIMER")) retourne le nombre de secondes écoulées depuis l'ouverture de la session. En multipliant (getvar "TDUSRTIMER") par un grand nombre on fait "tourner plus vite la roulette",ce qui augmente le côté aléatoire du nombre ainsi retourné à chaque clic qui sert dans l'exemple de valeur d'angle. TDUSRTIMER peut sevir àchronométrer l'exécution d'une routine : ;;; Chronomètre ;;; Placer (setq t0 (get-utime)) au lancement des calculs ;;; et (setq t1 (get-utime)) (princ (strcat "\n; Temps: " (rtos (- t1 t0)) " sec")) à la fin (defun get-utime () (* 86400 (getvar "tdusrtimer")) )
-
Je m'aperçois que je viens de faire une réponse similaire à la même question ici, Je trouve çà inutile et un peu idiot de poser deux fois la même question !
-
Salut FormaBois, Dans la fenêtre "Personnaliser l'interface utilisateur", tu déploies l'arborescence des barres d'outils, tu choisis ta commande dans la "Liste des commandes" (en bas à gauche) et tu la fais glisser/déposer dans ta barre d'outils. Même procédure pour les menus, menus contextuels ...
-
Salut, Tu peux essayer avec la variable système TDUSRTIMER. Exemple pour une insertion multiple du bloc "MonBloc" : (while (setq pt (getpoint "\nPoint d'insertion: ")) (command "_insert" "MonBloc" "_scale" 1 "_rotate" (* 10000000 (getvar "tdusrtimer")) pt ) ) [Edité le 27/6/2006 par (gile)]
-
Merci Bonus, Mais j'avais essayé avec ce LISP, il traduit effectivement la liste entget d'un solide, mais dans un autre code quasi aussi incompréhensible et, pour moi, autant inexploitabe.
-
Salut, Eh non, les codes DXF des solides sont toujours aussi inexploitables, et je n'ai rien trouvé en vlisp qui puisse servir à accéder aux arrêtes et/ou aux faces d'un solide.
-
Peut-être voir du côté de la variable système ANGBASE.
