-
Compteur de contenus
1 489 -
Inscription
-
Dernière visite
-
Jours gagnés
19
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par zebulon_
-
Bonjour, dans le DCL il faut définir un bouton image : image_button { key = "NomB"; width = 18; aspect_ratio = 0.75; color = 0; } Dans le lisp, l'appel à ce bouton se fait (setq dcl_id (load_dialog "machin.dcl")) (if (not (new_dialog "machin" dcl_id)) (exit)) ... (setq LARG (dimx_tile "NomB")) (setq HAUT (dimy_tile "NomB")) (start_image "NomB") (fill_image 0 0 LARG HAUT 1) ;; 1 = Autocad rouge (slide_image 0 0 LARG HAUT "image") (end_image) ... (action_tile "NomB" "(do_NomB)") ... (setq What_next (start_dialog)) ... (unload_dialog dcl_id) fill_image inonde le bouton avec la couleur donnée. Avec slide_image, "image" est le nom d'un fichier .sld, créé avec la fonction MCLICHE d'Autocad (donc, il n'est pas question de .jpg, ou autre fichier image courant. Que du .sld, comme slide. Un peu pauvre, en somme). Cette image .sld est à placer dans un répertoire référencé dans les chemins de recherche de fichiers support (outil OPTION) A la place de slide_image on peut aussi utiliser vector_image, qui permet de tracer des vecteurs à l'intérieur du bouton image. A utiliser lorsque l'image est relativement simple... (setq LARG (dimx_tile "NomB")) (setq HAUT (dimy_tile "NomB")) (start_image "NomB") (fill_image 0 0 LARG HAUT 1) ;; 1= autocad rouge (vector_image 0 0 LARG HAUT 2) ;; 2 = autocad jaune (end_image) C'est pas le Pérou... Amicalement Vincent
-
1920x1080 J'ai mis plus petit mais ça ne change rien. Pour moi, le problème est résolu puisque je souhaitais ne pas afficher cet écran au démarrage. Maintenant que j'ai trouvé un moyen pour accéder à la case à cocher et que j'ai enlevé la coche, je ne pense plus que je me servirai un jour de cette boite de dialogue. Je pense quand même qu'on peut ranger ce fonctionnement au rayon des bugs. Amicalement Vincent
-
Bonjour, pareil pour moi, avec une configuration similaire, à part la carte graphique qui est une nvidia GeForce GT320. J'ai cherché partout une variable qui m'aurait permis de décocher cette case, sans succès... L'astuce de la touche TAB permet effectivement de rendre visibles la case à cocher "Afficher au démarrage", ainsi que le bouton "fermer". Merci pour cette info parce que je commençais à désepérer et me sentir seul. Pour améliorer l'astuce, compte tenu que les 2 éléments invisibles de la boite de dialogue sont en fin de liste, il est plus rapide de taper un "shift" "TAB" pour passer directement à la fin, plutôt que de taper une cinquantaine de fois sur TAB avant de voir apparaitre la partie basse de la boite de dialogue. Amicalement Vincent
-
Bonjour, ce sujet avait été abordé ici http://cadxp.com/index.php?/topic/33762-filtre-calque-xref/page__p__182312__fromsearch__1#entry182312 et on y retrouve la solution proposée par bryce. Elle permet également de contourner un bug lorsqu'on utilise les palettes d'outils du ruban. Dans cette configuration, l'inversion du filtre n'est pas appliquée à la liste de calques du groupe "calques". A moins que ça ait changé dans la nouvelle mouture d'Autocad. Amicalement Vincent
-
transformer polyligne en multiligne
zebulon_ a répondu à un(e) sujet de philous2 dans Pour aller plus loin en LISP
Le hic de taille ne provient pas du lisp. Le fait est que les multilignes ne peuvent contenir que des segments droits alors que les polylignes peuvent avoir des segments courbes. D'où l'impossibilité de convertir à 100% des polylignes en multilignes. Enfin, à ma connaissance et jusqu'à présent. Amicalement Vincent -
il suffit de mettre le nom de répertoire entre "" s'il y a des espaces et le rename MS-DOS fonctionnera Amicalement Vincent
-
tout cela me rappelle Raymond Devos lorsqu'il explique que trois fois rien, c'est déjà quelque chose parce qu'il y a encore moins que rien
-
La cote ordonnée a 3 poignées. Pour que la barre du milieu soit verticale, il faut s'arranger pour que la première poignée soit à n à gauche du point d'insertion du bloc "niveau" et la seconde poignée à n à droite de ce même point. n dépend du style de cote et il est impératif d'avoir des styles homogènes quelle que soit l'échelle. Donc, le principe du lisp est de demander l'échelle de cote, de définir le style qui correspond, de demander un point d'insertion (si on veut aller plus loin on peut demander de définir une orientation vers le haut ou le bas et vers la droite ou la gauche). Puis on insère le bloc Niveau à la bonne échelle et on rajoute la cote ordonnée avec les décalages décrits ci-dessus. Amicalement Vincent
-
Taille effective d'un texte
zebulon_ a répondu à un(e) sujet de Fraid dans Pour aller plus loin en LISP
c'est vrai, mais textbox ne fonctionne qu'avec des objets de type TEXT. Avec les MTEXT ça marche beaucoup moins bien. (setq tb (textbox (list (cons -1 (car (entsel)))))) renvoi nil pour un texte MTEXT. Et c'est bien dommage, à moins que ça ait changé dernièrement ? Amicalement Vincent -
Bonjour, si c'est le client qui l'impose, le lisp qu'on trouve dans le lien peut peut-être aider. Avec le fichier dwg qui contient un exemple. http://www.neufgiga.com/n/50-17/share/LNK3636504e07de83bb1/ Amicalement Vincent
-
Bonjour, curieuse façon de niveler. Je pense qu'il serait plus prudent de réserver la cote pour indiquer la hauteur et de faire une autre cote (ordonnée y, par exemple) pour indiquer le niveau. Chaque cote reste indépendante et évolue si on l'étire. On a parlé récemment de ce sujet ici http://cadxp.com/index.php?/topic/36049-bloc-dynamique/page__p__195767__fromsearch__1#entry195767 amicalement Vincent
-
Mais l'idée du bloc dynamique est également très intéressante et peut être plus facile à mettre en oeuvre puisqu'elle ne suppose pas de lisp. Pour le problème d'échelle évoqué en début de discussion, une solution serait peut être de gérer des états de visibilité par échelle. On se définit une liste d'échelles les plus communéments utilisées et pour chaque échelle on crée un état de visibilité correspondant. De cette manière, on évite de mettre à l'échelle la distance entre l'origine et le point à niveler. Amicalement Vincent
-
Comment changer de traceur sur plusieurs présentations
zebulon_ a répondu à un(e) sujet de Dominique76 dans AutoCAD LT 2012
Bonjour, d'autant plus qu'on peut publier les onglets sélectionnés directement vers PDF (avec la version 2012, c'est sûr), donc pas forcément vers le traceur défini dans la mise en page. La création d'onglets spécifiques pour le PDF devient donc d'autant plus inutile puisque le PDF est proposé dans la liste lorsqu'on publie les onglets sélectionnés (on a le choix entre : dwf, pdf et le traceur défini dans la mise en page). Dans les versions précédentes (avant la 2010 je crois) on n'avait pas l'option PDF dans publier, puisque Autodesk avait, à l'époque, sans doute toujours espoir d'imposer son format dwf... Je crois que le train est passé et que le dwf est resté à quai, mais c'est un autre sujet et je m'égare. Amicalement Vincent -
Comment changer de traceur sur plusieurs présentations
zebulon_ a répondu à un(e) sujet de Dominique76 dans AutoCAD LT 2012
Bonjour, J'ai eu le même genre de problème puisque j'envoie mes fichiers à des clients qui, forcément, n'ont pas tous la même imprimante et encore plus forcément la même imprimante que moi. Si je leur envoie un fichier avec 25 onglets et qu'il faut se taper les 25 onglets pour modifier l'imprimante et la faire correspondre à la leure, ça va les fatiguer assez rapidement. Si le mal est fait, comme dans le cas décrit ci-dessus, je n'ai pas de solution simple pour une LT. Par contre je conseille à tous d'utiliser en amont le getionnaire des mises en pages (clic droit sur l'onglet), afin de créer un nouvelle mise en page (bouton NOUVEAU) qui correspondra à votre imprimante en lui donnant un nom (genre A3h ou A3v ou A0 ou ce que vous voudrez). Dans le gestionnaire, ce ou ces nouvelles mise en page se rajoutent à la liste des onglets existants. On peut même envisager de rajouter ces mises en page dans le fichier dwt de la société. Ensuite, vous allez sur un onglet dont vous souhaitez définir la mise en page, vous cliquez sur le gestionnaire des mises en page et vous parcourez la liste pour choisir la mise en page A3h ou A3v ou ... puis vous cliquez sur DEFINIR COURANT et le nom de la mise en page se mettra entre parenthèses à côté du nom de la présentation. L'avantage non négligeable est que, si vous (ou votre client) modifiez la mise en page "générique", en changeant l'imprimante par exemple, vous modifiez du même coup toutes les présentations qui sont associées à cette mise en page. Il faut avouer que le gestionnaire de mises en pages est très mal foutu, puisqu'on a dans la même liste la liste des onglets et la liste des mises en pages. Ce serait beaucoup plus lisible si ces deux listes étaient affichées séparément. Amicalement Vincent -
J'associe un bloc qui représente le symbole qu'on a l'habitude d'utiliser avec la cote ordonnée y Voir exemple http://www.neufgiga.com/n/50-17/share/LNK23295045cb160ede9/ Cela nécessite un style de cotation bien défini et quelques lignes de lisp afin de gérer l'échelle du bloc correspondant au style de cotation
-
bonjour, personellement, j'utilise la cote ordonnée y afin de niveler mes ouvrages. Je construis mes dessins (élévations et coupes) afin que le y 0 du scu corresponde au z 0 du NGF. Le coté "dynamique" est intrinsèque à la cote, mais uniquement avec la commande "étirer" et pas avec la commande "déplacer". La commande "déplacer" déplace également l'origine et la cote n'évolue pas. Amicalement vincent
-
Tangentes communes intérieures à 2 cercles
zebulon_ a répondu à un(e) sujet de zebulon_ dans Pour aller plus loin en LISP
Merci pour le complément fort instructif. Je rajouterai que J est centre d'homothétie et que, forcément, les triangles sont rectangles puisque par définition la tangente est perpendiculaire au rayon. Si j'avais voulu résoudre le problème de tangente extérieure graphiquement, j'aurai dû déterminer les points A1 et A2 du même côté (et non pas une fois à droite, une fois à gauche). L'intersection entre O1, O2, A1, A2 donne le centre d'homothétie I qui permet de trouver les points de tangence extérieurs. Cette méthode a une limite : lorsque les 2 cercles ont le même rayon, ce point I est renvoyé à l'infini Amicalement Vincent -
Tangentes communes intérieures à 2 cercles
zebulon_ a posté un sujet dans Pour aller plus loin en LISP
Bonjour, Le but est de trouver les 2 tangentes communes intérieures à 2 cercles, sans utiliser les accrochages aux objets. (defun vlax-list->3D-point (lst / nlst) (while lst (setq nlst (cons (list (car lst) (cadr lst) (caddr lst)) nlst)) (setq lst (cdddr lst)) ) (reverse nlst) ) ;;; Clockwise-p ;;; Retourne T si les points p1 p2 et p3 tournent dans le sens horaire (defun clockwise-p (p1 p2 p3) (< (sin (- (angle p1 p3) (angle p1 p2))) -1e-14) ) (defun tcc ( C1 ;; le cercle C1 C2 ;; le cercle C2 / O1 ;; le centre du cercle C1 O2 ;; le centre du crecle C2 R1 ;; le rayon du cercle C1 R2 ;; le rayon du cercle C2 ANG ;; le gisement du segment O1 O2 A1 ;; le point sur C1 tel que O1 A1 est perpendiculaire à + 90° à O1 O2 A2 ;; le point sur C2 tel que O2 A2 est perpendiculaire à - 90° à O1 O2 J ;; intersection entre A1 A2 et O1 O2 Q1 ;; centre du segment O1 J Q2 ;; centre du segment O2 J T1 ;; cercle de centre Q1 et de diamètre O1 J T2 ;; cercle de centre Q2 et de diamètre O2 J L1 ;; liste des points d'intersection entre C1 et T1 L2 ;; liste des points d'intersection entre C2 et T2 T1C1 ;; premier point de tangence sur C1 T2C1 ;; deuxième point de tangence sur C1 T1C2 ;; premier point de tangence sur C2 T2C2 ;; deuxième point de tangence sur C2 ) (vl-load-com) ;;; tangente intérieure 2 cercles (setq O1 (vlax-get C1 'Center)) (setq O2 (vlax-get C2 'Center)) (setq R1 (vlax-get C1 'Radius)) (setq R2 (vlax-get C2 'Radius)) (setq ANG (angle O1 O2)) (setq A1 (polar O1 (+ ANG (/ pi 2)) R1)) (setq A2 (polar O2 (- ANG (/ pi 2)) R2)) (setq J (inters A1 A2 O1 O2)) (setq Q1 (polar O1 (angle O1 J) (/ (distance O1 J) 2))) (setq Q2 (polar O2 (angle O2 J) (/ (distance O2 J) 2))) (setq T1 (vlax-invoke (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))) 'AddCircle Q1 (/ (distance O1 J) 2) ) ) (setq T2 (vlax-invoke (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))) 'AddCircle Q2 (/ (distance O2 J) 2) ) ) (setq L1 (vlax-list->3D-point (vlax-invoke C1 'IntersectWith T1 acExtendNone))) (setq L2 (vlax-list->3D-point (vlax-invoke C2 'IntersectWith T2 acExtendNone))) (vla-delete T1) (vla-delete T2) (setq T1C1 (car L1) T2C1 (cadr L1) T1C2 (car L2) T2C2 (cadr L2) ) (if (clockwise-p O1 O2 T1C1) (setq TEMP T1C1 T1C1 T2C1 T2C1 TEMP ) ) (if (clockwise-p O2 O1 T1C2) (setq TEMP T1C2 T1C2 T2C2 T2C2 TEMP ) ) (list T1C1 T1C2 T2C1 T2C2) ) (defun c:testtcc ( / C1 C2 LST LT1 LT2) ;; les 2 cercles (setq C1 (vlax-ename->vla-object (car (entsel "\nSaisir cercle 1 : ")))) (setq C2 (vlax-ename->vla-object (car (entsel "\nSaisir cercle 2 : ")))) (setq LST (tcc C1 C2)) (setq LT1 (vlax-invoke (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))) 'AddLine (nth 0 LST) (nth 1 LST) ) ) (setq LT2 (vlax-invoke (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))) 'AddLine (nth 2 LST) (nth 3 LST) ) ) (princ) ) Il y a peut être plus simple ? Merci Amicalement Vincent -
Bonjour, au sujet des echelles de type de ligne, il y a eu une contribution intéressante à cet endroit. Amicalement Vincent
-
les utilisateurs de la commande FILTER se souviennent qu'elle présentait également un problème d'affichage : la liste française des objets à filtrer était classée dans l'ordre alphabétique... de leur équivalent anglais. Puis, un jour, cela a été corrigé. Sans doute également au bout de 10 ans, mais ça a fini par arriver. On ne perd pas espoir pour _qselect, donc. Amicalement Vincent
-
j'aurai dû rajouter "dans l'esprit de la commande _qselect", comme l'a fait remarquer très justement Didier.Il existe des moyens de sélectionner des entités particulières de xrefs (ncopy, nentsel...). Je n'ai que ces 2 qui me viennent à l'esprit spontanément. Il n'en est pas moins vrai que de proposer des calques dépendants de xrefs dans _qselect peut ne pas paraitre opportun (bel euphémisme à moins que ce ne soit une litote). Amicalement Vincent
-
Bonjour, on a eu ici une discussion à propos des filtres de calques. Je voudrais revenir sur les filtres de calques au sujet de la boite de dialogue de l'outil "sélection rapide" _qselect. Un outil très pratique, au demeurant, mais qui le serait plus si le filtre de calque pouvait être appliqué à la liste déroulante proposée par cet outil. Une petite case à cocher "appliquer le filtre de calques" serait la bienvenue afin de ne pas se coletiner tous les calques de xrefs dans la liste déroulante, par exemple. D'ailleurs, à y réfléchir un peu plus, cela me semble totalement idiot de proposer des calques dépendant de xrefs dans un outil de sélection. Je n'en vois pas l'intérêt compte tenu que la xref n'est sélectionnable que globalement. L'outil FILTER, plus ancien et plus complexe que _qselect, ne propose pas les calques dépendant de xrefs, mais ne respecte pas non plus les filtres d'affichage de calque Amicalement Vincent
-
Bonjour, j'ai le même fonctionnement que Didier sur un Autocad 2011. J'ai fait 2 cercles concentriques, que j'ai hachuré en les sélectionnant un par un. Curieusement, quand on fait un "aperçu", les hachures s'affichent correctement. Mais après le "OK" on récupère 2 hachures : une pour le grand cercle, une autre pour le petit. Pour moi, on peut qualifier cela de bug. Amicalement Vincent PS : les ellipses concentriques présentent le même dysfonctionnement. Le couple cercle ellipse concentriques également.
-
Bonjour, le but est de ne pas répertorier les calques dépendants de xrefs dans le gestionnaire des propriétés de calques, ni dans le contrôle des calques (que ce soit en autocad "classique" ou avec les palettes d'outils du ruban). Ni le gestionnaire d'état de calque, ni la variable VISRETAIN ne permettent de répondre à cette demande. Le seul moyen, on va dire fiable, que j'ai trouvé est celui décrit ci-dessus : créer un nouveau filtre de propriétés et définir ce filtre de nom avec ces caractères : ~*|* Cela évite d'utiliser la coche "inverser le filtre" qui semble très mal gérée (limite bug...) dans Autocad : elle ne se conserve pas d'une session à l'autre et, pire, lorsqu'on utilise les palettes d'outils du ruban, l'inversion du filtre n'est pas appliquée à la liste de calques du groupe "calques". Là, c'est clairement un bug. Mon petit filtre à 2 balles ~*|* permet également de contourner ce bug. En attendant que ce soit corrigé dans une version ultérieure, je conseillerai donc d'éviter l'utilisation de la coche "inverser le filtre" et d'utiliser le NOT (qui s'écrit ~ dans ce contexte) dans un filtre perso. Amicalement Vincent
-
Bonjour, voir ce lien Amicalement Vincent
