-
Compteur de contenus
6 374 -
Inscription
-
Dernière visite
-
Jours gagnés
30
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Patrick_35
-
Propriété des filtres de calques
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
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 ) @+ -
Salut Sur le menu du traceur, tu ne peux pas configurer la rotation auto du papier voir de l'imbrication si nécessaire ? @+
-
Propriété des filtres de calques
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
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_*") @+ -
Propriété des filtres de calques
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
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 . "*") ) @+ -
Propriété des filtres de calques
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
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. @+ -
Propriété des filtres de calques
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
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) ) @+ -
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) @+
-
Salut Le lisp modifié. @+ Syn.lsp
-
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 @+
-
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. @+
-
Salut Et avec SYN ? @+ Syn.lsp
-
Bonne année 2016 et bonne santé !
Patrick_35 a répondu à un(e) sujet de Julian-Nihon dans Pause café
Bonjour Une bonne et heureuse année à tous et surtout une bonne santé. @+ -
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) @+
-
[Résolu] Lisp de modification export DWG
Patrick_35 a répondu à un(e) sujet de Giropode dans LISP et Visual LISP
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) ) ) @+ -
[Résolu] Lisp de modification export DWG
Patrick_35 a répondu à un(e) sujet de Giropode dans LISP et Visual LISP
Et avec un regen ? Avec un entupd ? Sinon, ça fonctionne bien en vlisp. @+ -
Salut Tu as ce sujet. @+ ps : tu changes de crémerie ?
-
Modifier un dwg à partir d'une base de données
Patrick_35 a répondu à un(e) sujet de zza427 dans AutoCAD 2012
Salut Tu fais quoi exactement avec les blocs du BET ? @+ -
[Résolu] Lisp de modification export DWG
Patrick_35 a répondu à un(e) sujet de Giropode dans LISP et Visual LISP
De rien. J'ai continué mes recherches et si tu es allergique au vlisp, c'est le code dxf 76 qui est incriminé. @+ -
[Résolu] Lisp de modification export DWG
Patrick_35 a répondu à un(e) sujet de Giropode dans LISP et Visual LISP
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)) @+ -
[Résolu] Lisp de modification export DWG
Patrick_35 a répondu à un(e) sujet de Giropode dans LISP et Visual LISP
Salut Tu as deux exemples pour comparer ? Un avec les bonnes hachures et l'autre non. @+ -
Propriété des filtres de calques
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
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 @+ -
Gestion affichage calque dans espace objet et présentation
Patrick_35 a répondu à un(e) sujet de pierricq dans AutoCAD 2015
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. @+ -
Gestion affichage calque dans espace objet et présentation
Patrick_35 a répondu à un(e) sujet de pierricq dans AutoCAD 2015
Bonjour Bon, je pense que c'est compliqué pour certains, alors j'ai fais un truc simplifié. @+ Epo.lsp -
Salut Allez, un de plus avec lstatt Qui permet de distinguer les blocs avec ou sans attributs. Comme ça, tu as le choix ;) @+
-
Gestion affichage calque dans espace objet et présentation
Patrick_35 a répondu à un(e) sujet de pierricq dans AutoCAD 2015
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. @+
