doy Posté(e) le 19 juin 2007 Posté(e) le 19 juin 2007 Bonjour à tous, je continue mon programme mais je ne comprend pas la commande " ( vlax-invoke obl1 list Intersectwith obj2 acExtendNone ) Par contre je voudrais sélectionner tous les blocs que j'ai inséré et seulement ces objets. Je pensais utiliser le calque qui contient ces blocs mais je ne suis pas sur. Je ne parviens pas à les sélectionner puis à les exploser. j'ai la commande explode mais je ne sais pas comment l'intégrer. merci et à +
Patrick_35 Posté(e) le 19 juin 2007 Posté(e) le 19 juin 2007 Salut je continue mon programme mais je ne comprend pas la commande" ( vlax-invoke obl1 list Intersectwith obj2 acExtendNone )Tu recherches l'intersection entre deux objets Par contre je voudrais sélectionner tous les blocs que j'ai inséré et seulement ces objets.Tu peux créer un jeu de selection au fur et à mesure de tes insertionspar exemple(setq js (ssadd)) (command "_.insert ....) (ssadd (entlast) js) .... .... (command "_.insert ....) (ssadd (entlast) js) .... .... Je pensais utiliser le calque qui contient ces blocsC'est une solutionpar exemple(setq js (ssget "_x" (list (cons 0 "INSERT") (cons 8 "MON_CALQUE"))))Là, tu sélectionne tous les blocs sur le calque "MON_CALQUE"Si te ne veux que quelques blocs sur ce calque, tu peux aussi faire(setq js (ssadd)) (foreach ent (list "bloc1" "bloc2" "bloc3") (mapcar '(lambda(x) (ssadd (cadr x) js)) (ssnamex (ssget "x" (list (cons 0 "INSERT") (cons 2 ent)(cons 8 "MON_CALQUE"))))) ) Ton jeu de sélection étant créé,il est maintenant facile de décomposer le tout.je te laisse chercher un peu ;) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
(gile) Posté(e) le 19 juin 2007 Posté(e) le 19 juin 2007 Salut, Tu as posté deux fois le même message, tu as eu deux réponses similaires, je poste mon complément de réponse dans ce fil, mais c'est au hasard, j'aurais pu le faire dans l'autre. L'expression que tu donnes ( vlax-invoke obl1 list Intersectwith obj2 acExtendNone ), est inexacte, la sintaxe correcte est : (vlax-invoke obj1 'Intersectwith obj2 acExtendNone) Cette expression retourne la liste des coordonnées de la (ou des) intersection(s) entre obj1 et obj2 (ou nil s'il n'y a pas d'intersection). obj1 et obj2 sont de type VLA-OBJECT (l'équivalent de ENAME à utiliser avec les fonctions Visual LISP) La fonction vlax-ename->vla-object permet de traduire un ENAME en VLA-OBJECT Exemple : Créer un cercle de centre 0,0 et de rayon 1.0 et récupérer son nom d'entité (ename) dans la variable ent1, une ligne de -2.0,0.0 à 2.0,0.0 et récupérer son nom d'entité (ename) dans la variable ent2: (entmake (list '(0 . "CIRCLE") '(10 0.0 0.0 0.0) '(40 . 1.0))) (setq ent1 (entlast)) (entmake (list '(0 . "LINE") '(10 -2.0 0.0 0.0) '(11 2.0 0.0 0.0))) (setq ent2 (entlast)) Traduire ces noms d'entités en vla-object : (setq obj1 (vlax-ename->vla-object ent1) obj2 (vlax-ename->vla-object ent2) ) Récupérer les ntersections des deux objets : (vlax-invoke obj1 'Intersectwith obj2 acExtendNone) Le résultat est : (1.0 0.0 0.0 -1.0 0.0 0.0) où (1.0 0.0 0.0) et (-1.0 0.0 0.0) sont les coordonnées des deux points d'intersection. Si tu veux avoir le résultat sous forme d'une liste de points tu peux utiliser la rooutine 3d-Coord->Pt-Lst ;;; 3d-coord->pt-lst Convertit une liste de coordonnées 3D en liste de points ;;; (3d-coord->pt-lst '(1.0 2.0 3.0 4.0 5.0 6.0)) -> ((1.0 2.0 3.0) (4.0 5.0 6.0)) (defun 3d-coord->pt-lst (lst) (if lst (cons (list (car lst) (cadr lst) (caddr lst)) (3d-coord->pt-lst (cdddr lst)) ) ) ) L'expression : (3d-coord->pt-lst (vlax-invoke obj1 'Intersectwith obj2 acExtendNone)) Retournera : ((1.0 0.0 0.0) (-1.0 0.0 0.0)) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lovecraft Posté(e) le 20 juin 2007 Posté(e) le 20 juin 2007 Bonjour à tousJuste un p'tit clin d'oeil, encore merci Gile et patrick pour ces explications détaillées.elles nous permettent de progresser.enfin que du bonheur. http://www.youtube.com/user/CADMINATOR?feature=mhee
lovecraft Posté(e) le 20 juin 2007 Posté(e) le 20 juin 2007 Bonjour à tousJuste un p'tit clin d'oeil, encore merci Gile et patrick pour ces explications détaillées.elles nous permettent de progresser.enfin que du bonheur. http://www.youtube.com/user/CADMINATOR?feature=mhee
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