Invité ingoenius Posté(e) le 12 juin 2007 Posté(e) le 12 juin 2007 je attaque un nouveaux petit lisp le but est de creer un couteau solide pour autocad (a partir de la comande "section" ) au debut on selectionne les objets a couper ensuite on selectionne une ligne polyligne ou arc ouvert,(car avec des forme fermes on obties des solides et la commande est differente) a partire de la le script extrude la ligne et effectu les coupes pour effacer en fin de cycle la ligne coupante (defun c:K ();diminutivo di KUT (prompt "\nSelection Objets a couper :") (setq Obj (ssget));vari oggetti (setq Quanti (sslength Obj));quanti oggetti taglio? (setq n 0 ) (setq Kutter (car (entsel "\nSelection Objet coupant "))) (command "_extrude" Kutter "" 100.0 "" "") ;estrude la pline (setq K2 (entlast));nomino l'estrusione (repeat (sslength Obj) (setq ent (ssname Obj n)) (command "section" ent "" "s" K2 "" ) ;estrude la pline (setq n (+ 1 n)) );fin repeat (command "_erase" K2 "" "") ) est possible a votre avis de le faire aussi travailler avec des formes coupantes fermes? come cercles rectangles etc sens genere un solide par extrusion mais une surface?? merci ;-) [Edité le 12/6/2007 par ingoenius]
Invité ingoenius Posté(e) le 12 juin 2007 Posté(e) le 12 juin 2007 Jai avancé encore un peu et j'ai creé 3 version distintes K = kut simple avec simple selection de 2 point pour cree l'object coupant KK = Kut evolué avec ligne de coupe qui doit etre dejà existente KS = KUT surface avec surface de coupe deja existante J'espere que serà utile a quelqun de vous ;-) (defun c:K ();KUT de base avec simple selection de 2 point sur l'ecran (prompt "\nSelection Objets a couper :") (setq Obj (ssget)) (setq Quanti (sslength Obj)) (setq n 0 ) (setq P (getpoint "\nPunto inserzione schermo?\n")) (command "_line" P pause "" ) (setq Kutter (entlast)) ;nom (command "_extrude" Kutter "" 1000.0 "" "") ;estrude le couteau (setq K2 (entlast));nomino l'estrusione (repeat (sslength Obj) (setq ent (ssname Obj n)) (command "section" ent "" "s" K2 "" ) ;KUT (setq n (+ 1 n)) );fin repeat (command "_erase" K2 "" "");efface le couteau ) (defun c:KK ();KUT evoluee avec creation prealable de la ligne de coupe courbe spline poliligne etc (prompt "\nSelection Objets a couper :") (setq Obj (ssget));vari oggetti (setq Quanti (sslength Obj));quanti oggetti taglio? (setq n 0 ) (setq Kutter (car (entsel "\nSelection Objet coupant "))) (command "_extrude" Kutter "" 1000.0 "" "") ;estrude le couteau (setq K2 (entlast));nomino l'estrusione (repeat (sslength Obj) (setq ent (ssname Obj n)) (command "section" ent "" "s" K2 "" ) ;KUT (setq n (+ 1 n)) );fin repeat (command "_erase" K2 "" "");efface le couteau ) (defun c:KS ();KUT evoluee avec surface existante (prompt "\nSelection Objets a couper :") (setq Obj (ssget));vari oggetti (setq Quanti (sslength Obj));quanti oggetti taglio? (setq n 0 ) (setq Kutter (car (entsel "\nSelection surface coupante "))) (repeat (sslength Obj) (setq ent (ssname Obj n)) (command "section" ent "" "s" Kutter "" ) ;KUT (setq n (+ 1 n)) );fin repeat (command "_erase" Kutter "" "");efface le couteau )
Invité ingoenius Posté(e) le 12 juin 2007 Posté(e) le 12 juin 2007 Jai une question car les script fonctionnent, mais j'ai mis une valeur arbitraire pour l'hauteur d'extrusion pour la creation des objects coupants a 1000 (car en principe je travaille en mt , et 1000 mt devrai suffire pour que l'extrusion depasse l'hauteur des objets a couper, par contre c'est un "bidulle" et j'amairais savoir s'il est possible de determiner la dimension d'une boite englobalnte les objets selectionnes pour la coupe de facon a adapter l'hauteur de la creation du Kutter merci ;-)
(gile) Posté(e) le 12 juin 2007 Posté(e) le 12 juin 2007 Salut, Pour chaque entité de ton jeux de sélection, tu récupères les coordonnées de la boite englobante (BoundingBox) de l'entité et tu stockes le Z de la plus grande coordonnée (Maxpt) dans une liste (bb_lst), puis tu récupères la valeur maximum de la liste. (setq ss (ssget) n 0 ) (while (setq ent (ssname ss n)) (vla-getBoundingBox (vlax-ename->vla-object ent) 'Minpt 'Maxpt ) (setq bb_lst (cons (caddr (vlax-safearray->list Maxpt)) bb_lst) n (1+ n) ) ) (setq hauteur_max (apply 'max bb_lst)) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Invité ingoenius Posté(e) le 13 juin 2007 Posté(e) le 13 juin 2007 grand merci gile, je connaissaiz pas cette fonction de bounding box ;-) mais j'ai encore un probleme a resoudre, comme je fai pour determiner la juste direction pour l'extrusion de l'objet coupant? En principe je pourrait etre dans la vue top avoir un cube a couper qui se trouve au dessus de mon 0.0 en Z du scu donc l'extrusion verticale en +Z de mon couteau ne va pas faire interception avec , donc pas de coupe possible???
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