-
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_
-
Constituer un filtre dynamique avec les codes DXF
zebulon_ a répondu à un(e) sujet de bonuscad dans Pour aller plus loin en LISP
Salut J'ai lancé autocad 2004, Je crée une ligne ou deux et un arc, je charge ton lisp et je le lance. Je place mon curseur sur une entité, je clique à droite et les codes dxf de l'entité s'affichent puis je valide avec entrée et les poignées de sélection s'affichent sans problème, du premier coup. Sinon, avant que Autodesk ne rajoute la sélection rapide, j'étais un grand consommateur de la commande FILTER et dans cette commande il y a un bouton "Ajouter l'objet sélectionné", qui permet de faire un peu la même chose que ton lisp, mais affiché sous forme de boîte de dialogue. De plus, de la manière dont c'est présenté, il ne faut pas absolument être une bête en code dxf pour pouvoir l'utiliser. Le défaut majeur de la commande FILTER est dû à une problème de traduction (une fois de plus). La liste des critères de sélection est triée en fonction de la liste anglo-saxonne. Dans la version française, on a donc du mal à retrouver ses petits. Amicalement Zebulon_ -
Constituer un filtre dynamique avec les codes DXF
zebulon_ a répondu à un(e) sujet de bonuscad dans Pour aller plus loin en LISP
Salut, C'est peut être dû à un fonctionnement aléatoire de sssetfirst. J'ai fait un ptit lisp qui sélectionne tous les objets d'un fichier, en filtrant le calque d'un représentant. il y a 2 paramètres pour sssetfirst, j'ai pas trouvé d'aide à leur sujet et j'ai tâtonné jusqu'à ce que ça marche. Cela marche bien dans ma version 2004, mais un copain à qui je l'ai filé me dit que ça ne marche pas dans sa 2006 ? (et comme je n'ai pas la 2006 ...) (defun c:laysel () (setq P (car (entsel "Choix objet :"))) (if P (progn (setq E (entget P)) (setq LAY (assoc 8 E)) (setq SS (ssget "X" (list LAY))) (sssetfirst nil SS) ) ) (princ) ) -
Routine exportation vers autocad d\'attributs de bloc
zebulon_ a répondu à un(e) sujet de grosseel dans Pour aller plus loin en LISP
Essaye comme ça ; Fonction pour Récupération des informations de la boite DCL (defun do_accept () (setq EXPORT (get_tile "export")) (done_dialog 2) (alert EXPORT) ;; pour débug afficher la valeur récupérée ) (defun c:excel ( / OldCmd dcl_id ) (setq OldCmd (getvar "CMDECHO") dcl_id (load_dialog "ERAS-EL.dcl") ) (setvar "CMDECHO" 0) ; Création de la boite (new_dialog "export" dcl_id) ; Fonction d'appel en retour (action_tile "about" "(about)") (action_tile "cancel" "(done_dialog 0)") (action_tile "accept" "(do_accept)") ; Affichage de la boite (setq What_next (start_dialog)) (if (= What_next 2) (progn ; Création du fichier xls avec nom et chemin d'accés (setq nom (getfiled "Nom du fichier excel à créer" "T:\\" "xls" 1)) ; Exportation des attributs (if (= EXPORT "Filerie") (command "-eattext" "dwgCourant" "Non" "Non" "w:\\technique\\autocad\\Symboles DAO 2003\\Aide\\FIL.blk" "Xls" nom) (command "-eattext" "dwgCourant" "Non" "Non" "w:\\technique\\autocad\\Symboles DAO 2003\\Aide\\CAB.blk" "Xls" nom) ) ) (setvar "CMDECHO" OldCmd) ) ; Déchargement de la boite (unload_dialog dcl_id) ) -
Moi qui pensait que le panda, ce n'était que le logo de la WWF... Ce qui est inquiétant c'est que Je vois bien Bill Gates en braconnier ... Et en complément d'information, une enquète intéressante sur ce sujet : http://linuxfr.org/~Cooker/16020.html Amicalement Zebulon_ [Edité le 26/9/2005 par zebulon_]
-
Routine exportation vers autocad d\'attributs de bloc
zebulon_ a répondu à un(e) sujet de grosseel dans Pour aller plus loin en LISP
Salut grosseel, D'abord au niveau de la logique, est-ce bien des boutons de radio que tu veux mettre, ou des cases à cocher ? En principe les boutons de radio, quand t'en allume un, l'autre s'éteint. Pour les cases à cocher, on peut en choisir aucune, une, deux ou n. La case à cocher se dit toggle en dcl. un exemple de dcl qui gère des boutons de radio : boxed_radio_row { label = "Matériaux : "; key = "mat"; : radio_button { label = "pleine"; key = "matp"; } : radio_button { label = "vitrée"; key = "matv"; } } Pour ce qui de la gestion de la boîte de dialogue, pour commencer, ne fait que (action_tile "cancel" "(done_dialog 0)") (action_tile "accept" "(do_accept)") et tu rajoutes une fonction, dans laquelle tu récupères les valeurs de la boîte de dialogue avant de la fermer. Par exemple (defun do_accept () (setq MAT (get_tile "mat")) (done_dialog 2) ) Et dans la variable MAT il y aura soit "matp", soit "matv". Puis, après les action_tile et avant le unload_dialog tu fais (setq What_next (start_dialog)) (if (= What_next 2) (progn ... ce qu'il y a à faire quand tu as cliqué sur OK ) ) Pour ce qui est du nom de fichier, je ferais plutôt un bouton "saisir", avec un action_tile correspondant, qui lance la fonction getfiled. Le résultat de getfiled, tu pourras l'afficher dans une zone de texte de la boîte de dialogue en faisant un set_tile. La syntaxe dans dcl : text { key = "montexte"; } Dans le lisp (if (setq nom (getfiled "Nom du fichier excel à créer" "T:\\" "xls" 1)) (set_tile "montexte" nom) ) Pour terminer, dans le do_accept, tu pourras vérifier s'il y a quelque chose dans la case "montexte" avant de faire le (done_dialog 2). En gros, Les joies du DCL. Rassure-toi, si c'est des cases à cocher qu'il te faut, c'est beaucoup plus simple. Amicalement Zebulon_ -
En fait, ma façon de procéder est la suivante : par exemple, je voudrais faire les élévations des façades d'un bâtiment. 1°) j'appelle en xref les vues en plans qui se superposent (que je décharge ou recharge selon mon besoin) 2°) je dessine les 4 élévations autour de ma vue en plan, comme on le ferait sur un plan de mécanique, ou comme une boîte qu'on déplie. Tout cela pour pouvoir projeter les arrêtes de mes vues en plan. J'utilise pour cela la commande SCU Objet pour créer un nouveau scu et la commande REPERE pour tourner la vue. Quand je me mets en SCU Général, une vue est orientée vers le haut, l'autre vers le bas, la troisième vers la gauche et la dernière vers la droite. 3°) Je nomme 4 scu (EST, OUEST, NORD et SUD) et j'associe 4 vues (EST, OUEST, NORD et SUD), pour pouvoir passer aisément d'une vue (orientée vers le haut, c'est plus facile) à l'autre, le tout dans l'espace objet. Les scu ont cela de particulier qu'ils sont définis de manière à ce que, pour une vue donnée, le Y du scu représente l'altitude (le 0 du Y coorespond au +/-0.00 du rez-de-chaussée) 4°) Pour l'instant, je n'ai pas encore parlé de l'espace papier, mais j'ai déjà nommé mes vues et mes scu. Mais comme je me suis donné la peine de nommer des vues, j'utilise ces noms quand je fais une fmult. Comment ? Simplement en utilisant la commande vue, après avoir défini une nouvelle fmult, pour y faire apparaître la vue désirée. Elle sera tout de suite bien orientée, avec le bon scu. Il suffit de règler l'échelle. Christian, tu constateras que le nom de l'espace présentation ne me sert pas à grand chose, à moins que je n'ai pas tout compris ? Amicalement Zebulon_
-
Merci pour le tuyau Amicalement Zebulon_
-
Pas du tout, et voilà ... Décocher la case : conserver les modifications des calques XREF revient à mettre la variable VISRETAIN à 0. Ce qui me ramène à mon problème de départ. Merci quand même. Amicalement Zebulon_
-
bonjour à tous, Je suis un grand utilisateur de la commande vue, qui me permet de sauvegarder des états de zoom et d'éventuellement les rappeler dans une fenêtre fmult. Je suis très heureux que, depuis la version 2000 (enfin je crois), Autodesk ait eu la brillante idée d'offrir la possibilité d'associer un scu à une vue. Ce que je touve dommage, c'est qu'il faut d'abord nommer le scu, puis nommer la vue en lui associant le scu. Or 99999 sur 100000, je donne le même nom au scu et à la vue. Cela parraît logique. Je n'ai pas trouvé comment nommer une vue et le scu qui lui était associé en 1 seule fois, sauf à faire un lisp. En voilà une première ébauche. (defun c:scuvue () (setq NOMSCUVUE (getstring "\nNom du SCU et de la vue :")) (if (or (tblsearch "VIEW" NOMSCUVUE) (tblsearch "UCS" NOMSCUVUE)) (alert (strcat NOMSCUVUE " existe déjà")) (progn (command "_ucs" "_s" NOMSCUVUE) (command "_view" "_u" "_y") (command "_view" "_s" NOMSCUVUE) ) ) ;;; fin du si (princ) ) Attention : getstring ne permet pas de saisir des noms avec des espaces, puisqu'un espace est assimilé à une entrée. [Edité le 22/9/2005 par zebulon_]
-
Je ne vois qu'une solution. Sélectionner tous les éléments du calque MATERIEL dans le fichier appelé en XREF, les copier/coller dans nouveau fichier appelé MATERIEL par exemple, supprimer les éléments du calque MATERIEL dans le premier fichier et y appeler le fichier MATERIEL en xref. Tu auras 3 fichiers BASE, MATERIEL et PARKING. A toi de choisir lesquels tu veux envoyer. PS : pour les xrefs, j'utilise toujours le type de référence superposition et non attachement, pour éviter d'hériter des xrefs de xrefs et pour éviter les risques de références cycliques. Le type de référence supersposition ne prend en compte que le fichier appelé en référence et pas ceux qui seraient appelés en xref par ce dernier. Moi, je préfère. Manque de bol, c'est pas l'option par défaut. Amicalement Zebulon_
-
Routine exportation vers autocad d\'attributs de bloc
zebulon_ a répondu à un(e) sujet de grosseel dans Pour aller plus loin en LISP
Bonjour, si c'est juste pour piocher un nom de fichier et un répertoire, le dcl ne me semble pas nécessaire. Yaskifo dans le lisp avec getfiled : (getfiled title default ext flags) Dans ton cas, ça pourrait donner : (if (setq id_file (getfiled "Nom du fichier excel à créer" "" "xls" 1)) ... Le flag a 1 indique une demande de création d'un nouveau fichier. Pour les autres flag, vas voir dans l'aide. La fonction getfiled revoie le chemin défini par l'opérateur ou nil, s'il a cliqué sur annuler. Je n'ai pas testé, mais ça ressemblerai à : (defun c:excel ( / OldCmd dcl_id Fichier ) (setq OldCmd (getvar "CMDECHO") (setvar "CMDECHO" 0) (if (setq nom (getfiled "Nom du fichier excel à créer" "T:\\" "xls" 1)) (progn ; Exportation des attributs (command "-eattext" "dwgCourant" "Non" "Non" "w:\\technique\\autocad\\Symboles DAO 2003\\FIL.blk" "Xls" nom) ; Ouverture du fichier Excel (vl-load-com) (if (equal nil msEm-open) (vlax-import-type-library :tlb-filename "c:/program files/Microsoft Office/Office/Excel9.olb" :methods-prefix "msEm-" :properties-prefix "msEp-" :constants-prefix "msEc-" ) ) (setq msE (vlax-get-object "Excel.Application.9")) (setq ExclWorkbs (vlax-get-property msE 'Workbooks)) (setq NWorkb (msEm-open ExclWorkbs "T:\\FIL1")) (vla-put-visible msE 1) ) ) ) [Edité le 22/9/2005 par zebulon_] -
Et maintenant, je voudrais faire la même chose pour DwfViewer... Va trouver dans les registres où c'est installé :casstet:
-
Ma syntaxe est correcte et je suis sous xp. J'ai essayé avec SHELL et là, ça marche. (defun c:read_pdf ( / id_file) (setq id_file (getfiled "Sélectionner un fichier PDF" "" "pdf" 16)) (command "_shell" (strcat "\"" id_file "\"")) (command "_shell" "exit") (prin1) ) Mais cela ouvre temporairement une antique fenêtre DOS, et je pense également que l'utilisation du STARTAPP est plus propre, quitte à fouiller un peu dans les registres. Sauf que, si par exemple l'éditeur d'un logiciel s'amuse à changer de structure de registre ou même à changer le nom du fichier exécutable d'une version à l'autre, dans ce cas la deuxième solution est préférable. Par exemple, si vous installez une version autocad 2004, vous aurez un dwf viewer qui ne s'appelle pas DwfViewer.exe, mais ExpressViewer.exe (ou quelque chose comme ça, je ne sais plus puisque j'ai installé une mise à jour depuis) et là le lisp qui utilise startapp risque un jour de ne plus marcher si d'aventure demain DwfViewer.exe s'appelle DwfViewer32.Exe Amicalement Zebulon_
-
euhhh, ben ça a pas l'air de marcher avec les "\" supplémentaires ?..
-
Je viens de m'en appercevoir aussi :mad: Mais je pense qu'avec des guillemets supplémentaires, je sais pas encore comment, on devrait pouvoir s'en sortir Amicalement Zebulon_ Voilà, maintenant je sais. Voir ci-dessus... :) [Edité le 21/9/2005 par zebulon_]
-
Start, c'est encore mieux. Et en lisp, ça pourrait donner : (defun c:read_pdf ( / id_file) (setq id_file (getfiled "Sélectionner un fichier PDF" "" "pdf" 16)) (command "_start" id_file) (prin1) ) sauf quand il y a un espace dans le nom du fichier... Merci pour le tuyau, rebcao Amicalement Zebulon_ [Edité le 21/9/2005 par zebulon_]
-
Et si on fouille un peu dans les registres, ça pourrait donner ça... (defun c:read_pdf ( / id_file VERSION CHEMIN) (setq VERSION (car (vl-registry-descendents "HKEY_LOCAL_MACHINE\\SOFTWARE\\ADOBE\\Acrobat Reader"))) (setq CHEMIN (vl-registry-read (strcat "HKEY_LOCAL_MACHINE\\SOFTWARE\\ADOBE\\Acrobat Reader\\" VERSION "\\InstallPath"))) (setq id_file (getfiled "Sélectionner un fichier PDF" "" "pdf" 16)) (startapp (strcat CHEMIN "\\AcroRd32.exe") id_file) (prin1) ) Chez moi, ça marche avec la version 7. La question est de savoir si la structure du registre est, était et restera la même pour toutes les versions. Amicalement Zebulon_
-
ben voilà, STARTAPP. Je pensais bêtement que, comme quelqu'un s'était donné la peine de faire une fonction DOS_EXECUTE, elle n'existait pas dans le lisp. Eh oui, comme il y a un espace entre Acrobat et 7.0, c'est un peu plus compliqué. Et maintenant, on se dit que si demain tu installes Acrobat reader 8.0 ou si quelqu'un n'a que la version 5, ça ne marchera plus. Le top serait de faire trouver le fichier exécutable associé par défaut à une extension .pdf (s'il existe) et lancer celui-là, peu importe sa version et l'endroit où il est installé. C'est possible ? Amicalement Zebulon_
-
J'ai eu une question similaire, mais pour ouvrir un document dwf. J'ai utilisé la commande dos_execute, issue DOSLIB http://www.mcneel.com/download.htm (if (not (dos_execute (strcat "DwfViewer " DWFNAME))) (alert "Pour visualiser le fichier\nil faut installer\nExpressViewer\net rajouter le chemin d'installation\ndans les chemins de recherche par défaut") ) Il suffirait de remplacer DwfViewer par AcroRd32 et DWFNAME par le nom du fichier pdf à ouvrir. Il faut aussi, je pense, rajouter le répertoire d'installlation de l'acrobate reader dans les chemins de recherche par défaut d'autocad, sinon le dos_execute risque de ne pas trouver le programme externe à exécuter. Il y a peut être quelque chose d'équivalent en Visual LISP ? Amicalement Zebulon_
-
Tiens pourquoi pas. Je vais essayer Editref (une commande que je n'ai jamais utilisée) Amicalement Zebulon_
-
Bonjour, voilà mon soucis : - j'appelle un fichier A.dwg en xref dans un fichier B.dwg - dans le fichier B je gèle des calques dépendants du fichier A - plus tard, on me demande de modifier une couleur d'un calque du fichier A, ce que je fais dans A. Je voudrais que la modification se répercute sur le fichier B. Il y a bien la variable VISRETAIN, que j'ai mis à 0. Les couleurs se mettent bien à jour quand je recharge la xref, mais je perd tout ce que j'ai défini en matière de visibilité des calques. J'ai lancé un _layerP, sans succès. J'ai essayé le Layer Manager du menu express, sans succès aussi. J'ai donc gelé à nouveau les calques provenant de A qui ne m'intéressent pas Et il ne faut surtout pas oublier de remettre VISRETAIN à 1. Finalement, j'ai modifé "à la main" la couleur du calque dans le fichier B pour la faire correspondre à celle du fichier A. Il n'y aurait pas une variable plus "souple" que VISRETAIN et qui permettrait de ne mettre à jour que les couleurs en laissant l'état des visualisations (gelé ou désactivé) ? Merci Amicalement Zebulon_
-
va pour le cierge. Mais il faudrait qu'on soient plusieurs à faire brûler un cierge, sinon je doute de l'efficacité de cette mesure. Amicalement Zebulon_
-
J'ai essayé d'ouvrir des fichiers 3D avec ces produits. Avec Intellidesk 2005, je ne visualise que les faces 3D. Les solides ont disparu. Avec IntelliPlus Pro 3D, je visualise aussi les solides, mais la commande CACHE ne cache pas grand chose. FMULT n'a pas d'option Cachetrace et les vues dynamiques faites avec Autocad sont "aplaties" dans IntelliPlus. Dans Intelliplus, j'ai paumé la fenêtre de commande et je n'arrive pas à la restaurer. J'ai dû faire une bêtise... Amicalement Zebulon_
-
Que dit l'anti-virus ? Essaye peut-être avec un autre navigateur ? Tout le monde me dit tellement de bien de Firefox.
-
Je suis d'accord, avec tout le respect qu'on doit à Kenny Ramage, ça tient de la bidouille. Donc, j'en viens à la conclusion : - soit on passe à VBA - soit on continue avec LISP en se portant acquéreur de ObjectDCL Mon choix est fait. Autodesk serait bien inspiré de racheter ObjectDCL pour le rajouter à une prochaine version. Si quelqu'un peut leur glisser à l'oreille ... Amicalement Zebulon_
