Aller au contenu

outils de coupe


Messages recommandés

Invité ingoenius
Posté(e)

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)

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)

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 ;-)

Posté(e)

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)

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???

 

 

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité