PHILPHIL Posté(e) le 14 mai 2008 Posté(e) le 14 mai 2008 hello gile tres bonne question ca scu ? ou scg ?? en ce qui me concerne je pencherai plutot pour le scu courant vue que c'est pour englober en generale des coupes, facades, ou plans mais comme ton lisp va surement etre utile a d'autreca serait abuser de te demander les deux ?? d'avoir le choix je suis en train de te dire une connerie si tu le fais par rapport au scu courant le scg est forcement compris dedans a moins que la variable "ucsfollow" et quelque incidence dans le "bbox" ??? merci phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
(gile) Posté(e) le 14 mai 2008 Auteur Posté(e) le 14 mai 2008 Pour bien préciser, la fonction vlisp vla-getBoundingBox retourne toujours les points par rapport au SCG, j'avais écrit bbox pour figurer une bounding box par rapport au SCU courant. Par exemple, en rouge la "bounding box" des deux ellipses par rapport au SCG, en vert par rapport au SCU courant. http://img91.imageshack.us/img91/8527/mbboxkw6.png Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
PHILPHIL Posté(e) le 14 mai 2008 Posté(e) le 14 mai 2008 hello gile le resultat en image tu viens de la faire a la "mano" ou par un lisp ?? par rapport au scu courant serat le mieux je penseca englobe plus de cas de figures comme ca merci FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
(gile) Posté(e) le 14 mai 2008 Auteur Posté(e) le 14 mai 2008 le resultat en image tu viens de la faire a la "mano" ou par un lisp ?? Par un LISP, ça va plus vite ;) Le LISP ci dessous, ne fonctionne qu'en 2d (contrairement à bbox) mais il est tard... ;; MBBOX (gile) ;; Dessine un rectangle figurant l'emprise des objets sélectionnés suivant le SCU courant. (defun c:mbbox (/ ss lst) (vl-load-com) (or *acad* (setq *acad* (vlax-get-acad-object))) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*))) (if (ssget) (progn (vlax-for o (setq ss (vla-get-ActiveSelectionSet *acdoc*)) (setq lst (append (ucs-bbox o) lst)) ) (vl-cmdf "_rectang" (apply 'mapcar (cons 'min lst)) (apply 'mapcar (cons 'max lst)) ) ) ) (princ) ) ;; Doug C. Broad, Jr. ;; can be used with vla-transformby to ;; transform objects from the UCS to the WCS (defun UCS2WCSMatrix () (append (mapcar (function (lambda (vector origin) (append (trans vector 1 0 T) (list origin)) ) ) (list '(1 0 0) '(0 1 0) '(0 0 1)) (trans '(0 0 0) 0 1) ) (list '(0 0 0 1)) ) ) ;; transform objects from the WCS to the UCS (defun WCS2UCSMatrix () (append (mapcar (function (lambda (vector origin) (append (trans vector 0 1 T) (list origin)) ) ) (list '(1 0 0) '(0 1 0) '(0 0 1)) (trans '(0 0 0) 1 0) ) (list '(0 0 0 1)) ) ) ;; UCS-BBOX (gile) ;; Retourne les coodrdonnées (SCU) de la 'bounding box' de l'objet par rapport au SCU courant ;; ;; Argument ;; obj : un objet graphique (ename ou vla-object) ;; ;; Retour ;; une liste des points inférieur gauche et supérieur droit dans le SCU courant (defun ucs-bbox (obj / space minpoint maxpoint) (vl-load-com) (and (= (type obj) 'ENAME) (setq obj (vlax-ename->vla-object obj)) ) (vla-TransformBy obj (vlax-tmatrix (UCS2WCSMatrix))) (vla-getboundingbox obj 'minpoint 'maxpoint) (vla-TransformBy obj (vlax-tmatrix (WCS2UCSMatrix))) (list (vlax-safearray->list minpoint) (vlax-safearray->list maxpoint) ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
PHILPHIL Posté(e) le 15 mai 2008 Posté(e) le 15 mai 2008 hello gile enorme tres grand merci en 2d ca me va tres bien comme ca j'ai un autre lisp sur le feudonc un autre sujet je suis en train d"ecrire un lisp pour rajouter/ soustraire des points dans une serie de cote est ce que tu sais si on peut forcer a choisir un point par rapport a une liste de point deja etabli iniget " listedepoint"getpoint ....enfin quelque chose comme ca phil [Edité le 15/5/2008 par PHILPHIL] FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
(gile) Posté(e) le 15 mai 2008 Auteur Posté(e) le 15 mai 2008 j'ai un autre lisp sur le feudonc un autre sujet Ouvre donc un autre sujet... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
PHILPHIL Posté(e) le 15 mai 2008 Posté(e) le 15 mai 2008 hello c'est aussi mon intention phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
FRAXA Posté(e) le 4 juin 2008 Posté(e) le 4 juin 2008 Bonjour (gile)!J'essaye d'utiliser le lisp Edit_bloc_rep (la version3.5) mais j'obtiens un message d'erreur: Erreur Automation Erreur de fichier L'erreur se produit après avoir traité une dizaine de fichiers.Les fichiers traités avant le bug sont correctement traités. Merci d'avance. HPZ400 Workstation Intel Xeon W3550 3.07 GHz 6 Go ram QUADRO FX 1800
FRAXA Posté(e) le 4 juin 2008 Posté(e) le 4 juin 2008 Bonjour (gile)!J'essaye d'utiliser le lisp Edit_bloc_rep (la version3.5) mais j'obtiens un message d'erreur: Erreur Automation Erreur de fichier L'erreur se produit après avoir traité une dizaine de fichiers.Les fichiers traités avant le bug sont correctement traités. Merci d'avance. A première vue, le bug provient d'un fichier à traiter; une fois celui-ci retiré du répertoire, le programme fonctionne correctement. HPZ400 Workstation Intel Xeon W3550 3.07 GHz 6 Go ram QUADRO FX 1800
(gile) Posté(e) le 12 juillet 2008 Auteur Posté(e) le 12 juillet 2008 Salut Ajout de la commande SSD (sélection par valeurs de paramètres de blocs dynamiques) et mise à jour de SSATT (prise en compte des blocs dynamiques anonymes) dans Special_selections Le fichier ZIP La totale est mis à jour Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Bred Posté(e) le 17 juillet 2008 Posté(e) le 17 juillet 2008 Salut (gile), Au sujet de ton super lisp gelobj :Je suis en 2009.Je pense qu'il y a un bug lors de la fermeture puis de la ré-ouverture d'un plan dans lequel ont aurais appliqué gelobj...J'ai du mal à comprendre ce bug donc je t'en dirais plus après plusieurs test, mais on dirait que lors de la ré-ouverture, tous les calques gelé avec ton outil soit gelé aussi en EP.Quand je passe en EP, j'ai une erreur "vla-object nil" ... Merci encore ! Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
(gile) Posté(e) le 17 juillet 2008 Auteur Posté(e) le 17 juillet 2008 Salut Bred, Je suis resté avec ma "vieille" 2007, sur laquelle je n'ai pas de problème... En relisant le LISP, je ne vois pas bien d'où ça peut venir.As tu bien mis : (and (not *GelerOngletObjet*) (vlax-ldata-get "GelerOngletObjet" "toggled") (setq *GelerOngletObjet* (vlr-miscellaneous-reactor nil '((:vlr-layoutSwitched . gelobjrea)) ) ) ) dans un fichier de chargement automatique ? Peux-tu essayer de cocher "Arrêt sur erreur" dans le menu "Débogage" de l'éditeur, essayer de reproduire l'erreur et faire CTRL+F9 pour voir l'expression en cause (méthode décrite ici) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Bred Posté(e) le 18 juillet 2008 Posté(e) le 18 juillet 2008 Salut,Ton lisp est chargé au démarrage à chaque ouverture de planc, donc je ne pense pas que ce soit dü au mauvais chargement du réacteur. Message d'erreur :; erreur: type d'argument incorrect: ensemble d'objets VLA: nil Peux-tu essayer de cocher "Arrêt sur erreur" dans le menu "Débogage" de l'éditeur, essayer de reproduire l'erreur et faire CTRL+F9 pour voir l'expression en cause http://images.imagup.com/04/1216371480_2008-07-18_095801.jpg pour info : *layers* = nil .... :casstet: ... on dirais qu'il ne recharge pas la liste totale des calques.... (J'ai un plan avec deux calques : "Cercles" et "Rectangles" : j'ai gelé les cercles avec gelobj :Cela a l'air bon :(vlax-ldata-get "GelerOngletObjet" "toggled")= (("Cercles" . :vlax-false)) Est-ce que cela : (or *acdoc* (setq *acdoc* (vla-get-activeDocument (vlax-get-acad-object)))) (or *layers* (setq *layers* (vla-get-layers *acdoc*)))Ne devrais-t'il pas ce trouver en chargement au démarrage ?Un truc du genre au chargement :(if (vlax-ldata-get "GelerOngletObjet" "toggled") (progn (or *acdoc* (setq *acdoc* (vla-get-activeDocument (vlax-get-acad-object)))) (or *layers* (setq *layers* (vla-get-layers *acdoc*))))) (car je ne la vois pas le rappeler dans ton réacteur : j'ai l'impression que pour que ça fonctionne, il font donc lancer forcément une fois "gelobjet" pour le charger... ) Pour être plus clair :Mon fichier TEST...Avec le calque cercle gelé avec gelobj... Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
(gile) Posté(e) le 18 juillet 2008 Auteur Posté(e) le 18 juillet 2008 Salut, je ne peux pas tester (je suis au boulot avec seulement une LT) mais je pense que tu as mis le doigt dessus, les variables globales *acad*, *acdoc*, *Layers*, *Blocks* sont automatiquement définies chez moi dans acaddoc.lsp. J'oublie donc régulièrement de les redéfinir... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 18 juillet 2008 Auteur Posté(e) le 18 juillet 2008 Merci Bred, Je pense que c'est ça, j'ai modifié le LISP en téléchargement (+ une petite dédicace) : ;; Chargement au démarrage (acaddoc.lsp ou MNL) (and (not *GelerOngletObjet*) (vlax-ldata-get "GelerOngletObjet" "toggled") (or *acdoc* (setq *acdoc* (vla-get-activeDocument (vlax-get-acad-object)))) (or *layers* (setq *layers* (vla-get-layers *acdoc*))) (setq *GelerOngletObjet* (vlr-miscellaneous-reactor nil '((:vlr-layoutSwitched . gelobjrea)) ) ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Bred Posté(e) le 19 juillet 2008 Posté(e) le 19 juillet 2008 ;) ;) ;) (+ une petite dédicace) :Merci !j'ai enfin mon "quart d'heure de célébrité" ! Ce lisp est vraiment génial !!!! Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
PHILPHIL Posté(e) le 31 juillet 2008 Posté(e) le 31 juillet 2008 HELLO gile j'utilise ton lisp AddVtx&DelVtx je rencontre un tit souci en enlevant des points aux polylignes avec DelVtx quand il y en a plusieurs l'une sur l'autre il a tendance a choisir celle de dessus ou quand les points de la polyligne sont confondue avec ceux de lignesil ne sait plus quel point enlever et repond par une erreur "entité non valide" est ce que avant d'enlever un point on ne pourrait pas choisir la polyligne sur laquelle operer ca reglerait les deux soucis d'un coup y'a pas urgence vue que 'lon peut regler le probleme en faisant monter la polyligne en "avant"pour qu'elle soit prise en compte en premier merci phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
(gile) Posté(e) le 31 juillet 2008 Auteur Posté(e) le 31 juillet 2008 Salut, Je te propose d'essayer le LISP ci dessous (que j'ai renommé DVX).J'ai changé de mode de sélection pour le sommet, l'objet sélectionné se met en surbrillance (en fonction de la variable PREVIEWEFFECT).On peut cliquer légèrement à côté du sommet ou passer d'une entité à l'autre en faisant CTRL ou MAJ+Espace suivant la version et/ou la variable LEGACYCTRLPICK. Je te laisse tester, je changerais peut-être de version dans le fichier en téléchargement en fonction des retours. (defun c:dvx (/ *error* pt ent typ plst par blst n wlst) (vl-load-com) (defun *error* (msg) (if (or (= msg "Fonction annulée") (= msg "quitter / sortir abandon") ) (princ) (princ (strcat "\nErreur: " msg)) ) (vla-EndUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)) ) ) (while (setq pt (entsel "\nSélectionnez le sommet à supprimer: " ) ) (if (and ((lambda (e) (or (= (cdr (assoc 0 e)) "LWPOLYLINE") (and (= (cdr (assoc 0 e)) "POLYLINE") (zerop (logand 118 (cdr (assoc 70 e)))) ) ) ) (entget (car pt)) ) (setq ent (vlax-ename->vla-object (car pt))) (setq pt (trans (osnap (cadr pt) "_end") 1 0)) (setq typ (vla-get-ObjectName ent)) ) (if (and (setq plst (if (= typ "AcDbPolyline") (split-list (vlax-get ent 'Coordinates) 2) (split-list (vlax-get ent 'Coordinates) 3) ) ) ( ) (progn (vla-StartUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)) ) (setq par (cond ((equal pt (vlax-curve-getStartPoint ent) 1e-9) 0 ) ((equal pt (vlax-curve-getEndPoint ent) 1e-9) (1- (length plst)) ) (T (atoi (rtos (vlax-curve-getParamAtPoint ent pt)) ) ) ) blst nil wlst nil n 0 ) (or (= typ "AcDb3dPolyline") (repeat (length plst) (if (/= n par) (setq blst (cons (cons (length blst) (vla-getBulge ent n)) blst ) ) ) (setq n (1+ n)) ) ) (if (= typ "AcDbPolyline") (progn (if (/= 0 par) (progn (vla-getWidth ent (1- par) 'swid1 'ewid1) (vla-getWidth ent par 'swid2 'ewid2) (setq wlst (cons (list (1- par) swid1 ewid2) wlst)) ) ) (repeat (- (setq n (1- (fix (vlax-curve-getEndParam ent)))) par ) (vla-getWidth ent n 'swid 'ewid) (setq wlst (cons (list (setq n (1- n)) swid ewid) wlst) ) ) ) ) (vlax-put ent 'Coordinates (apply 'append (vl-remove (nth par plst) plst)) ) (or (= typ "AcDb3dPolyline") (mapcar '(lambda (x) (vla-setBulge ent (car x) (cdr x))) blst ) ) (and (= typ "AcDbPolyline") (mapcar '(lambda (x) (vla-setWidth ent (car x) (cadr x) (caddr x)) ) wlst ) ) (vla-EndUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)) ) ) (progn (alert "\nLa polyligne n'a que deux sommets.") (exit) ) ) (progn (alert "Entité non valide.") (exit) ) ) ) (princ) ) ;;; SUBLIST Retourne une sous-liste ;;; ;;; Arguments ;;; lst : une liste ;;; start : l'index de départ de la sous liste (premier élément = 0) ;;; leng : la longueur (nombre d'éléments) de la sous-liste (ou nil) ;;; ;;; Exemples : ;;; (sublist '(1 2 3 4 5 6) 2 2) -> (3 4) ;;; (sublist '(1 2 3 4 5 6) 2 nil) -> (3 4 5 6) (defun sublist (lst start leng / n r) (if (or (not leng) ( (setq leng (- (length lst) start)) ) (setq n (+ start leng)) (repeat leng (setq r (cons (nth (setq n (1- n)) lst) r)) ) ) ;; SPLIT-LIST Retourne une liste de sous-listes ;; Arguments ;; - lst : la liste à fractionner ;; - num : un entier, le nombre d'éléments des sous listes ;; Exemples : ;; (split-list '(1 2 3 4 5 6 7 8) 2) -> ((1 2) (3 4) (5 6) (7 8)) ;; (split-list '(1 2 3 4 5 6 7 8) 3) -> ((1 2 3) (4 5 6) (7 8)) (defun split-list (lst n) (if lst (cons (sublist lst 0 n) (split-list (sublist lst n nil) n) ) ) ) [Edité le 31/7/2008 par (gile)][Edité le 31/7/2008 par (gile)] [Edité le 30/8/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 31 juillet 2008 Posté(e) le 31 juillet 2008 Bonjour à toutes et tous, Marche nickel chez moi ! Merci (gile), Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
PHILPHIL Posté(e) le 31 juillet 2008 Posté(e) le 31 juillet 2008 hello gile merci pour le LISP mais j'ai un tit souci j'ai tester un triangle superposé a un rectangle le truc simple et je veux enlever le point en commun au rectangle legacyctrlpick sur 1 j'arrive avec "control" a selectionner le rectangle et le mettre en surbrillance, apresfaut bien valider pour arreter le cycle mais la j'ai ca Entrez une nouvelle valeur pour LEGACYCTRLPICK <0>: 1 Commande: dvx Sélectionnez le sommet à supprimer: Erreur: type d'argument incorrect: point 2D/3D: nil; erreur: une erreur est survenue dans la fonction *erreur*paramètre de la variable AutoCAD rejeté: "OSMODE" nil oui je sais je pollue, ce "tips" n'est pas passer inapercue loll a+ phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
(gile) Posté(e) le 31 juillet 2008 Auteur Posté(e) le 31 juillet 2008 Désolé, j'avais laissé trainé un (setvar "osmode" os) datant de l'ancienne version dans la fonction *error*, je corrige. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 31 juillet 2008 Auteur Posté(e) le 31 juillet 2008 Re, Je viens d'essayer avec LEGACYCTRLPICK à 1, effectivementça ne fonctionne pas, le cycle de sélection est différent (je me suis complètement habitué à MAJ+Espace). Mais rien n'est perdu ! Il suffit que tu déplaces un peu le curseur pour sélectionner la polyligne que tu veux, le sommet le plus proche du curseur sera sélectionné. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
PHILPHIL Posté(e) le 31 juillet 2008 Posté(e) le 31 juillet 2008 HELLO gile mouai c'est pas gagnécomment tu as fait pour t'habituer a "shift+espace" lolllj'y arrive pas c'est tjrs celui sur le dessus qui est eliminé bon pas grave te casse pas la teteau vue des nombreuses réponses que tu as fait et que certains n'arrivent pas a comprendreje te sugerre de prendre un bon week end sans LISP et sans autocadet que nous retournions a nos "etudes" oupsss je pollue encore a+ merci phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
(gile) Posté(e) le 31 juillet 2008 Auteur Posté(e) le 31 juillet 2008 comment tu as fait pour t'habituer a "shift+espace" L'éditeur à des raccorcis claviers encore plus tordus, mais bien pratiques, par exemple, dans le même style : CTRL+SHIFT+SPACE pour finir d'écrire un mot (nom de fonction par exemple) ou le choisir dans une liste si plusieurs mots commencent par les mêmes lettres. PS : avec la solution donnée dans mon dernier message, tu dois pouvoir te passer de la sélection cyclique. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
PHILPHIL Posté(e) le 31 juillet 2008 Posté(e) le 31 juillet 2008 HELLO gile ok ca marcheLEGACYCTRLPICK etait encore sur 1 avec LEGACYCTRLPICK sur 0"shift+espace" et une fois la bonne polyligne selectionnée faut plus bouger et cliquersinon il reprend celui sur le dessus thank's phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant