Aller au contenu

Patrick_35

Membres
  • Compteur de contenus

    6 374
  • Inscription

  • Dernière visite

  • Jours gagnés

    30

Tout ce qui a été posté par Patrick_35

  1. Salut La fonction And (tant que ...) permet de tester si toutes les conditions sont remplies afin de lancer la commande. La lecture du lisp Si tu fais une sélection (non nil) Je récupère les codes dxf dans un setq, la valeur est forcement non nil Si c'est un texte (valeur vraie) Je définies des variables, les valeurs sont forcement non nil Alors je fais ma commande En résumé (and (non nil) (non nil) T (non nil) (non nil) (non nil) Ma_commande) @+
  2. Patrick_35

    FIltre de groupes

    Salut Peut-être avec GEF ? Tu as la possibilité de sauvegarder l'état des calques d'une fenêtre pour ensuite l'appliquer sur d'autres. @+
  3. Salut 1) Un xref est un bloc dans le dessin. Il faut donc le lier auparavant. 2) Tu peux avoir des blocs indécomposable. Utilises la routine in-deco.lsp 3) Attention aux calques verrouillés / gelées. 4) Utiliser la boucle que je t'ai donné utilisant burst des express 5) S'il reste des blocs. a ) Essayer de les décomposer manuellement b ) Si c'est toujours des blocs, essayer de comprendre pourquoi ils ne se décomposent pas et adapter le lisp en conséquence. @+
  4. Et le while dans le lisp sert a faire bonne figure ? @+
  5. Tu as une boucle pour décomposer les blocs. Le problème se pose sur des blocs qui ne peuvent pas être décomposé, donc une condition de sortie en testant si le nombre de blocs sélectionnés correspondent au nombre de blocs sélectionnés lors de la précédente sélection (sinon, tu as une boucle infinie). Tu peux y ajouter de déverrouillage des calques, in-deco proposé par sbosarl, lier lex xrefs, etc... (avant la décomposition globale) @+
  6. Salut Un truc vite fait utilisant le lisp burst des express tools (defun c:expa(/ js ok to1 to2) (setq ok T) (while (and (setq js (ssget "x" (list (cons 0 "insert")))) ok) (setq to1 (sslength js)) (vla-sendcommand (vla-get-activedocument (vlax-get-acad-object)) "burst _all \n") (if (= to1 to2) (setq ok nil) (setq to2 to1) ) ) ) @+
  7. Salut Pas besoin de lisp pour cela. Tu peux recopier les présentations entre-elles et utiliser les champs avec le nom de la présentation pour numéroter la page @+
  8. Salut Pour cela, tu as LSTATT @+
  9. Salut Tu n'as pas d'étiquette dans le bloc qui se nomme "PROF_AMO" ou "PROF_AM" Pour éviter l'erreur, tu peux faire (vl-catch-all-apply 'setpropertyvalue (list ent_bloc "PROF_AMO" Prof)) ps : Soigne-toi bien @+
  10. Salut Didier D'après ce que j'ai pu lire, Zwcad me semble la meilleur alternative car tu as aussi le lisp et le visual lisp. Je sais qu'il y a quand même quelques modifs à apporter aux lisps, mais pas grand chose. Tu as un sujet à ce propos. Un exemple d'un de mes lisps adapté par Zwfrance. Maintenant, tu as aussi dwgtrueview (je pense que tu connais) si c'est uniquement pour visualiser, imprimer et faire deux ou trois petites choses. @+
  11. Patrick_35

    Zoom et dézoom

    Idem pour moi. Comme ça, on est certain de ne pas rater la parole de Dieu :(rires forts): @+
  12. Un lisp qui modifie la valeur d'un attribut en fonction du nom de bloc et de l'étiquette de l'attribut. @+
  13. Salut J'avais donné un exemple pour récupérer les valeurs des attributs. Tu peux donc en déduire l'inverse. @+
  14. Dans ton dessin test, tu as un bloc vide. Un petit coup de jav puis de m00. @+
  15. Si le coin en bas à gauche est à 0,0,0 alors oui, le dessin n'est pas déplacé car il est déjà aux bonnes coordonnées. Maintenant, si le coin bas gauche est par exemple à 100,100,0 alors le dessin sera déplacé et le coin bas gauche mis aux coordonnées 0,0,0. Tu peux tester sur un dessin vierge avec des lignes dessinées à la volé et voir le résultat. @+
  16. Salut J'ai du mal à comprendre la question. Le lisp déplace l'ensemble du dessin en recherchant le point le plus bas pour ensuite aller au point 0,0 (selon ta demande) Ensuite, tu places le texte à l'endroit qui convient. Ta réponse me fait penser que tu as plusieurs folios sur le même dessin et dans ce cas, ma routine ne correspond pas à la demande et c'est la routine de Didier la plus appropriée. ps : Pour choisir le calque, tu ajoutes (cons 8 "Mon_Calque") @+
  17. Pour un texte d'une hauteur de 10 par exemple (cons 40 10) @+
  18. Salut Une première approche (defun c:m00(/ bas bd doc ele hg lst sel) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (and (ssget "x") (progn (vlax-for ele (setq sel (vla-get-activeselectionset doc)) (or (vl-catch-all-error-p (vl-catch-all-apply 'vla-getboundingbox (list ele 'bd 'hg))) (setq lst (cons (vlax-safearray->list bd) lst)) ) ) (setq bas (apply 'mapcar (cons 'min lst))) (vlax-for ele sel (vla-move ele (vlax-3d-point bas) (vlax-3d-point '(0.0 0.0 0.0))) ) (vla-delete sel) (entmake (list (cons 0 "TEXT") (cons 1 "3") (cons 10 '(0.0 0.0 0.0)) (cons 40 (getvar "textsize")) ) ) ) ) (vla-endundomark doc) (princ) ) A toi de bien positionner le texte @+
  19. Salut Avec Rbloc Il faut que le DCL soit dans les chemins de recherches d'Autocad @+
  20. Salut à tous Mon crabe aux pinces d'or, j'ai beau lire ton CDC et je ne comprends pas. L'age ou la fin de semaine ? Si tu pouvais nous illustrer ta demande par un dessin / schéma / grafcet. Sur ce, je vais finir mon muscadet. @+
  21. Bonjour Pour ceux que cela pourrait intéresser, j'ai trouvé sur Theswamp un utilitaire qui convertit une image en langage lisp pour enfin afficher une image correcte à la place d'un slide. C'est Pixel Extractor @+
  22. Salut Avec les éléments que j'avais donné (defun c:selblkbyattval ( / att atx ent idx sel str ) (if (/= "" (setq str (strcase (getstring t "\nEntrez la valeur de l'attribut: ")))) (if (and (setq sel (ssget "_X" (list '(0 . "INSERT") '(66 . 1) (if (= 1 (getvar 'cvport)) (cons 410 (getvar 'ctab)) '(410 . "Model") ) ) ) ) (progn (repeat (setq idx (sslength sel)) (setq ent (ssname sel (setq idx (1- idx))) att (entnext ent) atx (entget att) ) (while (and (= "ATTRIB" (cdr (assoc 0 atx))) (not (wcmatch (strcase (cdr (assoc 1 atx))) str)) ) (setq att (entnext att) atx (entget att) ) ) (if (= "SEQEND" (cdr (assoc 0 atx))) (ssdel ent sel) ) ) (< 0 (sslength sel)) ) ) ;;; Modification by Patrick_35 (progn (zoomobject (mapcar '(lambda(x)(vlax-ename->vla-object (cadr x))) (ssnamex sel))) (sssetfirst nil sel) ) ;;; Fin de la modification by Patrick_35 (princ (strcat "\nAucun bloc trouvé avec la valeur d'attribut \"" str "\".")) ) ) (princ) ) ;; ZoomObject Effectue un zoom sur les objets contenus dans la liste ;; ;; Argument ;; objlst : une liste de vla-object ;; ;; Variables ;; dir : normale du plan de la vue courante ;; ang : angle de la vue courante ;; 3x3 : matrice de transformation du SCG vers la vue courante (dimension 3) ;; 4x4 : matrice de transformation du SCG vers la vue courante (dimension 4) ;; ptlst : liste des points minimum et maximum des bounding-boxes des objets sélectionnés (SCG) (defun ZoomObject (objlst / dir ang 3x3 4x4 ptlst) (vl-load-com) (setq dir (mapcar '- (trans (getvar "viewdir") 1 0) (trans '(0 0 0) 1 0) ) ang (- (getvar "viewtwist")) 3x3 (mxm (mapcar '(lambda (x) (trans x 0 dir)) '((1 0 0) (0 1 0) (0 0 1)) ) (list (list (cos ang) (- (sin ang)) 0) (list (sin ang) (cos ang) 0) '(0 0 1) ) ) 4x4 (append (mapcar '(lambda (v o) (append v (list o)) ) 3x3 '(0 0 0) ) (list '(0 0 0 1)) ) ) (foreach obj objlst (vla-TransformBy obj (vlax-tmatrix (trp 4x4))) (vla-getBoundingBox obj 'minpt 'maxpt) (vla-TransformBy obj (vlax-tmatrix 4x4)) (setq ptlst (cons (vlax-safearray->list minpt) (cons (vlax-safearray->list maxpt) ptlst) ) ) ) (vla-ZoomWindow (vlax-get-acad-object) (vlax-3d-point (mxv 3x3 (apply 'mapcar (cons 'min ptlst)))) (vlax-3d-point (mxv 3x3 (apply 'mapcar (cons 'max ptlst)))) ) ) ;; transpose une matrice Doug Wilson (defun trp (m) (apply 'mapcar (cons 'list m)) ) ;; Apply a transformation matrix to a vector by Vladimir Nesterovsky (defun mxv (m v) (mapcar '(lambda (r) (apply '+ (mapcar '* r v))) m) ) ;; Multiply two matrices by Vladimir Nesterovsky (defun mxm (m q) (mapcar '(lambda (r) (mxv (trp q) r)) m) ) @+
  23. Salut (gile) à fait une routine pour ça. ps : pour une sélection par valeur d'attributs, tu as aussi ces routines et en français. @+
  24. Bonjour à tous Je ne me souvenais plus de celui-ci. Comme tu as raison (gile). Combien de fois je vois un lisp ou même un extrait de lisp et on reconnait tout de suite son auteur. @+
  25. Patrick_35

    LSP LATT

    Hello à tous Didier, ne t'inquiète pas, on se partagera un bon plat de fruits de mer avec un petit muscadet en pensant à notre crabinou préféré. Pour Theswamp, j'y traine parfois mes guêtres mais la difficulté est la langue, même avec un traducteur. J'ai un peu lâché le site par manque de temps. C'est vrai qu'en ce moment, impossible de se connecter car s'il y a bien un site à fréquenter, c'est bien celui-ci. On y trouve des perles. Je pense que les meilleurs lispeurs de la planète fréquentent ce site. Amicalement.
×
×
  • 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é