-
Compteur de contenus
2 764 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Bred
-
Salut, au début (setq var_HPASSOC (getvar "HPASSOC")) (setvar "HPASSOC" 1) .... à la fin (setvar "HPASSOC" var_HPASSOC) la commande "_.draworder", après avoir signaler que objet tu veux traiter, te demandes de "Sélectionnez les objets de référence:" apès l'option "dessu" .... ce que tu ne fais pas.... je choisirais, au lieu des options dessus/dessous Avant ou Arrière .... (en fait tu as déjà choisis arrière, donc change le choix des variables par : (if (= rep "s") (setq ot "avant") (setq ot "arriere") ) (tu n'as pas besoin de "prog" quand tu réalises qu'une action après le if) [Edité le 20/3/2007 par Bred]
-
Super ! ... 6h43 la réponse... c'et ton heure on dirait ! merci. Pour info, si l'on à d'autre selection à faire après le ssprompt, il faut faire un test sur sel, car sinon si on fait un echap, sel n'est pas nil, (malgé qu'il ne soit rien) : comme ça : (setq sel nil) (while (not sel) (setq sel (ssprompt '((62 . 1)) "\nSélectionnez les objets rouges: ")) ) (if [b](equal (type sel) 'PICKSET)[/b] (progn ................ etc
-
... ouh là !... par contre, ne pas faire un test comme ça : (setq sel nil) (while (not sel) (setq sel (ssprompt '((62 . 1)) "\nSélectionnez les objets rouges: ")) ) car si vous n'avez aucun objet '((62 . 1)), la question ne s'arrêtte jamais !!!....
-
Comme d'habitude, c'est du grand art !!!.... merci une "énième fois" encore (gile) !
-
ElpanovEvgeniy m'a répondu (setq sel(ssget '((62 . 1)))) mais ce n'est pas ce que je voudrais (merci quand même!) Je voudrais (exemple): (setq sel(ssget '((62 . 1)))[b]"choisissez les objets rouges"[/b] : ) (je sais, c'est faux, mais c'est plus compréhensible je pense...)
-
Salut, Quand je veux faire demande une selection de plusieurs objets précis, en ce moment je fait ça : (princ "\nChoix des objets rouges :") (setq sel (ssget)) ce qui donne ... ce qui n'est pas terrible... Autriez-vous dans vos archives une routine de selection équivalente à SSGET (avec possibilité de filtre de selection idem), mais dont on peut mettre le texte à loisir ? merci d'avance !
-
Merci Patrick_35... En fait, à tête (et ordi) refroidi, le code que j'ai posté ci-dessus fonctionne (ce qui n'est pas étonnant vu que la fermeture est un coper-coller de ton code.) Merci encore !
-
pfffffffffffffffffff !!!... j'ai fait ça .... (je suis assez content de moi pour la manière de choisir l'onglet .... en gras) ; Lancer une liaison avec Excel - (defun lancer_excel (vis / sel) (setq xl (vlax-get-or-create-object "Excel.Application")) (setq wks (vlax-get xl 'Workbooks)) (vlax-for sel wks (setq liste_fichiers_ouvert (append liste_fichiers_ouvert (list (strcase (vlax-get sel 'fullname))))) ) (if (equal vis 0) (vla-put-visible xl :vlax-False) (vla-put-visible xl :vlax-True) ) ) ;;; Ouverture Excel + Nom de feuille puis 1 = visible, 0 = invisible -> (XL-Ouv-Feuill "chemin fichier" "Nom de feuille") - (defun XL-Ouv-Feuill (Chem-fich Nom_feuil vis) (lancer_excel vis) (setq xl-fichier (vlax-invoke wks 'open Chem-fich)) (setq xl-classeur (vlax-get xl-fichier 'sheets)) [b] (setq x 1) (repeat (vlax-get-property xl-classeur 'Count) (if (equal (strcase (vlax-get (vlax-get-property xl-classeur 'item x) 'name)) (strcase Nom_feuil)) (setq xl-feuille (vlax-get-property xl-classeur 'item x)) (setq x (+ x 1)) )[/b] ) (vlax-invoke-method xl-feuille 'Activate) ) ;;; Choix Cellule dans Excel - Ecriture Texte -> (XL-Put-Txt-Cell "Texte" "C4") - (defun XL-Put-Txt-Cell (Txt Cell) (vlax-put (vlax-get-property xl-feuille 'range Cell)'value2 Txt) ) ;;; Choix de Cellule dans Excel (liste) - Lire Cellule -> (XL-Get-Val-Cell '("B1" "C4")) - ;;; -> Retourne liste résultat - (defun XL-Get-Val-Cell (lst-Cell / x) (setq x 0 lst-val nil) (repeat (length lst-Cell) (setq lst-val (append lst-val (list (vlax-get (vlax-get-property xl-feuille 'range (nth x lst-Cell)) 'value2))) x (+ x 1)) ) lst-val ) ; Fermer la liaison avec Excel (defun XL-Close (/ ok sel) (if (not (member (strcase (vlax-get xl-fichier 'fullname)) liste_fichiers_ouvert)) (vlax-invoke-method xl-fichier 'close :vlax-false) ) (if liste_fichiers_ouvert (vla-put-visible xl :vlax-True) ) (foreach sel (list xl wks xl-fichier xl-classeur xl-feuille) (vlax-release-object sel) ) (setq xl nil wks nil xl-fichier nil xl-classeur nil xl-feuille nil) (gc)(gc) ) ) [Edité le 2/12/2007 par Bred]
-
Salut, Pourquoi n'utilises-tu pas Ton propre Lisp afin d'extraire les attributs et de faire une relation en l'attribut et le bloc le contenant ?
-
Pour cela, rien de plus simple. Tu installe l'electricité. Ou avec une lampe de poche. Mais il faut le trouver, car si tu marche dessus, c'est casse-geule ! (ça roule, les tuyaux !)
-
... et complétement largué !!! :casstet: Je m'étais habitué à "vlax-import-type-library", et je vois que tu est passé par autre part .... j'ai éssayé d'aptater la précedente version que j'ai mis ci-dessus en mettant à la fermeture (foreach n (list xl xl_wks xl_fichier xl_classeur xl_feuille)(vlax-release-object n)) (setq xl nil xl_wks nil xl_fichier nil xl_classeur nil xl_feuille nil) (gc)(gc) ... mais ça ne fonctionne toujours pas (j'ai toujours Excel en processus...) Donc, j'en suis à envoyer un appel à l'aide à qui peu pour que l'on puisse me pondre des routines équivalentes à celles que j'ai mis au dessus (ou que l'on me dirige fortement...) Je cherche à : 1 - Ouvrir Excel avec test si déjà ouvert (avec argument visible (1) ou pas (0)) 2 - Choix d'un fichier existant et pointage sur une feuille (argument fichier et nom de feuille) 3 - Choix d'une cellule et écriture valeur (argument cellulle et valeur) 4 - Choix de cellulles et lecture de cette cellule (avec argument une liste de cellulle) -> retourne une liste de valeur. 5 - Fermeture de la page, voir d'Excel si celui-ci n'était pas déjà ouvert ... .... mon lisp précedent fait tout ça, mais il ne me ferme pas totalement Excel (et je ne suis pas sûr du test si déjà ouvert....) merci d'avance !!!!
-
HELP LISP pour passer tous les blocs en calque 0
Bred a répondu à un(e) sujet de zizou_elec dans AutoCAD 2006
Salut et bienvenue, tu as le fabuleux lisp de (gile) ici ! qui te conviendrais je pense... -
= polilygne"3D" ... = LW polyligne ... donc ça ne peut pas être ça.....
-
OK ! Récupéré et en train d'être décortiqué. merci ! :P [Edité le 15/3/2007 par Bred]
-
Salut, en effet, (setq sset (ssget '((0 . "INSERT")))) Te demandes de faire une selection, mais ne selectionne que des blocs. Pour selectionner TOUS les blocs d'un dessin, il faut rajouter "_X" (setq sset (ssget "_X" '((0 . "INSERT")))) CMDECHO a 0 permet de ne pas faire afficher le cheminement des commandes sur la ligne de commande. POur la selection des textes, au lieu d'avoir "insert" dans SSGET, ce serait "MTEXT" pour les texte multi-ligne, ou "TEXT" pour les texte simple.
-
Salut, Au vue de l'impossibilité de modifier les plans de délimitations d'une fenêtre de présentation par entmake/mod (là) et de mon doute de trouver des commandes en vl : 1 - Certains dénigre la commande 3dlim, mais je n'en ai pas trouvé d'équivalente et d'aussi performante pour réaliser en mise en plan des sections d'un plan 3D constitué de toutes sorte d'entité... comment faites-vous sans utiliser cette commande ? 2- Comment feriez vous en lisp pour pouvoir bouger ces plans de délimitations ? ... merci d'avance ! [Edité le 15/3/2007 par Bred]
-
mmmmm !... en fait je dois avoir le firewall de mon bureau qui me bloc le téléchargement !... Je verrais ça chez moi ce soir ! désolé.
-
Je viens de télacharger Lxl.zip , mais je n'arrive pas à le lire (zip endommagé ?)
-
Super, merci, je vais regarder ça !
-
Salut, je reviens en ce moment sur la fermeture d'Excel, car j'avais une erreur (fermeture de tout excel, même si celui-ci était déjà ouvert...) Mais un problème subsiste, et ça me fait planter mes routines : Je n'arrive pas à fermer la tâche EXCEl dans les processus, malgré (vlax-release-object Xl)(gc) ... :casstet: Pour info, ci-dessous la routine de Patrick-35 mis en sous-routine à ma sauce. ;;; Ouverture Excel + Nom de feuille puis 1 = visible, 0 = invisible -> (XL-Ouv-Feuill "chemin fichier" "Nom de feuille" 0) (defun XL-Ouv-Feuill(Chem-fich Nom_feuil vis) (if (not (vlax-get-object "Excel.Application")) (setq XL-TestOuvert "N") (setq XL-TestOuvert "O")) (vl-load-com) (Excel_Version) (setq xl (vlax-get-or-create-object "Excel.Application")) (vlax-import-type-library :tlb-filename Chemin_Excel :methods-prefix "xl-" :properties-prefix "xlp-" :constants-prefix "xlc-") (setq xl_wks (vlax-get xl "Workbooks") xl_fichier (xl-open xl_wks Chem-fich) xl_classeur (vlax-get xl_fichier "Sheets") xl_feuille (xlp-get-item xl_classeur Nom_feuil)) (if (equal vis 0) (vla-put-visible xl :vlax-False) (vla-put-visible xl :vlax-True) ) ) ;;; Choix Cellule dans Excel - Ecriture Texte -> (XL-Put-Txt-Cell "Texte" "C4") - (defun XL-Put-Txt-Cell (Txt Cell) (setq DONN (xlp-get-range xl_feuille Cell)) (xlp-put-value2 DONN Txt) ) ;;; Choix Cellule dans Excel (liste) - Lire Cellule -> (XL-Get-Val-Cell '("B1" "C4")) - ;;; -> Retourne liste résultat - (defun XL-Get-Val-Cell (lst-Cell / x) (setq x 0 lst-val nil) (repeat (length lst-Cell) (setq lst-val (append lst-val (list (vlax-variant-value (xlp-get-value (xlp-get-range xl_feuille (nth x lst-Cell)))))) x (+ x 1)) ) lst-val ) ;;; Fermeture de la page ouverte (defun XL-Ferm () (xl-saveas xl_feuille "C:\\XL-Lisp.xls") (vlax-invoke-method (vlax-get-property Xl "ActiveWorkbook") 'Close) (if (equal XL-TestOuvert "N") (progn (vlax-invoke-method Xl 'QUIT) [b](vlax-release-object Xl)(gc)[/b])) (if (findfile "C:\\XL-Lisp.xls") (vl-file-delete "C:\\XL-Lisp.xls")) ) ... je suis le seul dans ce cas ????... c'est quand même bizarre que (gc) ne fonctionne pas.... merci ! [Edité le 15/3/2007 par Bred]
-
Merci, mais ça ne fonctionne pas ....i (il ne me crée pas la fenêtre...) J'ai regardé en vla- mais je ne trouve pas de commandes touchant aux délimitations.... [Edité le 14/3/2007 par Bred]
-
Salut, je n'arrive pas à modifier les valeurs des délimitation avant et arrière en passant par entmod... c'est-y-normal ??? mon code de travail : (defun c:ttt () (if (= (getvar "TILEMODE") 1) (princ "\n ** Cette commande n'est valable que dans l'espace papier. **") ;Sélection Fenêtre (progn (if (= (getvar "CVPORT") 1) (progn (while (not (and (setq sel (car (entsel "\n Sélectionner une fenêtre :"))) (or (equal (cdr (assoc 0 (entget sel))) "VIEWPORT") (equal (cdr (assoc 0 (entget (cdr (assoc 330 (entget sel)))))) "VIEWPORT") ) ) ) ) (setq sel (entget sel) id_fenetre (cdr (assoc 69 sel))) (if (= id_fenetre nil) (progn (setq sel (entget (cdr (assoc 330 sel))) id_fenetre (cdr (assoc 69 sel))) ) ) (command "_.MSPACE") (setvar "CVPORT" id_fenetre) ) ) ) ) (command "_.PSPACE") [b](setq dxf-AV-43 (cdr (assoc 43 sel))) (setq dxf-AR-44 (cdr (assoc 44 sel))) (setq dec (getreal "Délimitation à décaler de :")) (setq sel (subst (cons 43 (+ dxf-AV-43 dec)) (assoc 43 sel) sel) sel (subst (cons 44 (+ dxf-AR-44 dec)) (assoc 44 sel) sel)) (entmod sel)[/b] (princ) ) ... merci....
-
Ah... ben j'attendrais un peu, alors, car quand les dépenses seront remboursés se sera gratuits ??? ;) Serieusement : si l'efficacité est au rendez-vous, il n'y a aucune raison de ne pas en profiter (ce sra mérité).... pour un prix raisonable et un SAV qui suit .... :cool: ... et si il est proposé en français .... [Edité le 12/3/2007 par Bred]
-
Salut, Les fichiers sont des .lsp et se trouvent dans C:\Program Files\AutoCAD xxxx\Express.
-
pivoter mon dessin dans une fenetre de presentation
Bred a répondu à un(e) sujet de jo974 dans AutoCAD 2007
Salut, tu as ce Lisp, qui te retourne le fenêtre aussi.
