-
Compteur de contenus
2 764 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Bred
-
Salut, après un petit coup d'oeuil sur ton lisp, je te propose de modifier la logique en faisant ceci : 1 - Tu crées la polyligne (1) 2 - tu la mets dans une variable (entlast) 3 - tu la copie (2), puis tu mets la copie dans une variable 3 - tu fais un "entmod" pour chaque polyligne, pour modifier le calque : pas besoin de vérifier l'existence du calque, entmod et entmake crée automatiquement le calque !!! ... et ça devrait marcher.... Fais moi signe si tu ne t'en sort pas ! ;) Bon courage ! [Edité le 24/7/2007 par Bred]
-
Salut lecrabe, non non, tu as bien compris, je cherche bien à tester la connection. Je n'avais pas pensé à "shell" en passant par la commande, mais j'étais en train de regarder le moyen de le faire en activeX (avec shell aussi d'ailleur).... et je ne trouve pas..... Donc je vais jeté un coup d'oeuil à ta poposition. merci !
-
Salut, je cherche un moyen rapide de savoir si la connexion à distance fonctionne. Aussi rapide qu'un "ping"... Vous auriez des solutions ? merci ! ;) [Edité le 23/7/2007 par Bred]
-
La couleur de l'objet tu veux dire je pense : (setq Coul-Objet (cdr (assoc 62 (entget (ssname sel 0))))) Mais attention !!! il faut que tu fasses un test sur son existence, car si couleur objet = couleur DuCalque, le code 62 n'existe pas !!! ;) Je te laisse faire.... Pour info, il y a une une section LISP dans CADxp....
-
Ah ben ça fait plaisir, tiens !
-
Re, (setq coul-CLAQUE (cdr (assoc 62 (entget (tblobjname "LAYER" CALQUE)))))
-
Génial ! :D c'est du photo-réalisme !!! (non, je ne fairait pas le mien.... :P )
-
Re, (setq sel (ssget "_X" (list '(0 . "LWPOLYLINE")(list 10 0.0 0.0)))) (if (= (sslength sel) 1) (setq CALQUE (cdr (assoc 8 (entget (ssname sel 0))))) (princ "\n Plusieurs LwPolylignes en 0,0 ! \n Annulé.") )
-
Salut e bienvenue ! ta question n'est vraiment pas clair ! mais bon : Choix d' objets à 0 0 0 : (setq sel (ssget (list (list 10 0.0 0.0 0.0)))) Claque du premier objet selectionné : (setq lay (cdr (assoc 8 (entget (ssname sel 0))))) ... mais soit plus explicite dans ta question, afin que nous puissions mieux répondre ! (type d'objet, de selection, ce que tu veux faire du nom du calque....) voir, poste ton code !
-
Pour cela il faudrait donc nommer ces points sur le plan ! C'est possible à automatiser, mais il faudrait donner plus de détail sur ce que tu veux.
-
Re, Résupérer les coordonnées des points et les mettre "en vrac" dans un tableau est simple : mais que veux-tu en faire après ?
-
Salut et bienvenue ! cespoints sont sous quelle forme ? (blocs, attributs, ...)
-
Salut, et non... sauf une fois : ma fille m'avait collé une gomette sur l'écran. Je pensais que c'était une hachure "solid" au début ... ;)
-
Salut, tu l'ouvres (outils/personnaliser/paramètre de programme (acad.pgp) puis tu l'enregistre à un endoit ou tu puisses le retrouver.
-
Salut, http://xs117.xs.to/xs117/07295/2007-07-20_094558.jpg
-
?... :casstet: c'est plaisant... je n'utilise en effet jamais les commandes systèmes avec Autocad actif.... mais cela m'a permis d'apprendre encore quelque chose.... ....aussi bien sur Autocad que sur un participant au forum.... :mad2:
-
Re, j'ai ouvert un sujet ici concernat le classement des polylignes. (le sujet de ce post n'avais rien à voir).
-
Salut, Comme le post ici s'étalait et était hors-jujet, je poste ici une routine demandé par lecrabe : Celle-ci permet de mettre les (lw)polylignes 2D et 3D dans des calques selons le critère de longueur ou de surface (une fourchette de valeur). Vous devez, pour personnaliser la routine, modifier/rajouter des écarts dans la routine "list_tri_poly". (et modifier aussi "Nom_du_calque") commande "tri-poly" Choix de classement par défaut : Longueur Nota : 1- je ne savais pas comment trouver la surface d'une polyligne "simple" (dites 3D), donc j'ai créer une routine qui calcul cette surface (vla-get-area2Dpoly3D) en projetant les point sur un plan. 2-repiquage de la routine LST2MAT et SUBLST de (gile). ;;; tri polyligne selon Surface ou longueur ;;;;;;; ;;;par Bred. [b]; fourchette - à modifier- (defun list_tri_poly () (list "Nom_du_calque" (cons 0 3) (cons 4 9) (cons 10 19) ) )[/b] ;prog tri (defun c:tri-poly (/ A I L LST Q SEL X) (vl-load-com) (initget "L S") (setq Q (getkword "\n Tris des (LW)Polylignes par Calque : Longueur ou Surface (L/S) ? ")) (if (not Q )(setq Q "L")) (setq sel (ssget '((0 . "*POLYLINE"))) lst (list_tri_poly)) (repeat (setq i (sslength sel)) (setq L (vla-get-length (vlax-ename->vla-object (ssname sel (setq i (1- i)))))) (if (equal (vla-get-ObjectName (vlax-ename->vla-object (ssname sel i))) "AcDb3dPolyline") (setq A (vla-get-area2Dpoly3D (vlax-ename->vla-object (ssname sel i)))) (setq A (vla-get-area (vlax-ename->vla-object (ssname sel i)))) ) (if (equal Q "L") (repeat (1- (setq x (length lst))) (if (and (>= L (car (nth (setq x (1- x)) lst))) (<= L (cdr (nth x lst)))) (entmod (subst (cons 8 (strcat (car lst) "-" (rtos (car (nth x lst))) "_" (rtos (cdr (nth x lst))))) (assoc 8 (entget (ssname sel i))) (entget (ssname sel i)) )))) (repeat (1- (setq x (length lst))) (if (and (>= A (car (nth (setq x (1- x)) lst))) (<= A (cdr (nth x lst)))) (entmod (subst (cons 8 (strcat (car lst) "-" (rtos (car (nth x lst))) "_" (rtos (cdr (nth x lst))))) (assoc 8 (entget (ssname sel i))) (entget (ssname sel i)) )))) ) ) (princ) ) ;;; LST2MAT Retourne un liste de listes du nombre ;;; d'éléments spécifié (matrice) ;;; (lst2mat '(1 2 3 4 5 6) 2) -> ((1 2) (3 4) (5 6)) ;;; (lst2mat '(1 2 3 4 5 6) 3) -> ((1 2 3) (4 5 6)) (defun lst2mat (lst n) (if (and lst (zerop (rem (length lst) n))) (cons (sublst lst 1 n) (lst2mat (sublst lst (1+ n) (- (length lst) n)) n) ) ) ) ;;; SUBLST Retourne une sous-liste ;;; Premier élément : 1 ;;; (sublst '(1 2 3 4 5 6) 3 2) -> (3 4) ;;; (sublst '(1 2 3 4 5 6) 3 -1) -> (3 4 5 6) ;;; (sublst '(1 2 3 4 5 6) 3 12) -> (3 4 5 6) ;;; (sublst '(1 2 3 4 5 6) 3 nil) -> (3 4 5 6) (defun sublst (lst start leng / rslt) (if (not (<= 1 leng (- (length lst) start))) (setq leng (- (length lst) (1- start))) ) (repeat leng (setq rslt (cons (nth (1- start) lst) rslt) start (1+ start)) ) (reverse rslt) ) ; routine surface (2D) Polyligne (3D) (defun vla-get-area2Dpoly3D (vla-poly3D / ACDOC AIRE COORD COORDF PLINE) (setq AcDoc (if (= (getvar "CVPORT") 1) (vla-get-PaperSpace (vla-get-ActiveDocument (vlax-get-acad-object))) (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))) ) coordF nil coord (lst2mat (vlax-safearray->list (vlax-variant-value (vla-get-coordinates vla-poly3D))) 3)) (foreach n coord (setq coordF (append coordF (list (car n) (cadr n) 0.0)))) (setq pline (vla-addPolyline AcDoc (vlax-make-variant (vlax-SafeArray-fill (vlax-make-SafeArray vlax-vbDouble (cons 0 (1- (length coordF))))coordF)))) (setq Aire (vla-get-area pline)) (vla-delete pline) Aire )
-
ah ben oui ! merci !
-
je suis en 2008, mais je teste aussi en 2006 (rapidement).
-
Salut, en faisant une fausse manipulation, j'ai tapé "sh" en commande, j'ai alors eu droit à "SE:", puis à une fenêtre "***Interpéteur de commandes AUTOCAD actif***" .... Pour mon instruction, quelqu'un pourrait me dire à quoi ceci sert ? :casstet: merci !
-
Ah oui ! je pensais en fait que je le faisais, mais j'avais inverser un test "if" ... j'ai édité le code précédent, test le et tiens moi au courant....
-
Salut, es-tu allez voir dans les lisp de Patrick_35 ? Je pense que le lisp REA devrait répondre (en partie) à tes besoins...
-
Re, Les polylignes(3D) lissée sont traités (j'avais oublié de mettre une routine : SUBLST de (gile) ) Par contre, ce que tu appel polyligne "spinées", c'est quoi, des spines ou autre chose ? (pour moi une spline n'est pas un polyligne)
-
Re, Alors, à tester : commande "tri-poly" Choix de classement par défaut : Longueur Nota : 1- je ne savais pas comment trouver la surface d'une polyligne "simple" (dites 3D), donc j'ai créer une routine qui calcul cette surface (vla-get-area2Dpoly3D) en projetant les point sur un plan. 2-repiquage de la routine LST2MAT de (gile). ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; tri polyligne selon Surface ou longueur ;;;;;;; ; par Bred ; [b]fourchette - à modifier-[/b] (defun list_tri_poly () (list "Nom_du_calque" (cons 0 3) (cons 4 9) (cons 10 19) ) ) ;prog tri (defun c:[b]tri-poly[/b] (/ A I L LST Q SEL X) (vl-load-com) (initget "L S") (setq Q (getkword "\n Tris des (LW)Polylignes par Calque : Longueur ou Surface (L/S) ? ")) (if (not Q )(setq Q "L")) (setq sel (ssget '((0 . "*POLYLINE"))) lst (list_tri_poly)) (repeat (setq i (sslength sel)) (setq L (vla-get-length (vlax-ename->vla-object (ssname sel (setq i (1- i)))))) (if (equal (vla-get-ObjectName (vlax-ename->vla-object (ssname sel i))) "AcDb3dPolyline") (setq A (vla-get-area2Dpoly3D (vlax-ename->vla-object (ssname sel i)))) (setq A (vla-get-area (vlax-ename->vla-object (ssname sel i)))) ) (if (equal Q "L") (repeat (1- (setq x (length lst))) (if (and (>= L (car (nth (setq x (1- x)) lst))) (<= L (cdr (nth x lst)))) (entmod (subst (cons 8 (strcat (car lst) "-" (rtos (car (nth x lst))) "_" (rtos (cdr (nth x lst))))) (assoc 8 (entget (ssname sel i))) (entget (ssname sel i)) )))) (repeat (1- (setq x (length lst))) (if (and (>= A (car (nth (setq x (1- x)) lst))) (<= A (cdr (nth x lst)))) (entmod (subst (cons 8 (strcat (car lst) "-" (rtos (car (nth x lst))) "_" (rtos (cdr (nth x lst))))) (assoc 8 (entget (ssname sel i))) (entget (ssname sel i)) )))) ) ) (princ) ) ;;; LST2MAT Retourne un liste de listes du nombre ;;; d'éléments spécifié (matrice) ;;; (lst2mat '(1 2 3 4 5 6) 2) -> ((1 2) (3 4) (5 6)) ;;; (lst2mat '(1 2 3 4 5 6) 3) -> ((1 2 3) (4 5 6)) (defun lst2mat (lst n) (if (and lst (zerop (rem (length lst) n))) (cons (sublst lst 1 n) (lst2mat (sublst lst (1+ n) (- (length lst) n)) n) ) ) ) ;;; SUBLST Retourne une sous-liste ;;; Premier élément : 1 ;;; (sublst '(1 2 3 4 5 6) 3 2) -> (3 4) ;;; (sublst '(1 2 3 4 5 6) 3 -1) -> (3 4 5 6) ;;; (sublst '(1 2 3 4 5 6) 3 12) -> (3 4 5 6) ;;; (sublst '(1 2 3 4 5 6) 3 nil) -> (3 4 5 6) (defun sublst (lst start leng / rslt) (if (not (<= 1 leng (- (length lst) start))) (setq leng (- (length lst) (1- start))) ) (repeat leng (setq rslt (cons (nth (1- start) lst) rslt) start (1+ start)) ) (reverse rslt) ) [b]; routine surface (2D) Polyligne (3D)[/b] (defun [b]vla-get-area2Dpoly3D[/b] (vla-poly3D / ACDOC AIRE COORD COORDF PLINE) (setq AcDoc (if (= (getvar "CVPORT") 1) (vla-get-PaperSpace (vla-get-ActiveDocument (vlax-get-acad-object))) (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))) ) coordF nil coord (lst2mat (vlax-safearray->list (vlax-variant-value (vla-get-coordinates vla-poly3D))) 3)) (foreach n coord (setq coordF (append coordF (list (car n) (cadr n) 0.0)))) (setq pline (vla-addPolyline AcDoc (vlax-make-variant (vlax-SafeArray-fill (vlax-make-SafeArray vlax-vbDouble (cons 0 (1- (length coordF))))coordF)))) (setq Aire (vla-get-area pline)) (vla-delete pline) Aire ) [Edité le 19/7/2007 par Bred] [Edité le 19/7/2007 par Bred]
