-
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, ce qu'on peut faire, c'est de mettre REMEMBERFOLDERS à 0 dans autocad, comme le suggère REBCAO Puis copier/coller l'icône d'autocad sur le bureau windows, puis editer les propriétés de l'icône et changer la ligne "Démarrer dans" pour la faire pointer vers un répertoire précis (une affaire sur laquelle on travaille, par exemple). Du coup, quand on utilise cette icône (dont on peut aussi changer le nom pour lui donner le nom de l'affaire en question), la commande "fichier ouvrir" pointe vers le répertoire défini ci-dessus. Bien entendu, on peut faire autant de copier/coller de l'icône standart qu'on a d'affaire sur le feu. Bon, c'est pas encore top, parce que, pour une session donnée, si on ouvre un fichier ailleur que le chemin indiqué dans "Démarrer dans", la prochaine ouverture se fait au dernier endroit et non pas dans ce qui est défini dans "Démarrer dans" Normal, REMEMBERFOLDERS est valable d'une session à l'autre, pas à l'intérieur d'une même session. Il y a peut être une autre variable ? Amicalement Zebulon_ [Edité le 14/9/2005 par zebulon_]
-
Bonjour, j'ai installé Intellidesk 2005 et intelliPlus pro 3D La ressemblance est frappante. Si je ne faisais que de la 2D, et qu'il faudrait choisir entre Intelli... et autocadLT, le choix serait vite fait. Cordialement Zebulon_
-
Bonjour, Il y a quelques temps, nous avons eu une discussion sur les boîtes de dialogue, sur le DCL et son côté vieillot et sur ObjectDCL. http://www.cadxp.com/sujetXForum-6001.htm Entre temps, j'ai consulté le site de Kenny Ramage, où il nous donne une autre façon de faire des boîtes de dialogue en lisp http://www.afralisp.co.za/vl/vl-vba1.htm Le principe, c'est d'utiliser VBA pour définir les boîtes de dialogue et de les charger et les exécuter avec lisp. C'est moins puissant qu'ObjectDCL, mais nettement mieux que DCL Amicalement Zebulon_
-
c'est sans doute pour se donner bonne conscience ?
-
3 millions d'€ pour rattraper les anglais. Si on s'y met tous on devrait passer champion en 2006. Allez, imprimez, imprimez... Plus sérieusement, dans le domaine de la CAO, à quand les plans recto/verso ? Amicalement Zebulon_
-
Je suis d'accord avec toi christian, d'autant plus que ça fait quelques années que je fais pareil, pour ce qui est des ZOOM XP. Mais ça ne change rien au problème de différence de visualisation des types de lignes entre l'espace objet et l'espace papier. Quant à la valeur de l'échelle de type de ligne, tout dépend du fichier .lin que tu utilises. Amicalement Zebulon_
-
chez moi, ça donnerai (command "lini")
-
Mais qui choisit les deux autres éléments ? Si c'est l'utilisateur, on peut écrire (command "_circle" "_ttr" pause pause pause) la première pause pour permettre à l'utilisateur de donner le premier élément de tangence, la deuxième pause pour le 2ème élément et la 3ème pause pour le rayon. Si par exemple le rayon doit toujours être de 100, on peut écrire : (command "_circle" "_ttr" pause pause "100")
-
Je serais d'accord avec CDL, pour l'amour de la langue française. Mais (gile) est quand même dans le vrai quand il parle de son soucis d'universalité entre les autocad écrits dans d'autres langues. Je me permet de rajouter que ce n'est pas là mon soucis d'universalité principal, qui est l'universalité entre les différentes version d'autocad en français. Dans les anciennes versions, la commande CALQUE s'appelait PLAN. Tous ceux qui utilisaient des lignes (command "PLAN" ...) dans leurs lisps étaient bons pour se recoltiner toutes leurs routines, alors que la commande _layer reste toujours la commande _layer. Je propose donc de favoriser ce qui, à terme, est le plus pratique, à savoir l'internationnal. Et il se trouve que la langue internationnale pour autocad c'est l'anglais et pas le français. Que cela n'empêche pas les amoureux de cette langue de favoriser le français. Je le dis avec d''autant plus de force que le français n'est pas ma langue maternelle et même si le système éducatif français et sa politique jacobine ont essayé pendant longtemps de la tuer, ma langue maternelle, en l'interdisant au profit exclusif du français. Tous les basques, bretons, alsaciens, occitans ... me comprendront. Vive les langues minoritaires. Amicalement Zebulon_
-
y a pas de honte, à part cette petite erreur de traduction, tous tes conseils ont été mis en pratique et ont contribué a réécrire ces quelques lignes de façon plus sobre. Par contre, et là je m'adresse à toute la communauté, suis-je le seul à rencontrer ce problème et à me batailler avec des ECHLTP ? Amicalement Zebulon_
-
Ah j'oubliais un autre point de détail ... Si déjà je dois utiliser les variables système, alors pourquoi pas aller jusqu'au bout de l'idée et écrire (setvar "regenmode" 0) à la place de (command "_regenauto" "_off") ça donnerait donc : (defun c:tmmo() (setvar "PSLTSCALE" 1) (setvar "REGENMODE" 0) (if (= 0 (getvar "TILEMODE")) (progn (setvar "LTSCALE" 0.02) (setvar "TILEMODE" 1) ) (progn (setvar "LTSCALE" 0.20) (setvar "TILEMODE" 0) ) ) (setvar "REGENMODE" 1) (princ) ) Amicalement Zebulon_
-
Ah j'oubliais un petit point de détail. ECHLTP n'est pas une variable, mais une commande qui agit sur une variable. Et pour faire simple, la variable n'a pas le même nom que la commande correspondante, mais s'appelle LTSCALE. Donc il faudrait écrire (setvar "LTSCALE" 0.02) pour que ça marche. Sinon ton conseil d'utiliser les noms de commande en international est effectivement à suivre absolument. Amicalement _Zebulon
-
(gile) ma solution me convient dans la mesure où elle me règle mon problème. Ce qui ne me convient pas c'est d'avoir à règler ce genre de problème. Et puis, si d'autres ont ce problème, ils seront peut être contents de voir comment le résoudre... Et puis, il y a peut être une manière plus élégante de le résoudre, qui sait ? Ou peut être ce n'est pas un problème et c'est tout simplement moi qui ne sait pas me servir d'Autocad ? Là le problème ce serait moi... :) Amicalement zebulon_ :) :)
-
Ok yalta, ce que tu fais revient à modifier la valeur de PSLTSCALE et de la fixer à 0. Là, plus de problème de différence d'échelle de types de lignes entre l'espace papier et l'espace objet. Mais, si je fais une FMULT au 1:100 et une autre au 1:20 par exemple, la représentation des types de lignes dans ces fenêtres seront différentes (avec un rapport de 5 dans mon exemple) Et ça c'est pas joli, joli... Si tu fais des plans qui ne nécessitent qu'une seule fenêtre fmult (genre un plan d'un projet routier ou un plan topo), ta solution est la bonne. Souvent, dans ce cas, l'espace papier n'est même pas utilisé et la mise en page est faite directement dans l'espace objet (à tort, je pense, mais c'est ce que je constate quand je reçois des plans d'ailleurs) Quand il s'agit de faire cohabiter sur la même présentation des fenêtres avec des echelles différentes, c'est pas la même histoire... Amicalement Zebulon_
-
Bonjour à tous, Je vous expose mon soucis : je travaille en mètres dans l'espace objet et je mets en page en mm dans l'espace papier. Je souhaite que les styles de lignes soient homogènes quelles que soient les echelles des fmults. J'ai donc fixé la variable PSLTSCALE à 1. Je souhaite visualiser les différents types de lignes en espace papier comme en espace objet, mais cela n'a pas l'air d'être possible sans changer à chaque fois l'ECHLTP. Ce qui arrive trop souvent, c'est de travailler en espace objet avec un ECHLTP qui va bien pour visualiser les types de ligne en espace objet, de passer en espace papier pour imprimer, d'imprimer en oubliant de règler l'ECHLTP qui va bien pour l'espace papier, de jeter le plan à la poubelle et de recommencer, parce que les traits d'axe ou les traits cachés sortent comme des traits continus. ça me fatigue. :mad: Je me suis donc fait un bouton TILEMODE à moi qui change l'ECHLTP en fonction de la valeur du TILEMODE, qui contient : (defun c:tmmo() (if (= 0 (getvar "TILEMODE")) (progn (command "PSLTSCALE" "1") (command "REGNAUTO" "IN") (command "ECHLTP" "0.02") (setvar "TILEMODE" 1) (command "REGNAUTO" "AC") ) (progn (command "PSLTSCALE" "1") (command "REGNAUTO" "IN") (command "ECHLTP" "0.20") (setvar "TILEMODE" 0) (command "REGNAUTO" "AC") ) ) ) (princ) Y-a-t'il un autre moyen ? Merci Zebulon_
-
Un bel exemple de ce qu'on peut faire avec les filtres de ssgtet et avec ssadd merci Zebulon_ [Edité le 16/8/2005 par zebulon_]
-
C'est vrai que c'est plus simple pour l'utilisateur de pouvoir faire un seul undo après le lisp, surtout si le lisp crée beaucoup de choses. El le CMDECHO à 0 fait en sorte que le lisp avance plus vite puisqu'il ne se fatigue pas à afficher sur la ligne de commande ce qu'il est en train de faire. Deux choses à ne pas oublier en début et fin de chaque lisp. Et ssname renvoie nil si l'indice est négatif ou s'il est supérieur à l'entité numérotée la plus grande du jeu de sélection. On peut donc s'en servir comme condition d'arrêt de la boucle while comme tu l'as fait. D'autre part, je n'utilise jamais les fonctions arithmétiques 1+ et 1-, parce que je ne vois pas trop ce que ça apporte de plus d'écrire (1+ n) plutôt que (+ 1 n) ? Amicalement Zebulon_
-
Plutôt que de chercher à effacer, il est quelquefois plus facile de cacher. On peut imaginer faire un rectangle de couleur 255 qui jette un voile pudique sur la partie du dessin qui ne nous intéresse pas. S'il s'agit d'une xref, la commande xdelim permet de délimiter la xref (soit en rectangle soit en polyligne) S'il s'agit d'une image, la commande delimimage permet de faire la même chose. Amicalement Zebulon_
-
Continuer l\'éxécution d\'un programme après la création d\'un polyligne
zebulon_ a répondu à un(e) sujet de atchoume dans AutoCAD 2000 à 2002
en utilisant la pause dans une boucle while. Ci dessous une fonction mycmd qui permet d'entrer en paramètre une liste (une commande avec ses paramètres éventuels) et qui renvoie la liste des entités créées par cette fonction. ;;; ;;; lancer une commande autocad (defun mycmd (LCMD / CMD ETL LELEM RES OLDCMDECHO) (setq ETL (entlast)) (setq OLDCMDECHO (getvar "CMDECHO")) (setvar "CMDECHO" 1) (foreach CMD LCMD (command CMD) ) (while (not (zerop (getvar "cmdactive"))) (command pause) ) (setvar "CMDECHO" OLDCMDECHO) (setq LELEM nil) (if (not ETL) (setq ETL (entnext)) (setq ETL (entnext ETL)) ) (while ETL (setq LELEM (cons ETL LELEM)) (setq ETL (entnext ETL)) ) (setq RES LELEM) ) (defun c:myfunction () (setq LE1 (mycmd '("_.pline"))) (setq LE2 (mycmd '("_.circle" "_3P"))) (setq LE3 (mycmd '("_.line"))) ) LE1 sera une liste d'un élément contenant la polyligne créée LE2 sera une liste d'un élément contenant le cercle créé LE3 sera une liste de n éléments contanant les lignes créées par l'utilisateur. -
volià ce que ça pourrait donner : (defun c:PHatch () (prompt "\nSélectionner des polylignes fermées") (setq ss (ssget '((0 . "LWPOLYLINE") (70 . 1)))) (if ss (progn (setq ssl (sslength ss)) (setq I 0) (while (< I ssl) (command "-fhach" "P" "SOLID" "_a" "_a" "_y" "" "_s" (ssname ss I) "" "") (setq I (+ I 1)) ) ) ) (princ) )
-
merci, ce qu je vais faire c'est un lisp qui va faire un ssget en filtrant les polylignes fermées (code dxf 70, a priori), puis faire une boucle while qui lance une commande hachure pour chaque polyligne fermée On fera ça demain, je vous tiens au courant. Zebulon_
-
Bonjour à tous, Je pose le problème : - j'ai beaucoup de polylignes fermées que je dois hachurer - chaque polylignes doit avoir sa propre hachure Si je lance la commande hachure et je sélectionne les n polylignes fermées d'un seul coup, je n'ai malheureusement pas n hachures mais une seule. Alors si je veux n hachures, il faut que je lance n fois la commande hachure ?? Et ça me fatigue ... Il n'y aurait pas par hasard une variable pour paramétrer la fonction hachure ? Sinon, va falloir que je me bricole un ptit lisp Merci Zebulon_
-
De rien, Patrick je te dois bien ça et même plus Amicalement Zebulon_
-
Sub Example_GetPlotDeviceNames() ' This example gets the current plot device information ' and then displays the list of plot device names Dim Layout As AcadLayout Set Layout = ThisDrawing.ModelSpace.Layout ' Refresh the current plot information for ' this session. Layout.RefreshPlotDeviceInfo ' List all the valid device names for the system Dim plotDevices As Variant plotDevices = Layout.GetPlotDeviceNames() Dim x As Integer For x = LBound(plotDevices) To UBound(plotDevices) MsgBox plotDevices(x) Next End Sub Ce que tu cherches, c'est ce qui a ci-dessus mais en VLISP ?
-
S'il s'agit de la liste des imprimantes windows installées, j'utilise la fonction dos_printers de DOSLIB Amicalement Zebulon_
