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. J'ai amélioré et simplifié la routine. Vérif si le filtre existe et si oui, lui ré-écrire les valeurs. Valeur retournée par la fonction --> Objet vla du filtre. (pour l'effacer par exemple) (defun creer_filtre(nom filtre / dict ndic xdic) (setq xdic (vla-getextensiondictionary (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))))) (and (vl-catch-all-error-p (setq dict (vl-catch-all-apply 'vla-item (list xdic "ACAD_LAYERFILTERS")))) (setq dict (vla-addobject xdic "ACAD_LAYERFILTERS" "AcDbDictionary")) ) (and (vl-catch-all-error-p (setq ndic (vl-catch-all-apply 'vla-item (list dict nom)))) (setq ndic (vla-addxrecord dict nom)) ) (vlax-invoke ndic 'setxrecorddata '(1 1 1 1 70 1 1) (list nom filtre "*" "*" 0 "*" "*") ) ndic ) @+
  2. Patrick_35

    imprimer A0+

    Salut Sur le menu du traceur, tu ne peux pas configurer la rotation auto du papier voir de l'imbrication si nécessaire ? @+
  3. Salut Ahhhhhh. J'ai réussi en vlisp à créer le filter. La routine (defun creer_filtre(nom filtre / dict xdic) (setq xdic (vla-getextensiondictionary (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))))) (and (vl-catch-all-error-p (setq dict (vl-catch-all-apply 'vla-item (list xdic "ACAD_LAYERFILTERS")))) (setq dict (vla-addobject xdic "ACAD_LAYERFILTERS" "AcDbDictionary")) ) (vla-setxrecorddata (vla-addxrecord dict nom) (vlax-safearray-fill (vlax-make-safearray vlax-vbinteger '(0 . 6)) '(1 1 1 1 70 1 1)) (vlax-safearray-fill (vlax-make-safearray vlax-vbvariant '(0 . 6)) (mapcar 'vlax-make-variant (list nom filtre "*" "*" 0 "*" "*"))) ) (princ) ) Pour créer le filtre (creer_filtre "DenisH" "DET_ECL_*") J"ai aussi testé la routine de capde06 qui fonctionne (MlayerF "DenisH" "DET_ECL_*") @+
  4. Une chose, cela ne va pas fonctionner comme cela. Il faudrait plus une liste du style (list '(0 . "xrecord") (cons 1 Nom) (cons 1 Filtre) '(1 . "*") ) @+
  5. Pour comprendre comment Autocad gère les filtres, et bien tu fais au plus simple. Tu créés ton filtre via autocad et tu regardes les codes dxf. J'avais essayé en vlisp, mais impossible de voir le filtre créé bien que les données soit présentes. Je pense que c'est l'écriture des xdatas qui doivent poser problème. Donc le -3 correspond aux xdatas et tu trouveras la réponse des "*" dans le lisp de capde06 J'avais aussi fait une recherche sur le net et trouvé ces valeurs. @+
  6. Salut (defun c:test(/ dict xdic) (setq xdic (vlax-vla-object->ename (vla-getextensiondictionary (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))))) (if (setq dict (dictsearch xdic "ACAD_LAYERFILTERS")) (setq dict (cdr (assoc -1 dict))) (setq dict (dictadd xdic "ACAD_LAYERFILTERS" (entmakex '((0 . "dictionary") (100 . "AcDbDictionary") (280 . 0) (281 . 1) ) ) ) ) ) (dictadd dict "DenisH" (entmakex '((0 . "xrecord") (100 . "AcDbXrecord") (280 . 1) (1 . "DenisH") (1 . "DET_ECL_*") (1 . "*") (1 . "*") (70 . 0) (1 . "*") (1 . "*") (-3 ( "ACAD" (1000 . "( NAME== \"DET_ECL_*\" )"))) ) ) ) (princ) ) @+
  7. Salut 1) Tous mes voeux aussi et une bonne à nez et bonne sans thè. 2) Comme la valeur du handle change pour les attributs, j'ai modifié le lisp afin qu'il prenne l'ordre des attributs (ordre de création en réalité) et non plus son identifiant (handle ou maintien) @+
  8. Salut Le lisp modifié. @+ Syn.lsp
  9. Oui Avec la commande liste d'Autocad (c'est pour cela que je parle de maintien, pas d'handle pour éviter la confusion même si c'est la même chose) Je pense que c'est a cause des étiquettes qui ont le même nom. A vérifier Oh, de rien @+
  10. Salut lili Il se passe que les attributs après l'utilisation de battman, attsync ou syn sont créés et non mis à jour. Comme si on insérait un bloc au même endroit avec les mêmes propriétés. Pour vérifier, il suffit de noter le numéro de maintien de l'attribut, un petit coup de battman et de regarder à nouveau ce numéro et on constate qu'ils sont différents. Le plus difficile est de faire la correspondance entre les attributs dans le dessin et le bloc définit dans la table des blocs. J'ai une petite idée derrière la tête mais il faut que je vérifie auparavant. @+
  11. Salut Et avec SYN ? @+ Syn.lsp
  12. Bonjour Une bonne et heureuse année à tous et surtout une bonne santé. @+
  13. Salut Quand tu modifies une variable, il est bien de la restaurer dans son état initial Sauvegarder la variable (setq old_attreq (getvar "attreq")) Mon lisp, script.... Et la restaurer (setvar "attreq" old_attreq) @+
  14. Salut (and (ssget "x" (list (cons 0 "HATCH") (cons 76 2))) (progn (vlax-for ele (setq sel (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object)))) (vlax-invoke ele 'setpattern acHatchPatternTypeUserDefined (vla-get-patternname ele)) ) (vla-delete sel) ) ) @+
  15. Et avec un regen ? Avec un entupd ? Sinon, ça fonctionne bien en vlisp. @+
  16. Patrick_35

    Fênetre en Monochrome

    Salut Tu as ce sujet. @+ ps : tu changes de crémerie ?
  17. Salut Tu fais quoi exactement avec les blocs du BET ? @+
  18. De rien. J'ai continué mes recherches et si tu es allergique au vlisp, c'est le code dxf 76 qui est incriminé. @+
  19. Salut Dans le fichier n°2, tes hachures sont du type personnalisées. Dans le fichier n°3, tes hachures sont du type prédéfinies. Pour corriger Sélection d'une hachure (setq hatch (vlax-ename->vla-object (car (entsel)))) Et pour obtenir le résultat souhaité (vlax-invoke hatch 'setpattern acHatchPatternTypeUserDefined (vla-get-patternname hatch)) @+
  20. Salut Tu as deux exemples pour comparer ? Un avec les bonnes hachures et l'autre non. @+
  21. Salut Pour accéder au dictionnaire (setq dic (vla-item (vla-getextensiondictionary (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))) "ACAD_LAYERFILTERS")) Pour récuperer les données du 1er filtre (vla-getxdata (vla-item dic 0) "ACAD" 'dxf 'data) Et trouver les codes dxf (mapcar 'cons (vlax-safearray->list dxf) (mapcar 'vlax-variant-value (vlax-safearray->list data)) ) ps : Avec ceci, tu pourras aussi bien travailler en vlisp qu'en vba @+
  22. Merci J'ai juste mis en forme une boite de dialogue pour choisir les calques, mais le lisp fonctionne exactement sur le principe que j'ai décrit plus haut. ps : les données (calques à geler) sont écrites dans le dessin. Comme cela, pas besoin de redéfinir à chaque fois son besoin. pps : comme le lisp est basé sur les réacteurs, il faut qu'il soit chargé automatiquement pour chaque dessin. @+
  23. Bonjour Bon, je pense que c'est compliqué pour certains, alors j'ai fais un truc simplifié. @+ Epo.lsp
  24. Patrick_35

    compter les blocs

    Salut Allez, un de plus avec lstatt Qui permet de distinguer les blocs avec ou sans attributs. Comme ça, tu as le choix ;) @+
  25. Aucune question n'est idiote. Je me suis surement mal exprimé. vlax-ldata-put est la fonction que écrit les données dans le dessin. "Ma_liste_de_Calque_Perso" est le dictionnaire. "Patrick_35"' est une clé du dictionnaire. '("Calque*" "Un_autre" "*Comprenant*") est la liste de calques. On peut aussi bien faire : vlax-ldata-put "ma_societe_dans_laquelle_je_travail" "pierricq" '("Calque1" "Calque2" "Calque3" "Calque4") Ce qui donne comme instruction lisp pour sauvegarder la liste de calques (vlax-ldata-put "ma_societe_dans_laquelle_je_travail" "pierricq" '("Calque1" "Calque2" "Calque3" "Calque4")) et du coup, il faut remplacer (or reacteur_patrick_35_variable (setq reacteur_patrick_35_variable (vlr-sysvar-reactor (vlax-ldata-get "Ma_liste_de_Calque_Perso" "Patrick_35") (list (cons :vlr-sysvarchanged (function patrick:modification_variable)))))) par (or reacteur_patrick_35_variable (setq reacteur_patrick_35_variable (vlr-sysvar-reactor (vlax-ldata-get "ma_societe_dans_laquelle_je_travail" "pierricq") (list (cons :vlr-sysvarchanged (function patrick:modification_variable)))))) pour tout faire correspondre. @+
×
×
  • 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é