LUDWIG
Membres-
Compteur de contenus
1 396 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par LUDWIG
-
Bonjour, Je découvre la notion de [surligneur] réacteur [/surligneur]et les possibilités offertes. Mais je ne comprends pas trop le fonctionnement. Par exemples, j'ai un dessin avec des lignes dont certaines ont été créées par une certaine commande.Je veux qu'il se passe une réaction dès que je modifie une des lignes (copier, déplacer, etc). - Comment associé un réacteur à un d'objet (ici je ne ne veux une réaction que sur certaines lignes du dessin) ? - Est-ce que je dois associer un réacteur par action (un pour copier, un pour déplacer, etc) ou existe-t'il un réacteur global ? - Comment récupérer l'identifiant de l'objet ou des objets modifiés ? - Comment est enregistré le lien objet-réacteur, notamment lors d'une fermeture-réouverture du dessin ? ... Merci d'avance à ceux qui éclairerons ma lanterne !
-
En fait non la réparation n'a pas changé le problème qui est spécifique à mon poste... C'est le seul équipé de Autodesk Architectural Desktop 2005 et ACAD 2006, le problème vient peut-être de là...
-
Mon soucis est dans un bug d'une application vb, sur ma machine uniquement. Nous avons penser identifier le problème dans l'insertion d'un bloc décomposé alors qu'il ne devait pas l'être (d'ou ma question). Une réparation du registre Autodesk Architectural Desktop a réparé le soucis... Merci à vous.
-
Bonjour, Je souhaite savoir ou serait stockée la valeur de la case à cocher " Décomposé" de la boîte de dialogue " Insérer"... S'agit-il d'une variable que je n'aurais pas trouvée ? Merci d'avance... [Edité le 13/10/2005 par LUDWIG]
-
Bonjour ! Bravo pour ce tableau des variables, il fallait du courage. J'en avais un en français dans un bouquin, mais il commençait à dater un peu (version 2000). Et RebCAO, tu veux pas nous refaire le même pour Autodesk Architectural Desktop :laugh: :laugh: :laugh: :laugh: ? Si ça t'intéresse, j'ai dans ce bouquin les emplacements de stockage et les valeurs par défaut des variables, ainsi que celle en lecture seule. Pour les gens qui ne comprennent pas pourquoi les types de ligne de leur espace papier ont des échelles différentes de leur espace objet, il serait peut être utile de rajouter dans le "best of" PSLTSCALE (enfin, c'est mon avis personnel à moi même qui n'engage que moi). [Edité le 11/10/2005 par LUDWIG]
-
Je rajouterai que [surligneur] c'est en sciant que Léonard De Vinci[/surligneur].
-
Oui c'est vrai, j'aurais dû changer de rubrique. Désolé :exclam: Merci pour la comparaison à Foreach. Je comprends bcp mieux maintenant. J'aivais en tête un "for X to Z" dans lequel aon aurait été obligé de renseigné les 2 arguments. C'est intéressant de considéré que toute entité est inclue dans un bloc (paperspace au minimum). Du coup je comprends impeccablement ce lisp. Je vais pouvoir me lancer à en faire d'autre.
-
Merci (gile) J'avais réussi à trouver dans la doc que vlax-get-acad-object est un pointeur vers l'application autocad et vla-get-activedocument un pointeur vers le document actif, et qu'il faut à chaque fois lancer cette procédure. Mais je ne comprenais pas le vla-get-blocks, vu qu'elle n'est pas directement expliquée dans l'aide. C'est donc la collection de blocs... Maintenant, je ne comprends pas vraiment la syntaxe des 2 vlax-for, même si je comprends le if imbriqué (en gros, si l'objet est un point alors je l'efface). Comment foncionne donc le vlax-for ? Ce qui me gêne, c'est que les arguments qui suivent le vlax-for sont des variables qui valent nil au début. Je me trompe ?
-
Bonjour, J'essaye de me mettre au Visual Lisp. J'ai modifié ce code là qui supprime tous les points d'un dessin (même dans les blocs) pour faire un programme qui met à toutes les polylignes une épaisseur constante de 0. Mon programme fonction, mais je ne suis pas sûr de comprendre le raisonnemement du code. Si quelqu'un pouvait me le commenter. Merci. (defun c:effpt () (vl-load-com) (setq a (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))) (vlax-for bl a (vlax-for ent bl (if (= (vla-get-objectname ent) "AcDbPoint") (vla-delete ent) ) ) ) (vla-regen (vla-get-activedocument (vlax-get-acad-object)) acActiveViewport) )
-
D'accord merci. Si je résume, ObjectDCL comporte le mot "DCL" juste pour signifie "création de boite de dialogue), mais l'analogie s'arrête là. L'arx fournit des fonctions qui permet au lisp de gérer les fichier d'object DCL.
-
Merci les amis ! Vous m'avez déjà permis de voir que j'avais inverser les arguments de SUBST :red: Ensuite effectivement, je ne fais pas mon SUBST directement dans la liste de l'entité mais juste dans la liste de l'xdata, puis je reconstruis l'entité. Maintenant ça fonctionne. A+
-
Bonjour J'ai une entité avec des Xdata de type ascii : ((-1 . ) (0 . "LINE") (330 . ) (5 . "307") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbLine") (10 30.5609 19.9631 0.0) (11 16.4007 17.6765 0.0) (210 0.0 0.0 1.0) [b] (-3 ("SAF_ID" (1002 . "{") [u] (1000 . "5")[/u] (1002 . "}"))) [/b]) J'eessaye d'en modifié la valeur pour incrémenter la valeur et que l'entité devienne : ((-1 . ) (0 . "LINE") (330 . ) (5 . "307") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbLine") (10 30.5609 19.9631 0.0) (11 16.4007 17.6765 0.0) (210 0.0 0.0 1.0) [b] (-3 ("SAF_ID" (1002 . "{") [u] (1000 . [surligneur] "10"[/surligneur] )[/u] (1002 . "}"))) [/b]) J'ai essayé ça : (setq entite (subst (cons 1000 safid) (itoa (+ increment (atoi SAFID))) entite)) (avec "increment" un entier que je passe en argument de mon lisp) Mais cela ne fonctionne pas, je n'atteints pas les xdata avec cette commande... Comment dois-je procéder ? Existe-t'il un moyen plus facile pour manipuler les Xdata ? Merci d'avance
-
Bonjour à tous, Je dois remanier des boîtes de dialogue d'un logiciel de ma société. C'est du lisp et du dcl. Plutôt que de me farcir du DCL, j'ai pensé à ObjectDCL que certains utilises ici mais je me pose quelques questions : - peut-on convertir mes anciens fichiers DCL en fichier ODC pour ne pas repartir de zero ? - je n'ai pas très bien compris comment un lisp qui appelait des fichiers DCL réagit maintenant pour ouvrir des fichiers ODC ou ODS. Comment sait-il le lire ? - les modifications au niveau des lisp qui lançait les fichiers DCL sont-elles importantes ? - Je dois diffuser mon logciel. ObjectDCL doit-il être prévu dans les installations de mes clients pour que les boîtes de dialogue puisse-être lues ? Je suppose que non (enfin, j'espère) mais je ne sais pas trop comment ça se fait... Si un utilisateur de ce logiciel pouvait éclairer ma lanterne sur ce logiciel qui m'a l'ai très bien (oui, oui, je pense à toi, tramber !!!). Merci d'avance !
-
Redéfinir les points d\'insertion des blocs
LUDWIG a répondu à un(e) sujet de LUDWIG dans Routines LISP
Attention, je viens de remarquer que dans certains cas particuliers, ce lisp donne des résultats inattendus. Exemple : un bloc "plat" (2D) dont le z n'est pas le même que le z du point d'insertion... J'ai repéré ou étais l'erreur et je la corrige dès que possible. De même, mon lisp créer un nouveau bloc et remplace l'ancien par le nouveau dans le graphique. Mais si l'ancien bloc ("toto" disons) est référencé (par un autre bloc par exemple), la référence reste sur l'ancien nom... Par exemple, dans mon lisp, "toto" est renommé en "toto_old_1", puis un bloc correct "toto" est créé, puis les insert "toto_old_1" sont remplacés par des insert "toto". Mais si un autre bloc contenait le bloc "toto", alors à la fin de la commande, il contiendra le bloc "toto_old_1". Donc mon but sera de modifier mon lisp pour qu'il redéfinisse directement le bloc plutôt qu'il fasse un simple "remplacement". -
Merci à tous !
-
Pour les calques utilisés, la commande purge ne fonctionnera (si on considère que "utilisé" veut dire qu'il y a des objets dedans). Sinon, il y a la commande du menu express > Layer > Layer delete (Laydel) qui permet de supprimer les calques utilisés (et tous les objets dedans par la même occasion).
-
Bonjour à tous, Me revoilà avec mes questions après une longue absence du forum... Je profite d'une période creuse :cool: pour enseigner les rudiments (enfin, les rudiments que je connais !) de Lisp à mes collègues :( . Et là, je ne sais pas trop comment expliquer la différence entre l'utilsation de CONS et de LIST, d'autant plus que ce n'est pas très clair dans ma tête :casstet: . J'ai regardé dans l'aide et dans AIDACAD, ça ne m'a pas vraiment éclairé. Je me souviens d'un sujet ou cette différence avait été abordée, mais je ne l'ai pas retrouvé. En fait, c'est en leur commentant un code que je suis tombé sur ce point : (setq jeu (ssget "X" ( [b] list [/b]( [b] cons [/b]0 "INSERT")( [b] cons [/b]410 n)))) Je comprends tout à fait la ligne (sélection des références de blocs dans la présentation n (dans une boucle foreach, n vaut d'abord "Model", puis "Présentation 1" etc). Quelqu'un saurait-il me faire comprendre ? Merci d'avance ! :heartpump: :present:
-
merci pour cette fonction mais je vois pas trop en quoi elle peut m'être utile... car je suis obligé de créer à la main une ligne "autoload blabla" dans mon fichier lisp principal quand je créer un nouveau lisp que je veux charger automatiquement... à moins que je saisisses pas l'intérêt de la focntion ? Sinon une autre idée (mais que je saurais pas mettre en place !) : le contenu de démarrage est enregistré dans une valeur de la base de registre... Il faudrait un programme extérieur à autocad qui collecte les chemins des lisps, dvb, arx etc stockés dans un répertoire (et ses sous répertoires) et les assemble dans une chaîne qui viendrait remplacer la valeur du registre... Bref, un brin compliqué ! D'autres idées ?
-
Bonjour, Je suis de retour avec mes questions... Je suis amené à utiliser plusieurs fichier lisp et vba différent, et je suis toujours embetté quand celui que je veux n'est pas chargé, il faut que je le charge et que je pense à le mettre dans le contenu de démarrage. J'ai alors pensé à un seul lisp chargé au démarrage, lançant tous les autres au démarrage. Mais quand je fais évolué mes répertoires ou que je créé d'autres lisps, la liste des lisp chargés n'est plus bonne. Alors j'ai eu l'idée d'un Lisp qui d'abord recherche les fichiers Lsp et Dvb d'un certain répertoire (et sous-dossier) puis qui les lance tous. Pensez-vous que s'est une bonne idée (car la recherche pourrait-être longue) ? Quelle fonction utiliser en Lisp pour faire une recherche de fichier ? Avez-vous une meilleure méthode ? Merci d'avance.
-
Ouvrir d\'après un gabarit en ligne de commande
LUDWIG a répondu à un(e) sujet de LUDWIG dans Débuter en LISP
ah, donc ça ne vient pas d'une erreur de ma part. Appeler un script semble la solution... Ca se complique ! Merci REBcao ! -
Je n'arrive pas à mettre dans un bouton "nouveau dessin issu d'un gabarit" : ^C^Cfiledia 0 nouveau "M:/Modele/Barre_outils/CDC/Gabarit/CDC.dwt" mais autocad ne prend pas mon chemin (qui est correct) : il attend que je lui tape.
-
OK merci
-
Bonjour, Une petite question qui ne doit pas être compliquée à résoudre : quand je dessine un mur, il fait 275 mètres de haut et 0,1 de large. Ou est-ce qu'on modifie les dimensions par défaut des nouveaux murs ? Même questions pour les dimensions par défaut des portes, fenêtre... mais je suppose que ce sera la même procédure que pour les murs. Merci d'avance.
-
ah oui vraiment pas bête l'idée de rendre invisible les calques. C'est simle en plus.
-
:red: Je n'ai pas compris ce que tu me dis... :red: Bon, je vais réexpliquer : disons j'ai un lisp qui vient placer (par des "_command") dans undessin vide la lettre C, puis la met en rouge puis la lettre A et la met en bleu puis la lettre D et la met en vert etc A la fin on a CADXP écrit en multicolore. Cependant, pendant l'exécution du lisp, je passe (rapidement pour cet exemple je le reconnais)d'un écran vide à un écran avec un C qui devient rouge puis arrive le A qui devient bleu etc. J'aimerais en fait passer direcetement de l'écran vide au CADXP multicolore sans que les manip intermédiaires soient visible. Sinon, j'ai trouvé une solution (c'est de la bidouille). Je zoom sur un espace vide, j'exécute mon script, je reviens au zoom précédent. Je passe ainsi directement de l'écran AVANT à l'écran APRES le lisp.
