Aller au contenu

Messages recommandés

Posté(e)

Bonsoir

j'ai ce LISPet j'aimerais rajouter une donnée en plus l'ep du calo comment faire

ci dessous:

Ce lisp me sert à habiller un axe et de lui donner un DN et Ep en 3D j'aimerais l'amélioré en y incluant l'eP DU CALO

 

 

;;; CURVE2PIPE -Gilles Chanteau- (gile) 07/04/07

;;; Extrude un anneau (région) suivant le(s) chemin(s) spécifié(s).

;;; (arc, cercle, ellipse, ligne, polyligne 2D 3D ou lw, spline plane)

;;; Spécifier les diamètres extérieurs et intérieurs et sélectionner le(s) chemin(s)

;;; Si la variable DELOBJ est supérieure à 0 les chemins sont supprimés.

;;;

;;; Révision 20/12/07

;;; conservation des dernières valeurs entrées dans le dessin

;;; ajout d'un raccourci : C2P

 

(defun c:curve2pipe (/ Space ext_rad int_rad ss

obj start ext_circ int_circ ext_reg

int_reg norm

)

 

(vl-load-com)

 

(or *acdoc*

(setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object)))

)

(or (vlax-ldata-get "Curve2Pipe" "dia")

(vlax-ldata-put "Curve2Pipe" "dia" 50.0)

)

(or (vlax-ldata-get "Curve2Pipe" "ep")

(vlax-ldata-put "Curve2Pipe" "ep" 2.0)

)

(setq Space

(if (= 1 (getvar "CVPORT"))

(vla-get-PaperSpace *acdoc*)

(vla-get-ModelSpace *acdoc*)

)

)

(if (setq ext_rad (getdist (strcat "\nDiamètre extérieur <"

(rtos (vlax-ldata-get "Curve2Pipe" "dia"))

">: "

)

)

)

(vlax-ldata-put "Curve2Pipe" "dia" ext-rad)

(setq ext_rad (vlax-ldata-get "Curve2Pipe" "dia"))

)

(setq ext_rad (/ ext_rad 2.0)

int_rad ext_rad

)

(while (<= ext_rad int_rad)

(if (setq int_rad (getdist (strcat "\nÉpaisseur <"

(rtos (vlax-ldata-get "Curve2Pipe" "ep"))

">: "

)

)

)

(vlax-ldata-put "Curve2Pipe" "ep" int_rad)

(setq int_rad (vlax-ldata-get "Curve2Pipe" "ep"))

)

)

(if (setq ss

(ssget

'((-4 . "

(0 . "ARC,CIRCLE,ELLIPSE,LINE,LWPOLYLINE")

(-4 . "

(0 . "POLYLINE")

(-4 . "

(-4 . "&")

(70 . 112)

(-4 . "NOT>")

(-4 . "AND>")

(-4 . "

(0 . "SPLINE")

(-4 . "&")

(70 . 8)

(-4 . "AND>")

(-4 . "OR>")

)

)

)

(progn

(vla-StartUndoMark *acdoc*)

(foreach path (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))

(setq obj (vlax-ename->vla-object path))

(setq start (vlax-curve-getPointAtParam

obj

(vlax-curve-getStartParam obj)

)

)

(setq ext_circ (vla-addCircle

Space

(vlax-3d-Point start)

ext_rad

)

)

(setq int_circ (vla-addCircle

Space

(vlax-3d-Point start)

(- ext_rad int_rad)

)

)

(setq norm (vunit (vlax-curve-getFirstDeriv

obj

(vlax-curve-getStartParam obj)

)

)

)

(vla-put-Normal ext_circ (vlax-3d-point norm))

(vla-put-Normal int_circ (vlax-3d-point norm))

(setq

ext_reg (car (vlax-invoke Space 'addRegion (list ext_circ)))

)

(setq

int_reg (car (vlax-invoke Space 'addRegion (list int_circ)))

)

(vla-Boolean ext_reg acSubtraction int_reg)

(vla-addExtrudedSolidAlongPath Space ext_reg obj)

(mapcar 'vla-delete (list ext_circ int_circ ext_reg))

(if (< 0 (getvar "DELOBJ"))

(vla-delete obj)

)

)

(vla-EndUndoMark *acdoc*)

)

(princ "\nEntrée non valide.")

)

(princ)

)

Posté(e)

Salut,

 

Je n'aurais pas le temps avant ce soir, en attendant tu peux toujours faire 2 fois la manip sur le même axe (variable DELOBJ à 0), ca permet de changer de calque entre les 2.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Voilà

 

;;; CURVE2PIPE -Gilles Chanteau- (gile) 07/04/07
;;; Extrude un anneau (région) suivant le(s) chemin(s) spécifié(s).
;;; (arc, cercle, ellipse, ligne, polyligne 2D 3D ou lw, spline plane)
;;; Spécifier les diamètres extérieurs et intérieurs et sélectionner le(s) chemin(s)
;;; Si la variable DELOBJ est supérieure à 0 les chemins sont supprimés.
;;;
;;; Révision 20/12/07
;;; conservation des dernières valeurs entrées dans le dessin
;;; ajout d'un raccourci : C2P
;;;
;;; Révision 17/07/08
;;; possibilité d'ajouter un isolant autour du tube

(defun c:curve2pipe (/	       Space	 ext_rad   int_rad   cal_rad
	     ss	       obj	 start	   ext_circ  int_circ
	     cal_circ  ext_reg	 int_reg   cal_reg   norm
	    )

 (vl-load-com)

 (or *acdoc*
     (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object)))
 )
 (or (vlax-ldata-get "Curve2Pipe" "dia")
     (vlax-ldata-put "Curve2Pipe" "dia" 50.0)
 )
 (or (vlax-ldata-get "Curve2Pipe" "ep")
     (vlax-ldata-put "Curve2Pipe" "ep" 2.0)
 )
 (or (vlax-ldata-get "Curve2Pipe" "ca")
     (vlax-ldata-put "Curve2Pipe" "ca" 10.0)
 )
 (setq	Space
 (if (= 1 (getvar "CVPORT"))
   (vla-get-PaperSpace *acdoc*)
   (vla-get-ModelSpace *acdoc*)
 )
 )
 (if (setq ext_rad
     (getdist (strcat "\nDiamètre extérieur 			      (rtos (vlax-ldata-get "Curve2Pipe" "dia"))
		      ">: "
	      )
     )
     )
   (vlax-ldata-put "Curve2Pipe" "dia" ext-rad)
   (setq ext_rad (vlax-ldata-get "Curve2Pipe" "dia"))
 )
 (setq	ext_rad	(/ ext_rad 2.0)
int_rad	ext_rad
 )
 (while (    (if	(setq
  int_rad (getdist
	    (strcat "\nÉpaisseur 			    (rtos (vlax-ldata-get "Curve2Pipe" "ep"))
		    ">: "
	    )
	  )
)
     (vlax-ldata-put "Curve2Pipe" "ep" int_rad)
     (setq int_rad (vlax-ldata-get "Curve2Pipe" "ep"))
   )
 )
 (initget 4)
 (if (setq
  cal_rad (getdist
	    (strcat "\nÉpaisseur de l'isolant (0 pour aucun) 			    (rtos (vlax-ldata-get "Curve2Pipe" "ca"))
		    ">: "
	    )
	  )
)
    (vlax-ldata-put "Curve2Pipe" "ca" cal_rad)
    (setq cal_rad (vlax-ldata-get "Curve2Pipe" "ca"))
 )
 (if (ssget
'((-4 . "[b]	  (0 . "ARC,CIRCLE,ELLIPSE,LINE,LWPOLYLINE")
  (-4 . "[b]	  (0 . "POLYLINE")
  (-4 . "[b]	  (-4 . "&")
  (70 . 112)
  (-4 . "NOT>")
  (-4 . "AND>")
  (-4 . "[b]	  (0 . "SPLINE")
  (-4 . "&")
  (70 . 8)
  (-4 . "AND>")
  (-4 . "OR>")
 )
     )
   (progn
     (vla-StartUndoMark *acdoc*)
     (vlax-for	obj (setq ss (vla-get-activeSelectionSet *acdoc*))
(setq start (vlax-curve-getPointAtParam
	      obj
	      (vlax-curve-getStartParam obj)
	    )
)
(setq ext_circ (vla-addCircle
		 Space
		 (vlax-3d-Point start)
		 ext_rad
	       )
)
(setq int_circ (vla-addCircle
		 Space
		 (vlax-3d-Point start)
		 (- ext_rad int_rad)
	       )
)
(setq cal_circ (vla-addCircle
		 Space
		 (vlax-3d-Point start)
		 (+ ext_rad cal_rad)
	       )
)
(setq norm (vunit (vlax-curve-getFirstDeriv
		    obj
		    (vlax-curve-getStartParam obj)
		  )
	   )
)
(vla-put-Normal ext_circ (vlax-3d-point norm))
(vla-put-Normal int_circ (vlax-3d-point norm))
(vla-put-Normal cal_circ (vlax-3d-point norm))
(setq
  ext_reg (car (vlax-invoke Space 'addRegion (list ext_circ)))
)
(setq
  int_reg (car (vlax-invoke Space 'addRegion (list int_circ)))
)
(or (zerop cal_rad)
    (setq
      cal_reg
       (car (vlax-invoke Space 'addRegion (list cal_circ)))
    )
)
(if cal_reg
  (progn
    (vla-Boolean cal_reg acSubtraction (vla-copy ext_reg))
    (vla-addExtrudedSolidAlongPath Space cal_reg obj)
  )
)
(vla-Boolean ext_reg acSubtraction int_reg)
(vla-addExtrudedSolidAlongPath Space ext_reg obj)
(mapcar	'vla-delete
	(list ext_circ int_circ cal_circ ext_reg)
)
(and cal-reg (vla-delete cal_reg))
(if (	  (vla-delete obj)
)
     )
     (vla-delete ss)
     (vla-EndUndoMark *acdoc*)
   )
   (princ "\nEntrée non valide.")
 )
 (princ)
)

(defun c:c2p () (c:curve2pipe)) 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

La modification de ce Pgm ne fonctionne pas il ne suit pas le chemin tu peux regarder stp

 

:casstet: :casstet: :casstet: :casstet: :casstet: :casstet: :casstet: :casstet:

 

Ça fonctionne très bien, es-tu sûr de l'avoir bien copié ?

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

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é