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. Patrick_35

    Raccord sans joindre

    Salut (defun c:ra(/ code1 code2 ent1 ent2 pt1 pt2 pti) (defun err (msg) (if (/= msg "Fonction annulée") (princ (strcat "\nErreur : " msg)) (princ msg) ) (if ent1 (redraw (cdr (assoc -1 ent1)) 4) ) (setq *error* olderr) (vla-endundomark (vla-get-activedocument (vlax-get-acad-object))) (princ) ) (defun selection(ent pts / code lst pt) (cond ((eq (cdr (assoc 0 ent)) "LINE") (if (< (distance pts (cdr (assoc 10 ent))) (distance pts (cdr (assoc 11 ent)))) (setq code 10) (setq code 11) ) ) ((eq (cdr (assoc 0 ent)) "LWPOLYLINE") (setq lst (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) ent))) (if (< (distance pts (last lst)) (distance pts (car lst))) (setq code (list (last lst) (cadr (reverse lst)))) (setq code (list (car lst) (cadr lst))) ) ) ) code ) (vl-load-com) (vla-startundomark (vla-get-activedocument (vlax-get-acad-object))) (setq olderr *error* *error* err) (if (setq ent1 (car (entsel "\nSélectionner la première ligne/polyligne : "))) (progn (setq ent1 (entget ent1)) (if (setq code1 (selection ent1 (cadr (grread T)))) (progn (redraw (cdr (assoc -1 ent1)) 3) (if (setq ent2 (car (entsel "\nSélectionner la seconde ligne/polyligne : "))) (progn (setq ent2 (entget ent2)) (if (setq code2 (selection ent2 (cadr (grread T)))) (progn (redraw (cdr (assoc -1 ent1)) 4) (if (eq (type code1) 'INT) (setq pt1 (list (cdr (assoc 10 ent1)) (cdr (assoc 11 ent1)))) (setq pt1 code1) ) (if (eq (type code2) 'INT) (setq pt2 (list (cdr (assoc 10 ent2)) (cdr (assoc 11 ent2)))) (setq pt2 code2) ) (setq pti (trans (inters (car pt1) (cadr pt1) (car pt2) (cadr pt2) nil) 0 1)) (if (eq (type code1) 'INT) (setq ent1 (subst (cons code1 pti) (assoc code1 ent1) ent1)) (setq ent1 (subst (cons 10 pti) (cons 10 (car code1)) ent1)) ) (entmod ent1) (if (eq (type code2) 'INT) (setq ent2 (subst (cons code2 pti) (assoc code2 ent2) ent2)) (setq ent2 (subst (cons 10 pti) (cons 10 (car code2)) ent2)) ) (entmod ent2) ) ) ) (redraw (cdr (assoc -1 ent1)) 4) ) ) ) ) ) (setq *error* olderr) (vla-endundomark (vla-get-activedocument (vlax-get-acad-object))) (princ) ) @+
  2. Tu as raison sur le principe, mais je ne pense pas que Bred (excuse-moi Bred) saisisse toutes les subtilités Il faut déjà comprendre qu'un (vla-item (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object))) Bloc_R) retourne en vla le bloc de la table du document actif (donc le dessin courant) s'il existe Ensuite comprendre le vl-catch-all-apply ainsi que sa syntaxe Pour ce qui est du vl-catch-all-error-p, je pense que c'est plus facile ;) @+
  3. Oui, mais je suis partisant du plus clair et du plus court possible :) @+
  4. Salut Un peu plus simple avec un (tblsearch "block" bloc_R) @+
  5. Patrick_35

    Script de production de PDF

    J'ai remarqué que tu avais oublié le (vlax-release-object obj) avant le (gc) Et encore une chose, tu peux peut être diminuer les boucles, cela dépend du dessin et de la puissance du pc. Mais je suis content que tu arrives à dégager un script, ce qui n'est pas evident pour ce type d'exercice @+
  6. Patrick_35

    XYZ

    Pas forcement une insertion, un copier, déplacer, les grips, le scu permettent la mise à jour. Et ce "petit miracle" vient bien des réacteurs Pour l'export de points, je sais que Bonus à faity quelque chose là dessus. fait une recherche @+
  7. Patrick_35

    Copie multiple

    En clair, quand à chaque fois je regarde un comparatif entre Autolisp et Visual Lisp, Le visual lisp est en moyenne cinq fois plus rapide Donc, il ne reste plus qu'a s'y mettre a fond :) @+
  8. Patrick_35

    creation d\'attribut

    (getstring "\nNom du bloc à inserer : ")) --> Doit correspondre avec Nom_bloc Et c'est la même chose en ce qui concerne les étiquettes @+
  9. Patrick_35

    Super ce Hair and Fur...

    Tu veux me changer de couleur ? @+
  10. Salut Grace au lisp dans ce post @+
  11. Patrick_35

    Script de production de PDF

    Oui, mais pour le paramètrage, je ne saurais pas le faire, ne disposant pas du logiciel Aucun, je récupère le nom du dessin ainsi que le nom de la présentation pour constituer le nom du pdf ex : mon_dessin - Présentation 1.pdf A toi de donner les bonnes infos pour la commande traceur. Ce que je donne fonctionne sur mon poste Pour trouver les arguments, tu fais sur la ligne de commande _-plot et tu recopies toutes ce que tu indiques au clavier dans le command plot Quelques précisions PDFCréator est un gratuiciel et si tu veux aller au plus simple, il suffit d'aller le chercher Les "Sendkeys" simulent les touches (vlax-invoke obj "SendKeys" (eval nom)) --> Ca corresponds à écrire le nom du pdf dans le premier champ de PDFCréator qui correspond au titre (vlax-invoke obj "SendKeys" "%S") --> Alt+S pour Sauvegarde (vlax-invoke obj "SendKeys" "%E") --> Alt+E pour Enregistrer (repeat 100000) --> Une boucle d'attente, le temps qu'Autocad travail avant de reprendre la main (setq nom (strcat (vl-filename-base (getvar "dwgname")) " - " (getvar "ctab"))) --> Définir le nom du pdf, tu remarqueras la variable dwgname et ctab (setq Obj (vlax-create-object "WScript.Shell")) --> créer une liaison avec le logiciel actif afin de simuler les touches du clavier (vlax-release-object obj) --> effacer la liaison (gc) --> nettoyer la mémoire @+
  12. Patrick_35

    Script de production de PDF

    Salut Teste le script/lisp ci-après avec PDFCreator @+ ;Ouvrir un Dessin (setq Obj (vlax-create-object "WScript.Shell")) ;Choisir sa Présentation (command "_.plot" "o" "" "PDFCreator" "A4" "m" "P" "n" "e" "p" "c" "n" "." "n" "" "n" "n" "o") (setq nom (strcat (vl-filename-base (getvar "dwgname")) " - " (getvar "ctab"))) (repeat 10000000) (vlax-invoke obj "SendKeys" (eval nom)) (vlax-invoke obj "SendKeys" "%S") (repeat 100000) (vlax-invoke obj "SendKeys" "%E") ;Choisir une autre Présentration (command "_.plot" "o" "" "PDFCreator" "A4" "m" "P" "n" "e" "p" "c" "n" "." "n" "" "n" "n" "o") (setq nom (strcat (vl-filename-base (getvar "dwgname")) " - " (getvar "ctab"))) (repeat 10000000) (vlax-invoke obj "SendKeys" (eval nom)) (vlax-invoke obj "SendKeys" "%S") (repeat 100000) (vlax-invoke obj "SendKeys" "%E") ;Si terminé pour les présentations (vlax-release-object obj) (gc) ;Fermer le Dessin
  13. Patrick_35

    Copie multiple

    Ou en une commande, la copie d'une sélection @+
  14. Patrick_35

    Copie multiple

    pour (gile) Ah oui, bien, j'avais plus pensé à la méthode vla-copyobjects qu'un vla-copy, mais ça revient au même @+
  15. Patrick_35

    Copie multiple

    Salut Un petit défi pour (gile) ;) La même chose pour la copie en vlisp (pas pour la sélection, on ne va quand même pas pousser le bouchon trop loin), et si tu peux éviter de rechercher sur ce forum car j'ai déjà donné la réponse @+
  16. Salut Ou mieux encore, plutôt que de faire un (load"...") qui charge en pernanence le lisp, tu peux utiliser la fonction autoload ex : (autoload "c:/../../../mon_lisp.lsp" '("mon_lisp")) Ce qui permet de charger le lisp que si tu en as besoin @+
  17. Patrick_35

    Bug Word...

    Salut Ca me rappelle ce sujet @+ [Edité le 19/7/2006 par Patrick_35]
  18. Caneco :o . C'est le dernier qui me vient à l'esprit. Pour un BET, c'est certes très bien, mais en réalisation, il n'est pas terrible. Pas de possibilités de faire des schémas multifilaires, pas de repères de fils, bornes, appareillages. Pas de génération de borniers et j'en passe. pour faire du schéma, il faut savoir si c'est pour du tertiaire ou pour de l'indus Pour de l'indus, je pencherais plus sur SEE Electrical et pour le tertiaire, sur Auto'Fil, mais il doit en exister bien d'autres J'ai cru entendre dire que maintenant SEE Electrical était capable de générer de l'unifilaire, si on pouvait me le confirmer. @+ [Edité le 19/7/2006 par Patrick_35]
  19. Patrick_35

    point de base?

    Salut pour faire au plus simple, tu lances la commande _editref et tu choisis ton bloc. Maintenant, tu déplaces tes objets du point d'insertion actuel vers le nouveau point d'insertion et tu sauvegardes @+
  20. Patrick_35

    Remplacer blocs/entmake

    Salut Un exemple que j'avais trouvé je ne sais plus où @+ (defun selectionvl ( / ssets acadDocument newsset ctr item) ;load the visual lisp extensions (vl-load-com) ;retrieve a reference to the documents object ;(setq acadDocument (vla-get-activedocument ; (vlax-get-acad-object))) ;retrieve a reference to the selection sets object (setq ssets (vla-get-selectionsets acadDocument)) ;add a new selection set (setq newsset (vla-add ssets "SS1")) ;select your new selection set objects (vla-selectOnScreen newsset) ;set the counter to zero (setq ctr 0) ;count the number of objects and loop (repeat (vla-get-count newsset) ;retrieve each object (setq item (vla-item newsset ctr)) ;check if the entity has a color property ;and it can be updated (setq check (vlax-property-available-p item "Color" T)) ;if it can (if check ;change it's color (vlax-put-property item 'Color 5) );if (setq ctr (1+ ctr)) );repeat ;Selecting with Filters ;Now things get a wee bit tricky. I suggest you read my Tutorial on "Arrays" before you carry on with this section, as a good understanding of them will help you a lot. ;First of all, let's have a look at the VBA syntax for Selecting with Filters : ;object.SelectOnScreen [FilterType][, FilterData] ;Object : SelectionSet ;The object or objects this method applies to. ;FilterType : Integer; input-only; optional ;A DXF group code specifying the type of filter to use. ;FilterData : Variant; input-only; optional ;The value to filter on. ;ActiveX requires a Filter Type to be an Array of Integers, and the Filter Data to be an Array of Variants. To Filter for all Objects on Layer "7" we would write it like this in Visual Lisp: ; ;create a single element array for the DXF Code (setq filter_code (vlax-make-safearray vlax-vbinteger '(0 . 0))) ;create a single element array for the value (setq filter_value (vlax-make-safearray vlax-vbvariant '(0 . 0))) ;DXF Code for layers (vlax-safearray-fill filter_code '(8)) ;the filter value (vlax-safearray-fill filter_value '("7")) ;Use Select on Screen to select objects on Layer 7 (vla-selectOnScreen newsset filter_code filter_value) ;In AutoLisp you would write this : (setq newsset (ssget '((8 . "7")))) ;To select ALL the Circles on Layer "2", We would write this : ;create a 2 element array for the DXF Code (setq filter_code (vlax-make-safearray vlax-vbinteger '(0 . 1))) ;create a 2 element array for the values (setq filter_value (vlax-make-safearray vlax-vbvariant '(0 . 1))) ;DXF Code for Objects and Layer (vlax-safearray-fill filter_code '(0 8)) ;the filter values (vlax-safearray-fill filter_value '("CIRCLE" "2")) ;select ALL Circles on Layer 2 (vla-select newsset acSelectionSetAll nil nil filter_code filter_value) ;This is the equivalent in AutoLisp : (setq newsset (ssget "x" '((0 . "CIRCLE") (8 . "2")))) ;To select ALL Circles OR Text, we would write this : ;create a 4 element array for the DXF codes (setq filter_code (vlax-make-safearray vlax-vbinteger '(0 . 3))) ;create a 4 element array for the names (setq filter_value (vlax-make-safearray vlax-vbvariant '(0 . 3))) ;DXF Codes for OR and Objects (vlax-safearray-fill filter_code '(-4 0 0 -4)) ;the filter values (vlax-safearray-fill filter_value '("")) ;select ALL Circles OR Text (vla-select newsset acSelectionSetAll nil nil filter_code filter_value) ;In AutoLisp, this is equivalent to : (setq newsset (ssget "x" '((-4 . "")))) (setq thisDoc (vla-get-ActiveDocument (vlax-get-acad-object))) (if sampset (vla-clear sampset) ; start from scratch (progn (setq selsets (vla-get-SelectionSets thisDoc)) ; each document sustains a selection set with variable sampset (setq sampset (vla-add selsets "mdi-vlx")) ) ) (vla-SelectOnScreen sampset) ;increment the counter (setq ctr (1+ ctr)) );repeat ;delete the selection set (vla-delete (vla-item ssets "SS1")) (princ) );defun (princ)
  21. Salut Je vais regarder ce que je peux faire, mais pas tout de suite @+
  22. Patrick_35

    Scripting.FilesystemObject

    Ce qui est intérressant, c'est que tu peux simuler les touches, donc lancer une appli et lui faire ce que tu veux Pour plus d'info, regarde dans l'aide avec sendkeys @+
  23. Patrick_35

    point de base?

    Salut Regarde ce post @+
  24. Patrick_35

    Remplacer blocs/entmake

    Je rejoins la réponse de (gile), un entmake est pour créer une entité, pas pour importer @+
  25. Pour faire au plus simple, un (vla-put-name obj Bloc_R) (si Bloc_R existe) @+
×
×
  • 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é