Aller au contenu

(gile)

Moderateurs
  • Compteur de contenus

    12 247
  • Inscription

  • Dernière visite

  • Jours gagnés

    209

Tout ce qui a été posté par (gile)

  1. Salut, PICKADD à 1 ou Outils >> Options ... >> onglet Sélection >>décocher 3Utilise maj pour ajouter à la sélection. Rebcao a fait de merveilleux PDF avec les variables et les Galères les plus courantes, fais une recherche ... Le TOP QUIZ des "Galères" AutoCAD - Toutes les variables système AutoCAD le BEST OF des variables système AutoCAD [Edité le 22/8/2006 par (gile)]
  2. (gile)

    Le Zoom Objet !

    Là, je ne vois pas, il y a effectivement une marge de l'orde de 1mm entre l'objet et la fenêtre, moi ça me semble raisonnable.
  3. (gile)

    Export de profil

    Salut, Tu trouveras une méthode décrite ici. Importer un profil sur un nouveau poste ne suffit pas s'il fait appel à un menu personnalisé, il faut aussi déménager le menu (fichier .cui) et tout ce qui va avec.
  4. (gile)

    Le Zoom Objet !

    Salut, La macro pour un bouton zoom objet est toute simple, c'est ce que tu tapes à la ligne de commande avec un espace ou un point-virgule correspondant à chaque "Enter" au début on met souvent ^C^C qui correspond à "échap échap" pour être sûr de sortir de la commande en cours ou une apostrophe (') pour faire une commade transparente. Vois l'aide, Guide de personnalisation >> Personnalisation de l'interface utilisateur >> Création de macros. Dans ton cas, ça serait 'zoom;o;
  5. C'est l'utilisateur qui définit le profil, une entité unique composant d'un bloc, et l'orientation par rapport au SCU dans lequel il est défini donne la position des "coupes" le long du chemin (voir la première image du lien donné plus haut). Il est beaucoup plus simple, dans ce cas de faire un profil vertical, pour un limon, par exemple, c'est un rectangle. Si on incline le profil, il faudra le recalculer de telle sorte que les coupes verticales soient des rectangles, le profil devrait (pas vérifié) être composé d'arc elliptiques (les verticales) et de lignes (les horizontales) joints à des points décrivant un parallélograme. Pas évident à retrouver, ni à transformer en polyligne unique. Si le profil est un cercle, on pourrait l'orienter ou trouver l'ellipse corespondante, mais autant utiliser le balayage.
  6. Re, Daccord avec Tramber, il ne faut pas non plus que la polyligne ait été lissée. Suivant une spirale, effectivement, mais pour des chemins moins "réguliers", le débillardage n'est pas bon. Exemple, à gauche, avec la commande "BALAYAGE" (_SWEEP), à droite avec le LISP "DEBIL" réalisé à cet effet (Réponse 11, page 2 de ce sujet). http://img139.imageshack.us/img139/2570/debillardoa9.png [Edité le 22/8/2006 par (gile)]
  7. (gile)

    Copier modifie le dessin?

    LASTPOINT bien sûr. (et aussi DBMOD et ENTMODS, j'ai testé avec le LISP stavar de Bonuscad) [Edité le 22/8/2006 par (gile)]
  8. (gile)

    Côte sans texte..Urgent SVP !

    Salut, Tu peux faire un style de cote avec une hauteur de texte de 0.0000001 (on ne peut pas mettre 0)
  9. Salut, Tu peux voir ce sujet.
  10. (gile)

    Exporter menu

    Salut, Je vais essayer de t'expliquer comment je pratique, mais il y a sûrement d'autres méthodes. Le fichier menu que j'utilise s'appelle Gile2007.cui il est enregistré dans C:\Gile\Gile2007 avec les autres fichiers de personnalisation nécessaires à son fonctionnement (.mnl, .lsp, .dcl, .lin etc...). Sur mon poste, depuis ce menu, je crée un profil utilisateur que j'enregistre sous Gile2007.arg dans le même dossier Gile 2007. Sur un nouveau poste, je crée dans C: un nouveau dossier Gile dans lequel je colle mon dossier Gille 2007. Depuis AutoCAD, j'ajoute le chemin vers ce dossier dans les chemins de recherche de fichiers de support puis je charge mon profil utilisateur. Attention le chemin vers le dossier doit être le même que sur ton poste, parce qu'il est enregistré dans ton profil. Cette méthode permet de ne pas toucher aux profils existants sur le nouveau poste, et de tout supprimer (si tu veux) lors de ton départ. Si tu as des questions quant à la façon de procéder, n'hésite pas. [Edité le 21/8/2006 par (gile)]
  11. (gile)

    MATRIX

    Merci pour le lien Patrick_35, Le sujet est très interessant. À propos de la récupération de la matrice de transformation d'un bloc ou d'une xref, pour être sûr de récupérer la matrice de l'entité principale, et pas celle d'une sous entité retournée par nentselp, Joe Burke propose de reconstituer la matrice à partir des données/propriétés de l'entité principale. [Edité le 21/8/2006 par (gile)]
  12. Une autre idée qui peut être intéressante : une macro pour un bouton "on/off". Si le bit 32 n'est pas déjà actif, il est activé, s'il est déjà actif, il est désactivé : 'osmode;$M=$(xor,$(getvar,osmode),32);
  13. (gile)

    AutoCad et Linux ?

    Salut et bienvenue, Le sujet a souvent été abordé, tu peux faire une recheche dan les forums (en haut de la page sous "Les|Forums"), tu y trouveras notamment les sujets suivants : Autocad et Linux linux autocad et linux Autocad et linux autocad et Linux Autocad et linux
  14. Salut, Je pense que démarrer un sujet est suffisant pour avoir une (ou des) réponse(s) si des membres présent peuvent le faire. Il n'est pas nécessaire de poster des messages hors sujet ici ou là pour répéter ta demande et annoncer l'ouverture d'un nouveau sujet. Ceci dit, si tu fais une recherche dans les forums avec "excel", tu verras que le sujet a souvent été abordé. Personnellement, je ne sais pas faire ça en LISP, et je ne suis pas sûr qu'il soit possible en LISP de récupérer le contenu d'une cellule spécifique. Tu dois pouvoir faire un script à partir du fichier Excel, là aussi, le sujet a souvent été abordé, et il me semble me souvenir que Tramber a même fait un tuto à ce sujet.
  15. Re, Il y a plusieurs moyens de charger un LISP, je t'en donne une, tu pourras en trouver d'autres en faisant une Recherche dans les forums (c'est en haut de la page dans la bande grise sous "Les|Forums") avec le mot "appload" ou le mot "charger" (un seul mot à la fois). Donc, pour charger un LISP, tu copies le code (tout ce qui est sur fond de papier perforé, sans oublier un seul caractère) et tu le colles dans le bloc-note. Tu l'enregistres dans le répertoire que tu veux, sous le nom que tu veux, mais avec l'extension .lsp (par exemple sufdev.lsp). Dans AutoCAD, tu fais Menu Outils >> Charger un application... (ou tu tapes appload à la ligne de commande), dans la fenêtre qui s'ouvre, tu vas chercher ton LISP et ti cliques sur "Charger", le LISP est chargé dans le dessin en cours. Si tu veux qu'il soit chargé à chaque démarrage, tu cliques sur "Contenu" (la valise) et tu l'ajoutes à la liste. Pour lancer le LISP tu tapes à la ligne de commande ce qui est écrit juste après c: dans l'expression (defun c:SurfDev soit dans ce cas surfdev, puis tu suis les instruction sur la ligne de commande. [Edité le 19/8/2006 par (gile)]
  16. (gile)

    MATRIX

    Un sujet de discussion, ici, m'a donné une occasion d'utiliser les matrices de transformation. La demande est de faire pivoter des blocs insérés dans le plan du SCG dans le pan de la vue courante (perspective) pour qu'il soient lisibles. J'utilises ici la combinaison (avec mxm) de deux matrices, une pour changer de système de coordonnées (du SCG vers le plan dont la normale est VIEWDIR) et une de rotation (suivant l'angle -VIEWTWIST). ;; [b]WCS2View[/b] Pivote les objets texte ou bloc sélectionnés du SCG ;; dans le plan de la vue courante sur leurs points d'insertion (defun c:WCS2View (/ ss obj ins dir ang mat) (vl-load-com) (vla-StartUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)) ) (setq ss (ssget '((0 . "INSERT,*TEXT")))) (if ss (repeat (setq n (sslength ss)) (setq obj (vlax-ename->vla-object (ssname ss (setq n (1- n)))) ins (vlax-get obj 'InsertionPoint) dir (mapcar '- (trans (getvar "viewdir") 1 0) (trans '(0 0 0) 1 0) ) ang (- (getvar "viewtwist")) mat (mxm (mapcar '(lambda (x) (trans x 0 dir)) '((1 0 0) (0 1 0) (0 0 1)) ) (list (list (cos ang) (- (sin ang)) 0) (list (sin ang) (cos ang) 0) '(0 0 1) ) ) ) (vla-TransformBy obj (vlax-tmatrix (append (mapcar '(lambda (v1 v2) (append v1 (list v2)) ) mat (mapcar '- ins (mxv mat ins)) ) (list '(0 0 0 1)) ) ) ) ) ) (vla-EndUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)) ) (princ) ) Pour le processus inverse, depuis la même vue : ;; [b]View2WCS[/b] Pivote les objets texte ou bloc sélectionnés ;; du plan de la vue courante dans le SCG sur leurs points d'insertion (defun c:View2WCS (/ ss obj ins dir ang mat) (vl-load-com) (vla-StartUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)) ) (setq ss (ssget '((0 . "INSERT,*TEXT")))) (if ss (repeat (setq n (sslength ss)) (setq obj (vlax-ename->vla-object (ssname ss (setq n (1- n)))) ins (vlax-get obj 'InsertionPoint) dir (mapcar '- (trans (getvar "viewdir") 1 0) (trans '(0 0 0) 1 0) ) ang (getvar "viewtwist") mat (mxm (list (list (cos ang) (- (sin ang)) 0) (list (sin ang) (cos ang) 0) '(0 0 1) ) (mapcar '(lambda (x) (trans x dir 0)) '((1 0 0) (0 1 0) (0 0 1)) ) ) ) (vla-TransformBy obj (vlax-tmatrix (append (mapcar '(lambda (v1 v2) (append v1 (list v2)) ) mat (mapcar '- ins (mxv mat ins)) ) (list '(0 0 0 1)) ) ) ) ) ) (vla-EndUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)) ) (princ) ) À noter, l'ordre des matrices passées comme argument à mxm s'inverse, cette opération n'est pas "commutative". [Edité le 19/8/2006 par (gile)]
  17. Salut et bienvenue, Tu trouveras ICI, un LISP qui crée un bloc représentant la surface développée d'une surface réglée. Il faut que la surface à développer soit développable, sinon le résultat ne sera pas juste. Mais j'imagine que si tu as déssiné un bateau à bouchains vifs, les surfaces sont développables. Le LISP ne fonctionne qu'avec des surfaces réglées, si ton objet est un solide, il faut que tu récupères les arrêtes au niveau des bouchains pour faire des surfaces réglées. N'hésite pas à donner une valeur importante à SURFTAB1 (1000 ou plus) avant de lancer la commade SURFREGL (_rulesurf), la précision du tracé dépend en grande partie de cette valeur.
  18. (gile)

    aide sketchup

    Salut Esbe, On peut effectivement aussi passer par Menu "Window" >> "Model Info" >> "Units". Mais je pensais qu'il valait mieux passer par un gabarit pour que SU ouvre par la suite ce gabarit. Mais tu connais beaucoup mieux SU que moi ;)
  19. Si j'ai bien compris de mon côté, il s'agit de créer une polyligne 2D sur une polyligne 3D plane dans le plan de celle-ci (ce qui équivaudrait à transformer la polyl 3D en poly 2D si on supprimait la poly 3D). C'est ce que le LISP proposé fait. Pour se faire, je vois mal comment faire sans calculer la normale du plan de la polyligne 3D. S'il existe un autre moyen, je serais enchanté de le connaître... [Edité le 19/8/2006 par (gile)]
  20. J'utilise aussi trans, dans le LISP que je donne, je ne me sert pas de matrice de transformation, mais pour trans-former les coordonnées des sommets de la polyligne 2D, définies dans le SCG en coordonnées pour une lwpolyligne (ou polyligne 2d) définies dans son SCO, on est bien obligé de calculer ce "SCO" à partir de trois sommets de la polyligne 3D.
  21. (gile)

    aide sketchup

    Salut, Menu "Window" >>"Preferences" dans la boite dialogue, choisis Template (gabarit) et là tu as le choix entre millimètres, centimètres ou mètres pour le système métrique.
  22. Merci :red: En fait, je m'entraine, je dois bientôt donner des cours de maths (géométrie) et de dessin technique/géométrie descriptive dans le cadre d'une formation de régisseurs de spectacle. Pour Culnuteurdebase, J'ai abondamment commenté le LISP que je donne plus haut, si ça peut t'aider...
  23. Non, je suis menuisier, mais je me suis toujours intéressé à la géométrie, je pense que c'est un plus d'en connaître un peu quand on fait du dessin/traçage que ce soit sur une table à dessin, un ordinateur ou une pièce à usiner, et quand on joue à faire un peu de programmation en DAO, ça me paraît indispensable.
  24. Salut, Je vais essayer d'expliquer comment, à partir de trois points définissant un plan (donc non-alignés), on peu définir un système de coordonnées, comme le fait l'option 3points de la commande SCU. Les trois points sont : - l'origine du système de coordonnées, p0 de coordonnées : x0, y0, z0 - un point sur l'axe des X, p1 de coordonnées x1, y1, z1 - un point dans la zone des Y positifs p2 de coordonnées x2, y2, z2 Les segments p0p1 et p0p2 ne sont pas nécessairement perpendiculaires, mais la position de p2 par rapport au segment p0p1 (zone des Y positifs) influe sur la direction de l'axe Z par rapport an plan (règle de la main droite) http://img155.imageshack.us/img155/2758/normalesl4.png Un peu de calcul vectoriel. Le vecteur normal du plan est le vecteur unitaire (de 1 unité) perpendiculaire à ces deux vecteurs. On le calcule en faisant le produit vectoriel de deux vecteurs non parallèles définissant le plan, puis en ramenant sa norme (grandeur) à une unité. Il s'agit, dans un premier de définir les vecteurs u et v, déplacements de p0 en, respectivement p1 et p2, en efectuant, sur les coordonnées, une somme vectorielle (ici une soustraction). Les coordonnées de u sont : ux = x1 - x0 uy = y1 - y0 uz = z1 - z0 Les coordonnées de v sont : vx = x2 - x0 vy = y2 - y0 vz = z2 - z0 Le produit vectoriel de u par v (noté u^v) est le vecteur w dont les coordonnées sont : wx = uy*vz - uz*vy wy = uz*vx - ux*vz wz = ux*vy - uy*vx On peut procéder de même pour redéfinir le vecteur v, afin qu'il soit perpendiculaire à u et w, en faisant v = w^u vx = wy*uz - wz*uy vy = wz*ux - wx*uz vz = wx*uy - wy*ux Il faut maintenant transformer les trois vecteurs u, v et w en vecteurs unitaire en effectuant sur chacun le produit du vecteur par un scalaire le scalaire est ici un nombre réel représentant l'inverse de la norme du vecteur. Pour le vecteur u, par exemple, sa norme (nu) est égale à la distance du point 0,0,0 au point de coordonnées ux,uy,uz. nux = ux / nu nuy = uy / nu nuz = uz / nu Où nux, nuy, nuz correspond à la variable UCSXDIR du SCU défini par les points p0 p1 p2 nvx = vx / nv nvy = vy / nv nvz = vz / nv Où nvx, nvy, nvz correspond à la variable UCSYDIR nwx = wx / nw nwy = wy / nw nwz = wz / nw Où nwx, nwy, nwz correspond à la direction d'extrusion de ce SCU (que j'appelle souvent ucszdir) La matrice de transformation peut s'écrire ; nux nuy nuz x0 nvx nvy nvz y0 nwx nwy nwz z0 0 0 01 Voilà, j'espère avoir été clair (et ne pas m'être trompé). En LISP les fonctions permettant les opérations sur les listes facilitent beaucoup ce type de calculs, je ne sais pas ce qu'il en est en VBA, bon courage ... [Edité le 21/8/2006 par (gile)]
  25. (gile)

    MATRIX

    Une dernière petite couche. NENTSEL vs NENTSELP Les deux fonctions AutoLISP nentsel et nentselp retournent une matrice si l'objet sélectionné (une sous entité) appartient à une référence de bloc ou une référence externe. Si l'objet sélectionné est lui même un bloc (ou une xref) imbriqué, la matrice retournée est la combinaison de la matrice de tranformation du bloc enfant dans le bloc parent (mat _enfant) et de la matrice de transformation du bloc parent dans le SCG (mat_parent), le résultat de l'expression : (mxm mat_parent mat_enfant) À noter toutefois, contrairement à celle retournée par NENTSELP, la matrice retourné par NENTSEL n'est pas au même format que les matrices ci-dessus, c'est une marice de dimension 4x3 qui est la transposition des 3 premières rangées des matrices utilisées avec (vlax-tmatrix ...) : R00 R10 R20 R01 R11 R21 R02 R12 R22 T0 T1 T2 on retrouve une matrice semblable à celle retournée par NENTSELP en faisant : (setq mat (caddr (nentsel))) (append (apply 'mapcar (cons 'list mat)) (list '(0.0 0.0 0.0 1.0))) Il est donc aisé de faire subir à un objet les mêmes transformations que celles d'un bloc sélectionné, à condition toutefois que les échelles en X, Y et Z soient uniformes : (if (and (setq mat (caddr (nentselp "\nSélectionnez un bloc: "))) (setq obj (car (entsel "\nSélectionnez un objet: "))) ) (vla-TransformBy (vlax-ename->vla-object obj) (vlax-tmatrix mat) ) )
×
×
  • 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é