Aller au contenu

Infinicad

Membres
  • Compteur de contenus

    50
  • Inscription

  • Dernière visite

  • Jours gagnés

    1

Infinicad a gagné pour la dernière fois le 6 novembre 2013

Infinicad a eu le contenu le plus aimé !

Infinicad's Achievements

Newbie

Newbie (1/14)

-2

Réputation sur la communauté

  1. OH! merci beaucoup c'est exactement ce que je cherchais :)
  2. Bonjour, Quelqu'un saurait il s'il est possible de récupérer la valeur du bit de l'accroche utilisé pour le clique. En fait je souhaiterai pouvoir conditionner une action selon le type d'accroche utilisé. Ex: si je clique sur un centre de cercle alors je fais XXXX si je clique sur une extrémité alors YYYY Cela est il possible? J'ai essayer d'utiliser le GRSNAP de Lee Mac mais je crois que je n'ai pas compris son fonctionnement.... Merci à vous
  3. Bonjour à tous Ceci est mon premier vrai lisp Il s'agit de créer une polyligne selon les points cliqués et d'en modifier les extrémités. Mon probleme ets que lorsque je le déroule morceau par morceau dans visuallisp il semble fonctionner. Mais quand je le lance comme commande il me donne :"élément incorrect dans la liste d'arguments: 219.161" Je ne sais pas comment retrouver l'erreur, je suis vraiment débutant dans Visual.. voici le lisp en question ;;; modifie les coordonées d'un point(liste de coordonées) (defun modcoor (L x y) (cons (+ (car L) X) (cons (+ (cadr L) y) '(0)) ) ) ;;;defini la position d'un point (L1) par rapport au premier point d'une liste de points(L2) (defun pos (L1 L2 / sens) (if (> (car L1) (car (car L2))) (if (> (cadr L1) (car (cadr L2))) (setq sens "1") (setq sens "2") ) (if (> (cadr L1) (car (cadr L2))) (setq sens "3") (setq sens "4") ) ) ) (defun polsig (/ lstpt ptd ptf ) (setq lstpt nil) (setq ptd nil) (setq ptf nil) (setq ptd (getpoint "\1er point")) (initget 1 "1 2") (setq fild (getkword "1er fil ou 2e fil?(1 or 2)") ) (while (and (or pt1 (setq pt1 (getpoint "Enter the first point: ")) ) (setq pt2 (getpoint "enter the next point <eXit>: ")) ) (setq lstpt (cons pt2 lstpt)) ) (initget 1 "1 2") (setq fila (getkword "1er fil ou 2e fil?(1 or 2)")) (setq ptf (car lstpt)) (setq lstpt (cdr lstpt)) (setq sens (pos ptf lstpt)) (setq ptf;;;if car lstpt nill (if (= fila "1") (if (or (= sens "1") (= sens "2")) (setq ptf (modcoor ptf 0.5 0)) (setq ptf (modcoor ptf -0.5 0)) ) (if (= sens "1") ( (setq ptf (cons (modcoor ptf 0.2 0.5) (list (modcoor ptf 1 1))) ) (setq lstpt (cons (modcoor (car lstpt) 0 1) (cdr lstpt))) ) (if (= sens "2") ( (setq ptf (cons (modcoor ptf 5 5) (list (modcoor ptf 5 5)))) (setq lstpt (cons (modcoor (car lstpt) 5 5) (cdr lstpt))) ) (if (= sens "3") ( (setq ptf (cons (modcoor ptf 10 10) (list (modcoor ptf 10 10))) ) (setq lstpt (cons (modcoor (car lstpt) 5 5) (cdr lstpt))) ) (if (= sens "4") ( (setq ptf (cons (modcoor ptf 20 20) (list (modcoor ptf 20 20)) ) ) (setq lstpt (cons (modcoor (car lstpt) 20 20) (cdr lstpt)) ) ) (nil) ) ) ) ) ) ) (setq lstpt (reverse lstpt)) (setq sens (pos ptd lstpt)) (setq ptd (if (= fild "1") (if (or (= sens "1") (= sens "2")) (setq ptd (modcoor ptd 0.5 0)) (setq ptd (modcoor ptd -0.5 0)) ) (if (= sens "1") ( (setq ptd (cons (modcoor ptd 0.2 0.5) (list (modcoor ptd 1 1))) ) (setq lstpt (cons (modcoor (car lstpt) 0 1) (cdr lstpt))) ) (if (= sens "2") ( (setq ptd (cons (modcoor ptd 5 5) (list (modcoor ptd 5 5)))) (setq lstpt (cons (modcoor (car lstpt) 5 5) (cdr lstpt))) ) (if (= sens "3") ( (setq ptd (cons (modcoor ptd 10 10) (list (modcoor ptd 10 10))) ) (setq lstpt (cons (modcoor (car lstpt) 5 5) (cdr lstpt))) ) (if (= sens "4") ( (setq ptd (cons (modcoor ptd 20 20) (list (modcoor ptd 20 20)) ) ) (setq lstpt (cons (modcoor (car lstpt) 20 20) (cdr lstpt)) ) ) (nil) ) ) ) ) ) ) (setq lstpt (append ptf lstpt)) (setq lstpt (append ptd (reverse lstpt))) (setq lstpt (mapcar '(lambda (x) (cons 10 x)) lstpt)) (setq lstpt (append (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") (cons 8 "0") '(100 . "AcDbPolyline") (cons 90 (length lstpt)) '(70 . 0) ) lstpt) ) (entmake lstpt) ) Je sais qu'il beaucoup d'amélioration à faire(des fonction à créer etc..) Mais je voudrais surtout comprendre l'écart entre Visual qui me donne quelque chose et la commande qui fait une erreur. Merci à vous
  4. bonjour, Merci, merci merci tu peux pas imaginer comment ça vas m'aider.... :D Bonne journée
  5. Bonjour à tous, J'utilise le lisp ,tellement pratique, INCR, plus exactement INCSUF. Et je souhaiterai pouvoir supprimer la boite de dialogue et ne l'utiliser qu'avec les paramètres par défaut, sans qu'il n'affiche la boite. je gagnerai beaucoup de temps pour ce que je suis en train de faire. Merci beaucoup pour vos LISP et pour votre aide.
  6. Ha oui merci Olivier, je l'avais fait à la main mais oublié dans le code :unsure: merci pour ce rappel
  7. Ben justement c'est cette syntaxe qui fait stopper SAS, parcequ'en fait c'est transparent mais ça fait un echappe!
  8. Bonjour, J'ai trouvé. Le probleme vient du fait que à la fin de la commande "insert" on fait un echappe (qui stop SAS). Il faut inserer le bloc puis le supprimer, j'ai utilisé (entdel (entlast)). Et ça marche :P Mon code (defun c:MR3 ( / dir files f b ) (if (setq dir (acet-ui-pickdir) files (vl-directory-files dir "*.dwg" 1) ) (progn (foreach f files (if (tblsearch "block" (setq b (vl-filename-base f))) (progn (command "_-insert" (strcat b "=" dir "\\" f) "0,0" "" "" "") (entdel(entlast)) (command "attsync" "Nom" (setq b (vl-filename-base f))) (command "_.erase" "_w" "412,289" "635,-2" "") (command) ) ) ) ) ) )
  9. Bonjour, J'ai le même soucis avec ce lisp (defun c:MREDEF ( / dir files f b ) (if (setq dir "D:\\Documents and Settings\\BC5047\\Bureau\\bloc1" files (vl-directory-files dir "*.dwg" 1) ) (progn (foreach f files (if (tblsearch "block" (setq b (vl-filename-base f))) (progn (command "_-insert" (strcat b "=" dir "\\" f)) (command) (command "attsync" "Nom" (setq b (vl-filename-base f))) (command "_.erase" "_w" "412,289" "635,-2" "") (command "_.save" "" "o")(command "_close") ) ) ) ) ) ) Et je n'ai po de solution encore :( Mais il semble que l'insertion d'un bloc pose probleme...
  10. Bonjour, j'ai besoin de traiter avec ce lisp : (if (setq dir "D:\\Documents and Settings\\BC5047\\Bureau\\bloc1" files (vl-directory-files dir "*.dwg" 1) ) (progn (foreach f files (if (tblsearch "block" (setq b (vl-filename-base f))) (progn (command "_-insert" (strcat b "=" dir "\\" f)) (command) (command "attsync" "Nom" (setq b (vl-filename-base f))) ) ) ) ) ) tout un dossier. Normalement j'utilise ce lisp pour traiter par lot: ;;;================================================================= ;;; ;;; ACTIVELOT.LSP ;;; ;;; Executer un lisp ou script sur plusieurs fichiers dans plusieurs répertoires ;;; ;;; ;;;================================================================= (defun c:activelot(/ bl cdl fi lec lst rep sc sd sr MsgBox GetFolders _Collector _Main) (defun MsgBox (Titre Bouttons Message / Reponse WshShell) (setq WshShell (vlax-create-object "WScript.Shell")) (setq Reponse (vlax-invoke WshShell 'Popup Message 0 Titre (itoa Bouttons))) (vlax-release-object WshShell) Reponse ) (defun GetFolders ( path / _GetFolders _Collector _Main ) (defun _GetFolders ( path / folders ) (if (vl-position "." (setq folders (vl-directory-files path nil -1))) (cddr folders) folders ) ) (defun _Collector ( folder / temp ) (cons (setq temp (strcat path "\\" folder)) (apply 'append (_Main temp))) ) (defun _Main ( path ) (mapcar '_Collector (_GetFolders path)) ) (apply 'append (_Main path)) ) (vl-load-com) (if (zerop (getvar "dbmod")) (progn (setq sd (getvar "sdi")) (if (not (vl-catch-all-error-p (vl-catch-all-apply 'setvar (list "sdi" 1)))) (if (setq bl (getfiled "Sélection du fichier lisp/script pour le traitement par lot" "T:\\dao\\01 SIG\\1_ METHODES\\6_Outils BE\\LISP_SCRIPT\\1_Tous_les_programmes" "lsp;scr" 16)) (progn (setq cdl (vlax-create-object "Shell.Application") bl (vl-string-translate "\\" "/" bl)) (if (setq rep (vlax-invoke cdl 'browseforfolder 0 "Sélectionnez la branche de répertoires à traiter" 512 "")) (progn (setq rep (vlax-get-property (vlax-get-property rep 'self) 'path) rep (cons rep (getfolders rep))) (foreach lec rep (setq lst (append lst (mapcar '(lambda (x) (strcat lec "\\" x)) (vl-remove-if-not '(lambda (x) (or (eq (vl-filename-extension (strcase x)) ".DWG") (eq (vl-filename-extension (strcase x)) ".DXF")) ) (vl-directory-files lec "*.*" 1) ) ) ) ) ) (setq sc (strcat (vla-get-path (vlax-get-acad-object)) "/Patrick_35.scr") fi (open sc "w")) (foreach lec lst (write-line (strcat "_.open \"" lec "\"") fi) (if (eq (vl-filename-extension (strcase bl)) ".SCR") (progn (setq sr (open bl "r")) (while (setq rep (read-line sr)) (write-line rep fi) ) (close sr) ) (write-line (strcat "(load \"" bl "\")") fi) ) (if (eq (vl-filename-extension (strcase lec)) ".DXF") (write-line (strcat "_.saveas dxf 16 " "\"" lec "\" _yes") fi) (write-line (strcat "_.qsave") fi) ) ) (write-line (strcat "sdi " (itoa sd)) fi) (write-line (strcat "(vl-file-delete \"" (vl-string-translate "\\" "/" sc) "\")") fi) (close fi) (vlax-release-object cdl) (vl-cmdf "_.script" sc) ) (msgbox "Activelot" 48 "Vous n'avez pas sélectionné une branche de répertoires à traiter.\nAbandon.") ) (vlax-release-object cdl) ) (msgbox "Activelot" 48 "Vous n'avez pas sélectionné de Lisp/Script.\nAbandon.") ) (msgbox "Activelot" 48 "Impossible de mettre la variable SDI à 1.\nVeuillez fermer vos dessins.\nAbandon.") ) ) (msgbox "Activelot" 48 "Veuillez sauvegarder votre dessin.") ) (princ) ) (setq nom_lisp "Activelot") (if (/= app nil) (if (= (strcase (substr app (1+ (- (strlen app) (strlen nom_lisp))) (strlen nom_lisp))) nom_lisp) (princ (strcat "..." nom_lisp " chargé.")) (princ (strcat "\n" nom_lisp ".LSP Chargé.....Tapez " nom_lisp " pour l'éxecuter."))) (princ (strcat "\n" nom_lisp ".LSP Chargé......Tapez " nom_lisp " pour l'éxecuter."))) (setq nom_lisp nil) (princ) D'habitude ça marche bien mais là la routine s'arrête dès qu'un bloc est modifiée et je commprends absoluement pas pourquoi :blink: Quelqu'un peut-il m'eclairer? Merci
  11. Un grand merci, puisque j'ai réussi à faire ce que voulais en comprenant presque tout. Je tente maintenant de le faire pour plusieurs nom de bloc... :blink: Merci
  12. Bonjour, Voilà, je cherche à faire un lisp qui à la suite d'une insertion d'un bloc, récupère les coordonnées du point d'insertion (jusque là ça va... enfin je crois)puis additionne ces coordonnées (ça devrai aller aussi...) et enfin met le résultat dans un des attributs du bloc(là je sèche..) Même en regardant ça: (defun c:maj(/ att bl js n val) (if (setq js (ssget "x" (list (cons 0 "insert") (cons 2 "Cart_A3_Hyd") (cons 66 1)))) (progn (setq n 0) (while (setq bl (ssname js n)) (setq att (entget (entnext bl))) (while (/= (cdr (assoc 0 att)) "SEQEND") (if (= (cdr (assoc 2 att)) "DATE_DE_L'OFFRE") (progn (setq att (subst (cons 1 "Nouvelle Date") (assoc 1 att) att)) (entmod att) (setq att (list (cons 0 "SEQEND"))) ) (setq att (entget (entnext (cdr (assoc -1 att))))) ) ) (setq n (1+ n)) ) ) (alert "le Bloc Cart_A3_Hyd n'est pas unique dans le dessin\n Abandon") ) ) Je nage... Je comprends à peu prêt la sélection mais pas la boucle, je suis même pas sur que se soit la bonne direction. Si vous avez des petites pistes à me donner.... Merci
  13. Bonjour, lorsque j'imprime des schémas en PLT les logos des cartouches disparaissent. Quelqu'un a t il une solution? Merci
  14. Super c'est ça! Merci beaucoup!
  15. Bonjour, je bloque sur 2012 je n'ai que les objets qui apparaissent dans mes publications et je ne me souvient plus comment faire apparaitre les présentations par défaut. (c'est une case à cocher dans 2009 mais je sais plus comment faire pour 2012) :angry: Merci
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité