Jump to content

Modifying an existing lisp to generate multiple flatten cones ant the same time


ROBP

Recommended Posts

I need to generate multiple cones with same id or od dimensions and same thickness but different heights without the elevation and without dimensions.

Therofore by entering only and or choosing id or od, entering small and large dimensions and same thickness but need to put in 1 to any variable heights by increaments of 1 inch can it be done ? thanks in advance.

 

heres the lisp:

 

(defun C:DEVCON ()

;==============================================================================

; PROGRAMME PRINCIPALE ( DEVELOPPEMENT D'UN CONE )

;

; VARIABLES UTILISEE... INVP, IVVG

; NOTE: LE PROGRAMME CALCULE (PAR DEFAULT) LES DIMENSIONS DEVELOPPEES A PARTIR

; DE LA COTATION EXTERIEURE DU CONE. SI LA COTATION EST DIFFERENTE, C'EST

; ALORS QU'INTERVIENNENT LES VARRIABLES INVG ET INVP

;

; INVP=1 LORSQUE LE PETIT DIAMETRE EST COTE A L'EXTERIEUR

; INVG=1 LORSQUE LE GRAND DIAMETRE EST COTE A L'EXTERIEUR

; INVP=-1 LORSQUE LE PETIT DIAMETRE EST COTE A L'INTERIEUR

; INVG=-1 LORSQUE LE GRAND DIAMETRE EST COTE A L'INTERIEUR

;==============================================================================

(IDOD "\nLE PETIT DIAMETRE DU CONE EST-IL COTE A L'INTERIEUR OU A L'EXTERIEUR ? ")

(IF (OR (= ANS "e") (= ANS "E"))

(PROGN (SETQ INVP 1)

(SETQ PRE (/ (GETREAL "\nPETIT DIAMETRE EXTERIEUR =...? ") 2))

)

(PROGN (SETQ INVP -1)

(SETQ PRE (/ (GETREAL "\nPETIT DIAMETRE INTERIEUR =...? ") 2))

)

);FIN DU IF

(IDOD "\nLE GRAND DIAMETRE DU CONE EST-IL COTE A L'INTERIEUR OU A L'EXTERIEUR ? ")

(IF (OR (= ANS "e") (= ANS "E"))

(PROGN (SETQ INVG 1)

(SETQ GRE (/ (GETREAL "\nGRAND DIAMETRE EXTERIEUR =...? ") 2))

)

(PROGN (SETQ INVG -1)

(SETQ GRE (/ (GETREAL "\nGRAND DIAMETRE INTERIEUR =...? ") 2))

)

);FIN DU IF

(SETQ H (GETREAL "\nHAUTEUR DU CONE =...? ")

EP (GETREAL"\nEPAISSEUR DE LA PLAQUE =...? ")

NSEG (GETREAL"\nNOMBRE DE SEGMENT =...? ")

)

(DEV) ;FONCTION DE CALCUL ET DE DESSIN DU DEVELOPPEMENT

(DIMCON) ;FONCTION DE DESSIN DES DIMENSIONS FINI DU CONE

) ;FIN DE LA FONCTION DEVCON

 

(DEFUN DIMCON (/ PTW1 PTW2 F PH3 PH4)

(SETQ GRE (* 0.6 GRE) ; REDUCTION DE L'ECHELLE DE 'DIMCON'

PRE (* 0.6 PRE) ; MEME

H (* 0.6 H) ; MEME

EP (* 0.6 EP) ; MEME

DX (* FACT 1.5) ;POSITION HORIZONTALE DE 'DIMCON'

DY (* FACT -4) ;POSITION VERTICALE DE 'DIMCON'

)

(IF (AND (= 1 INVG) (= 1 INVP))

(POINTEX)

(IF (AND (= -1 INVG) (= -1 INVP))

(POINTIN)

(IF (AND (= 1 INVG) (= -1 INVP))

(POINTINPEXG)

(POINTEXPING)

);FIN DU IF 3

);FIN DU IF 2

);FIN DU IF 1

 

(SETQ PTW2 (LIST (+ (CAR PT1) 2.5) (- (CADR PT4) 2.5))

PTW1 (LIST (- (CAR PT5) 2.5) (+ (CADR PT5) 2.5))

F (* FACT 0.4) ;FACTEUR D'ESPACEMENT POUR LES HACHURES

PH3 (LIST (- (CAR PT3) (* EP (COS PHI))) (+ (CADR PT2) (* EP (SIN PHI))))

PH4 (LIST (+ (CAR PT1) (* EP (COS PHI))) (- (CADR PT4) (* EP (SIN PHI))))

)

;----------------------------------------------------------------------------

;PTW1 PTW2 POINTS DE REPERE POUR LA SELECTION D'OBJET LORS DES HACHURES

;PH3 PH4 POINTS DE REPERE POUR LA SELECTION D'OBJET LORS DE LA COMMANDE "MIRROR"

;F FACTEUR D'ESPACEMENT DES HACHURES

;-----------------------------------------------------------------------------

 

(IF (> (* INVG INVP) 0)

(COMMAND "PLINE" PT1 "W" "0" "" PT2 PT3 PT4 "C")

(COMMAND "PLINE" PT1 "W" "0" "" PT4 PT2 PT3 "C")

)

(COMMAND "LINE" PT2 PT5 "")

(COMMAND "LINE" PT3 PT7 "")

(IF (= INVG 1)

(COMMAND "LINE" PT4 PT8 "")

(COMMAND "LINE" PT1 PT8 "")

)

(IF (AND (> (SIN PHI) 0.5) (

(SETQ R 112.5)

(SETQ R 90)

)

(SETQ COT1 (RTOS (* 3.333 (- (CAR PT1) DX)) 5 4)

COT2 (RTOS (* 3.333 (- (CAR PT2) DX)) 5 4)

COT3 (RTOS (* 1.667 (- (CADR PT2) (CADR PT1))) 5 4)

);AJUSTEMENT DE LA COTATION D— AU FACTEUR D`ECHELLE (0.7)

 

(COMMAND "HATCH" "ANSI32" F R (SSGET "W" PH3 PH4) "" )

(COMMAND "MIRROR" "W" PTW1 PTW2 "" PT5 PT8 "")

(COMMAND "DIM" "HORI" PT1 (LIST (- (CAR PT1) (* GRE 2)) (CADR PT1))

(LIST (CAR PT4) (- (CADR PT4) (* FACT 0.5))) COT1)

(COMMAND "HORI" PT2 (LIST (- (CAR PT2) (* 2 PRE)) (CADR PT2))

(LIST (CAR PT2) (+ (CADR PT2) (* 0.5 FACT))) COT2)

(COMMAND "VERT" PT1 PT2 (LIST (+ (CAR PT1) (* 0.5 FACT)) (CADR PT1)) COT3)

(COMMAND "EXIT")

(COMMAND "REDRAW")

);FIN DE LA FONCTION DIMCONEX

 

(DEFUN DEV (/ PT1 PT2 PT3 PT4 PT5 PT6 PT7 PT8 PT9 PTC R1 R2 HE CL)

(SETQ PHIE 0.5)

(REPEAT 20 ;ITERATION POUR TROUVER LA PENTE EXACTE DU CONE

(SETQ PHI (ATAN (/ (- (- GRE (* EP 0.5 INVG (COS PHIE)))

(- PRE (* EP 0.5 INVP (COS PHIE)))) H))

PHIE PHI

)

)

(SETQ R1 (/ (- GRE (* EP 0.5 INVG (COS PHI))) (SIN PHI))

R2 (/ (- PRE (* EP 0.5 INVP (COS PHI))) (SIN PHI))

ALP (/ (* PI (- GRE (* (COS PHI) INVG EP 0.5))) R1 NSEG)

)

;------------------------------------------------------------------------------

; AJUSEMENT DES DIMENSIONS DE L`ECRAN

;

; HE HAUTEURE DE L`ECRAN

; FACT DIMENSION VALANT UN POUCE QUELQUE SOIT L`ECHELLE DU DESSIN

; PTC POSITION DU POINT CENTRALE DU DEVELOPPEMENT

; CHOIX VARRIABLE INDIQUANT LE MODE DE COTATION

;-----------------------------------------------------------------------------

(IF (

(PROGN

(SETQ HE (* 2.5 R1 (SIN ALP))

FACT (* 0.091 HE)

PTC (LIST 0 (+ (* FACT -2) R2 (/ (- R1 R2) 2)))

CHOIX 0

)

)

)

(IF (AND (>= ALP (/ PI 3)) (

(PROGN

(SETQ HE (* 3 R1)

FACT (* 0.091 HE)

PTC (LIST 0 (+ (* FACT -2) (/ R1 2)))

CHOIX 0

)

)

)

(IF (> ALP (/ PI 2))

(PROGN

(SETQ HE (* 3.4 R1)

FACT (* 0.091 HE)

PTC (LIST 0 (* FACT -3))

CHOIX 1

)

)

) ;FIN DU IF

 

(SETQ PLIM1 (LIST (* HE -0.75) (* HE -1)) ;POINT LIMITE INFERIEUR GAUCHE

PLIM2 (LIST (* HE 0.75) (* HE 1)) ;POINT LIMITE SUPERIEUR DROIT

;----------------------------------------------------------------------------

; POUR LA DEFINITION DES POINTS PT1 A PT9,CONSULTER LE DOCUMENT...

;----------------------------------------------------------------------------

PT1 (LIST (* R2 (SIN ALP)) (- (* R2 (COS ALP)) (CADR PTC)))

PT2 (LIST (* R1 (SIN ALP)) (- (* R1 (COS ALP)) (CADR PTC)))

PT3 (LIST (* R1 (SIN (* ALP -1))) (- (* R1 (COS ALP)) (CADR PTC)))

PT4 (LIST (* R2 (SIN (* ALP -1))) (- (* R2 (COS ALP)) (CADR PTC)))

PT5 (LIST 0 (- R1 (CADR PTC)))

PT6 (LIST 0 (- R2 (CADR PTC)))

PT7 (LIST (* R1 (SIN (/ ALP 1.5)))

(- (* R1 (COS (/ ALP 1.5))) (CADR PTC)))

PT8 (LIST (* R2 (SIN (* ALP 0.8)))

(- (* R2 (COS (* ALP 0.8))) (CADR PTC)))

PT9 (LIST (* R1 (SIN (/ ALP -4)))

(- (* R1 (COS (/ ALP -4))) (CADR PTC)))

)

;-----------------------------------------------------------------------------

; COMMANDES DE DESSIN...

;-----------------------------------------------------------------------------

(COMMAND "LIMITS" PLIM1 PLIM2)

(COMMAND "ZOOM" "ALL")

(COMMAND "LINE" PT1 PT2 "")

(COMMAND "LINE" PT4 PT3 "")

(COMMAND "ARC" PT2 PT5 PT3)

(COMMAND "ARC" PT1 PT6 PT4)

(SETVAR "DIMTIX" 0) ;PLACE LES DIM A L'INTERIEUR

(SETVAR "DIMSCALE" (* 1.2 FACT)) ;AJUSTE LA DIMENSION DES COTES

(SETVAR "LTSCALE" (* 0.8 FACT)) ;AJUSTE LE FACTEUR D`ECHELLE DES LIGNES

(SETVAR "LUNITS" 5 ) ;CHOIX DU SYSTEME D`UNITE FRACTIONNAIRE

(COMMAND "LINETYPE" "S" "CENTER" "")

(COMMAND "LINE" (LIST 0 (+ (CADR PT5) (* FACT 0.75)))

(LIST 0 (- (CADR PT6) (* FACT 0.75))) "")

(COMMAND "LINETYPE" "S" "CONTINUOUS" "")

 

(IF (= CHOIX 0)

(PROGN (SETVAR "DIMSE2" 1) ;ENLEVE LA DEUXIEME LIGNE D`EXTENSUON

(COMMAND "DIM" "HORI" PT2 PT5 (LIST 0 (+(CADR PT5) (* 0.5 FACT)))"")

(SETVAR "DIMSE2" 0) ;REMET LA DEUXIEME LIGNE D`EXTENSION

(COMMAND "HORI" PT1 PT2 (LIST 0 (- (CADR PT1) (* 0.5 FACT))) "")

(COMMAND "HORI" PT2 (LIST (* (CAR PT2) -1) (CADR PT2)) (LIST 0 (+ (CADR PT5) (* 1 FACT)))"")

(COMMAND "VERT" PT2 PT1 (LIST (+ (CAR PT2) (* 0.75 FACT)) 0)"")

(COMMAND "VERT" PT1 PT5 (LIST (+ (CAR PT2) (* 1.75 FACT)) 0)"")

(COMMAND "RADIUS" PT7 "" (* -1.5 FACT))

(COMMAND "RADIUS" PT8 "" (* -1.0 FACT))

(COMMAND "EXIT")

);FIN DU PROGN THEN

(PROGN

(COMMAND "DIM" "HORI" PT2 PTC (LIST 0 (- (CADR PT2) (* 0.5 FACT)))"")

(COMMAND "VERT" PT2 PTC (LIST (+ R1 (* 0.5 FACT)) 0)"")

(COMMAND "RADIUS" PT9 "" (* -2 FACT)) ;COTATION GRAND RAYON

(COMMAND "RADIUS" PT8 "" (* -0.8 FACT)) ;COTATION PETIT RAYON

(COMMAND "EXIT")

);FIN DU PROGN ELSE

);FIN DU IF

 

(COMMAND "REGENALL")

);FIN DE LA FONC. DEVCON

 

(DEFUN IDOD (ARG)

(INITGET 1 "I i E e")

(SETQ ANS (STRCASE (GETKWORD ARG)))

)

 

;===========================================================================

;LES 4 FONCTION SUIVANTES, CALCULENT LES POINTS POUR LE DESSIN DU CONE FORME

;===========================================================================

 

(DEFUN POINTEX ()

;---------------------------------------------------------------------------

; - FONCTION UTILISEE LORSQUE LA COTATION EST EXTERIEUR (LES 2 DIAMETRES)

; - POUR LA DEFINITION DES POINTS CONSULTER LE DOCUMENT...

;---------------------------------------------------------------------------

(SETQ PT1 (LIST (+ DX GRE) (+ DY (/ H -2)))

PT2 (LIST (+ DX PRE) (+ DY (/ H 2)))

PT3 (LIST (+ DX (- PRE (* EP (COS PHI)))) (+ DY (- (/ H 2) (* EP (SIN PHI)))))

PT4 (LIST (+ DX (- GRE (* EP (COS PHI)))) (+ DY (- (/ H -2) (* EP (SIN PHI)))))

PT5 (LIST DX (+ DY (/ H 2)))

PT7 (LIST DX (+ DY (- (/ H 2) (* EP (SIN PHI)))))

PT8 (LIST DX (+ DY (- (/ H -2) (* EP (SIN PHI)))))

)

)

(DEFUN POINTIN ()

;---------------------------------------------------------------------------

; - FONCTION UTILISEE LORSQUE LA COTATION EST INTERIEUR (LES 2 DIAMETRES)

; - POUR LA DEFINITION DES POINTS CONSULTER LE DOCUMENT...

;---------------------------------------------------------------------------

(SETQ PT1 (LIST (+ DX GRE) (+ DY (/ H -2)))

PT2 (LIST (+ DX PRE) (+ DY (/ H 2)))

PT3 (LIST (+ DX PRE (* EP (COS PHI))) (+ DY (/ H 2) (* EP (SIN PHI))))

PT4 (LIST (+ DX GRE (* EP (COS PHI))) (+ DY (/ H -2) (* EP (SIN PHI))))

PT5 (LIST DX (+ DY (/ H 2)))

PT7 (LIST DX (+ DY (/ H 2) (* EP (SIN PHI))))

PT8 (LIST DX (+ DY (/ H -2) ))

)

)

(DEFUN POINTINPEXG ()

;---------------------------------------------------------------------------

; - FONCTION UTILISEE LORSQUE LA COTATION EST EXTERIEURE GRAND DIA.

; ET INTERIEURE PETIT DIA.

; - POUR LA DEFINITION DES POINTS CONSULTER LE DOCUMENT...

;---------------------------------------------------------------------------

(SETQ PT1 (LIST (+ DX GRE) (+ DY (/ H -2)))

PT2 (LIST (+ DX PRE) (+ DY (- (/ H 2) (* (SIN PHI) EP))))

PT3 (LIST (+ DX PRE (* EP (COS PHI))) (+ DY (/ H 2) ))

PT4 (LIST (+ DX (- GRE (* EP (COS PHI)))) (+ DY (- (/ H -2) (* EP (SIN PHI)))))

PT5 (LIST DX (+ DY (- (/ H 2) (* EP (SIN PHI)))))

PT7 (LIST DX (+ DY (/ H 2) ))

PT8 (LIST DX (+ DY (- (/ H -2) (* EP (SIN PHI)))))

)

)

(DEFUN POINTEXPING ()

;---------------------------------------------------------------------------

; - FONCTION UTILISEE LORSQUE LA COTATION EST EXTERIEUR PETIT DIA.

; ET INTERIEUR GRAND DIA.

; - POUR LA DEFINITION DES POINTS CONSULTER LE DOCUMENT...

;---------------------------------------------------------------------------

(SETQ PT1 (LIST (+ DX GRE) (+ DY (/ H -2)))

PT2 (LIST (+ DX PRE) (+ DY (* EP (SIN PHI)) (/ H 2)))

PT3 (LIST (+ DX PRE (- (* EP (COS PHI)))) (+ DY (/ H 2)))

PT4 (LIST (+ DX GRE (* EP (COS PHI))) (+ DY (/ H -2) (* EP (SIN PHI))))

PT5 (LIST DX (+ DY (* EP (SIN PHI) (/ H 2))))

PT7 (LIST DX (+ DY (/ H 2)))

PT8 (LIST DX (+ DY (/ H -2)))

)

)

Edited by ROBP
Link to comment
Share on other sites

That should do it.

 

But the program did not operate at first, and there is still a problem with the radius cotation for the big circle.

 

Not a nice piece of software.

 

ymg

 

(defun c:devcon ()
;==============================================================================
; PROGRAMME PRINCIPALE ( DEVELOPPEMENT D'UN CONE )                             
;                                                                              
; VARIABLES UTILISEE... INVP, IVVG                                             
; NOTE: LE PROGRAMME CALCULE (PAR DEFAULT) LES DIMENSIONS DEVELOPPEES A PARTIR 
; DE LA COTATION EXTERIEURE DU CONE. SI LA COTATION EST DIFFERENTE, C'EST      
; ALORS QU'INTERVIENNENT LES VARRIABLES INVG ET INVP                           
;                                                                              
; INVP=1 LORSQUE LE PETIT DIAMETRE EST COTE A L'EXTERIEUR                      
; INVG=1 LORSQUE LE GRAND DIAMETRE EST COTE A L'EXTERIEUR                      
; INVP=-1 LORSQUE LE PETIT DIAMETRE EST COTE A L'INTERIEUR                     
; INVG=-1 LORSQUE LE GRAND DIAMETRE EST COTE A L'INTERIEUR                     
;==============================================================================
 (idod "\nLE PETIT DIAMETRE DU CONE EST-IL COTE A L'INTERIEUR <i> OU A L'EXTERIEUR <E> ? ")
 (if (or (= ans "e") (= ans "E"))
   (progn (setq invp 1)
          (setq pre (/ (getreal "\nPETIT DIAMETRE EXTERIEUR =...? ") 2))
   )
   (progn (setq invp -1)
          (setq pre (/ (getreal "\nPETIT DIAMETRE INTERIEUR =...? ") 2))
   )
 ) 
 (idod "\nLE GRAND DIAMETRE DU CONE EST-IL COTE A L'INTERIEUR <i> OU A L'EXTERIEUR <E> ? ")
 (if (or (= ans "e") (= ans "E"))
   (progn (setq invg 1)
          (setq gre (/ (getreal "\nGRAND DIAMETRE EXTERIEUR =...? ") 2))
   )
   (progn (setq invg -1)
          (setq gre (/ (getreal "\nGRAND DIAMETRE INTERIEUR =...? ") 2))
   )
 ) 
 (setq ep   (getreal "\nEPAISSEUR DE LA PLAQUE =...? ")
       nseg (getreal "\nNOMBRE DE SEGMENT =...? ")        
       hmin (getreal "\nHAUTEUR DU CONE PLUS PETIT CONE =...? ")
       hmax (getreal "\nHAUTEUR DU CONE PLUS GRAND CONE =...? ")
       incr 1          
 )
 (command "_LAYER" "M" "CONES" "")
 (setvar 'CLAYER "0")
 (command "_LAYER" "_F" "CONES" "")
 (while (<= hmin hmax)
    (setq h hmin)
    (dev pre gre ep nseg h)    ;FONCTION DE CALCUL ET DE DESSIN DU DEVELOPPEMENT   
    (dimcon pre gre ep nseg h) ;FONCTION DE DESSIN DES DIMENSIONS FINI DU CONE     
    (setq ss (ssget "_A"))     
    (command "_MOVE" ss "" (list 0 0) (list (* (- hmax hmin) (* (+ gre gre) 1.25)) 0))     
    (command "_CHPROP" ss "" "_LAYER" "CONES" "")
    (setq hmin (+ hmin incr))
 )
 (command "_LAYER" "_T" "CONES" "")
 (command "_ZOOM" "_ALL")
)


;***********************************************************************************
(defun dimcon (pre gre ep nseg h / ptw1 ptw2 f ph3 ph4)
 (setq gre (* 0.6 gre)  ; REDUCTION DE L'ECHELLE DE 'DIMCON'
       pre (* 0.6 pre)  ; MEME                              
       h   (* 0.6 h)    ; MEME                              
       ep  (* 0.6 ep)   ; MEME                              
       dx   0           ;  (* fact 1.5) ;POSITION HORIZONTALE DE 'DIMCON'   
       dy  (* fact -10) ; POSITION VERTICALE DE 'DIMCON'    
 )
 (if (and (= 1 invg) (= 1 invp))
   (pointex)
   (if (and (= -1 invg) (= -1 invp))
     (pointin)
     (if (and (= 1 invg) (= -1 invp))
       (pointinpexg)
       (pointexping)
     ) 
   ) 
 ) 

 (setq ptw2 (list (+ (car pt1) 2.5) (- (cadr pt4) 2.5))
       ptw1 (list (- (car pt5) 2.5) (+ (cadr pt5) 2.5))
       f    (* fact 0.04)  ;FACTEUR D'ESPACEMENT POUR LES HACHURES                 
       ph3  (list (- (car pt3) (* ep (cos phi))) (+ (cadr pt2) (* ep (sin phi))))
       ph4  (list (+ (car pt1) (* ep (cos phi))) (- (cadr pt4) (* ep (sin phi))))
 )
;----------------------------------------------------------------------------------
; PTW1 PTW2 POINTS DE REPERE POUR LA SELECTION D'OBJET LORS DES HACHURES           
; PH3 PH4 POINTS DE REPERE POUR LA SELECTION D'OBJET LORS DE LA COMMANDE "MIRROR"  
; F FACTEUR D'ESPACEMENT DES HACHURES                                              
;----------------------------------------------------------------------------------

 (if (> (* invg invp) 0)
   (command "PLINE" pt1 "W" "0" "" pt2 pt3 pt4 "C")
   (command "PLINE" pt1 "W" "0" "" pt4 pt2 pt3 "C")
 )
 (command "LINE" pt2 pt5 "")
 (command "LINE" pt3 pt7 "")
 (if (= invg 1)
   (command "LINE" pt4 pt8 "")
   (command "LINE" pt1 pt8 "")
 )
 (if (and (> (sin phi) 0.5) (< (sin phi) 0.866)) ; INCLINAISON DES HACHURES        
   (setq r 112.5)
   (setq r 90)
 )
 (setq cot1 (rtos (* 3.333 (- (car pt1) dx)) 5 4)
       cot2 (rtos (* 3.333 (- (car pt2) dx)) 5 4)
       cot3 (rtos (* 1.667 (- (cadr pt2) (cadr pt1))) 5 4)
 ) ;AJUSTEMENT DE LA COTATION D— AU FACTEUR D`ECHELLE (0.7)                        

 (command "HATCH" "ANSI32" f r (ssget "W" ph3 ph4) "")
 (command "_ZOOM" "_ALL")
 (command "MIRROR" "W" ptw1 ptw2 "" pt5 pt8 "")
 (command "DIM"
          "HORI"
          pt1
          (list (- (car pt1) (* gre 2)) (cadr pt1))
          (list (car pt4) (- (cadr pt4) (* fact 0.5)))
          cot1
 )
 (command "HORI"
          pt2
          (list (- (car pt2) (* 2 pre)) (cadr pt2))
          (list (car pt2) (+ (cadr pt2) (* 0.5 fact)))
          cot2
 )
 (command "VERT" pt1 pt2 (list (+ (car pt1) (* 0.5 fact)) (cadr pt1)) cot3)
 (command "EXIT")
 (command "REDRAW")
)


;***********************************************************************************

(defun dev (pre gre ep nseg h / pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 ptc r1 r2 he cl)
 (setq phie 0.5)
 (repeat 20 ;ITERATION POUR TROUVER LA PENTE EXACTE DU CONE
   (setq phi  (atan (/ (- (- gre (* ep 0.5 invg (cos phie)))
                          (- pre (* ep 0.5 invp (cos phie)))
                       )
                       h
                    )
              )
         phie phi
   )
 )
 (setq r1  (/ (- gre (* ep 0.5 invg (cos phi))) (sin phi))
       r2  (/ (- pre (* ep 0.5 invp (cos phi))) (sin phi))
       alp (/ (* pi (- gre (* (cos phi) invg ep 0.5))) r1 nseg)
 )
;----------------------------------------------------------------------------------
; AJUSEMENT DES DIMENSIONS DE L`ECRAN                                              
;                                                                                  
; HE HAUTEUR DE L`ECRAN                                                            
; FACT DIMENSION VALANT UN POUCE QUELQUE SOIT L`ECHELLE DU DESSIN                  
; PTC POSITION DU POINT CENTRALE DU DEVELOPPEMENT                                  
; CHOIX VARRIABLE INDIQUANT LE MODE DE COTATION                                    
;----------------------------------------------------------------------------------
 (if (< alp (/ pi 3))
   (progn
     (setq he    (* 2.5 r1 (sin alp))
           fact  (* 0.091 he)
           ptc   (list 0 (+ (* fact -2) r2 (/ (- r1 r2) 2)))
           choix 0
     )
   )
 )
 (if (and (>= alp (/ pi 3)) (<= phi (/ pi 2)))
   (progn
     (setq he    (* 3 r1)
           fact  (* 0.091 he)
           ptc   (list 0 (+ (* fact -2) (/ r1 2)))
           choix 0
     )
   )
 )
 (if (> alp (/ pi 2))
   (progn
     (setq he    (* 3.4 r1)
           fact  (* 0.091 he)
           ptc   (list 0 (* fact -3))
           choix 1
     )
   )
 ) 

 (setq plim1 (list (* he -0.75) (* he -1)) ;POINT LIMITE INFERIEUR GAUCHE          
       plim2 (list (* he 0.75) (* he 1))   ;POINT LIMITE SUPERIEUR DROIT           
;----------------------------------------------------------------------------------
; POUR LA DEFINITION DES POINTS PT1 A PT9,CONSULTER LE DOCUMENT...                 
;----------------------------------------------------------------------------------
       pt1   (list (* r2 (sin alp)) (- (* r2 (cos alp)) (cadr ptc)))
       pt2   (list (* r1 (sin alp)) (- (* r1 (cos alp)) (cadr ptc)))
       pt3   (list (* r1 (sin (* alp -1))) (- (* r1 (cos alp)) (cadr ptc)))
       pt4   (list (* r2 (sin (* alp -1))) (- (* r2 (cos alp)) (cadr ptc)))
       pt5   (list 0 (- r1 (cadr ptc)))
       pt6   (list 0 (- r2 (cadr ptc)))
       pt7   (list (* r1 (sin (/ alp 1.5)))
                   (- (* r1 (cos (/ alp 1.5))) (cadr ptc))
             )
       pt8   (list (* r2 (sin (* alp 0.))
                   (- (* r2 (cos (* alp 0.)) (cadr ptc))
             )
       pt9   (list (* r1 (sin (/ alp -4)))
                   (- (* r1 (cos (/ alp -4))) (cadr ptc))
             )
 )
;----------------------------------------------------------------------------------
; COMMANDES DE DESSIN...                                                           
;----------------------------------------------------------------------------------
 (command "LIMITS" plim1 plim2)
 (command "ZOOM" "ALL")
 (command "LINE" pt1 pt2 "")
 (command "LINE" pt4 pt3 "")
 (command "ARC" pt2 pt5 pt3)
 (command "ARC" pt1 pt6 pt4)
 (setvar "DIMTIX" 0)              ;PLACE LES DIM A L'INTERIEUR                     
 (setvar "DIMSCALE" (* 1.2 fact)) ;AJUSTE LA DIMENSION DES COTES                   
 (setvar "LTSCALE" (* 0.8 fact))  ;AJUSTE LE FACTEUR D`ECHELLE DES LIGNES          
 (setvar "LUNITS" 5)              ;CHOIX DU SYSTEME D`UNITE FRACTIONNAIRE          
 (command "LINETYPE" "S" "CENTER" "")
 (command "LINE"
          (list 0 (+ (cadr pt5) (* fact 0.75)))
          (list 0 (- (cadr pt6) (* fact 0.75)))
          ""
 )
 (command "LINETYPE" "S" "CONTINUOUS" "")

 (if (= choix 0)
   (progn
          (setvar "DIMSE2" 1)     ;ENLEVE LA DEUXIEME LIGNE D`EXTENSUON            
          (command "DIM" "HORI" pt2 pt5 (list 0 (+ (cadr pt5) (* 0.5 fact))) "")
          (setvar "DIMSE2" 0)     ;REMET LA DEUXIEME LIGNE D`EXTENSION            
          (command "HORI" pt1 pt2 (list 0 (- (cadr pt1) (* 0.5 fact))) "")
          (command "HORI"
                   pt2
                   (list (* (car pt2) -1) (cadr pt2))
                   (list 0 (+ (cadr pt5) (* 1 fact)))
                   ""
          )
          (command "VERT" pt2 pt1 (list (+ (car pt2) (* 0.75 fact)) 0) "")
          (command "VERT" pt1 pt5 (list (+ (car pt2) (* 1.75 fact)) 0) "")
          (command "RADIUS"  "_NEAREST" pt7 "" (list (car pt7) (- (cadr pt7) (* 1.5 fact))))
          (command "RADIUS"  "_NEAREST" pt8 "" (list (car pt8) (- (cadr pt8) (* 1.0 fact))))
          (command "EXIT")
   ) 
   (progn
     (command "DIM" "HORI" pt2 ptc (list 0 (- (cadr pt2) (* 0.5 fact))) "")
     (command "VERT" pt2 ptc (list (+ r1 (* 0.5 fact)) 0) "")
     (command "RADIUS" pt9 "" (* -2 fact))       ; COTATION GRAND RAYON                
     (command "RADIUS" pt8 "" (* -0.8 fact))     ; COTATION PETIT RAYON                
     (command "EXIT")
   ) 
 ) 

 (command "REGENALL")
) 

(defun idod (arg)
 (initget 1 "I i E e")
 (setq ans (strcase (getkword arg)))
)

;==================================================================================
;LES 4 FONCTION SUIVANTES, CALCULENT LES POINTS POUR LE DESSIN DU CONE FORME       
;==================================================================================

(defun pointex ()
;----------------------------------------------------------------------------------
; - FONCTION UTILISEE LORSQUE LA COTATION EST EXTERIEUR (LES 2 DIAMETRES)          
; - POUR LA DEFINITION DES POINTS CONSULTER LE DOCUMENT...                         
;----------------------------------------------------------------------------------
 (setq pt1 (list (+ dx gre) (+ dy (/ h -2)))
       pt2 (list (+ dx pre) (+ dy (/ h 2)))
       pt3 (list (+ dx (- pre (* ep (cos phi)))) (+ dy (- (/ h 2) (* ep (sin phi)))))
       pt4 (list (+ dx (- gre (* ep (cos phi)))) (+ dy (- (/ h -2) (* ep (sin phi)))))
       pt5 (list dx (+ dy (/ h 2)))
       pt7 (list dx (+ dy (- (/ h 2) (* ep (sin phi)))))
       pt8 (list dx (+ dy (- (/ h -2) (* ep (sin phi)))))
 )
)
(defun pointin ()
;----------------------------------------------------------------------------------
; - FONCTION UTILISEE LORSQUE LA COTATION EST INTERIEUR (LES 2 DIAMETRES)          
; - POUR LA DEFINITION DES POINTS CONSULTER LE DOCUMENT...                         
;----------------------------------------------------------------------------------
 (setq pt1 (list (+ dx gre) (+ dy (/ h -2)))
       pt2 (list (+ dx pre) (+ dy (/ h 2)))
       pt3 (list (+ dx pre (* ep (cos phi))) (+ dy (/ h 2) (* ep (sin phi))))
       pt4 (list (+ dx gre (* ep (cos phi))) (+ dy (/ h -2) (* ep (sin phi))))
       pt5 (list dx (+ dy (/ h 2)))
       pt7 (list dx (+ dy (/ h 2) (* ep (sin phi))))
       pt8 (list dx (+ dy (/ h -2)))
 )
)
(defun pointinpexg ()
;----------------------------------------------------------------------------------
; - FONCTION UTILISEE LORSQUE LA COTATION EST EXTERIEURE GRAND DIA.                
;   ET INTERIEURE PETIT DIA.                                                       
; - POUR LA DEFINITION DES POINTS CONSULTER LE DOCUMENT...                         
;----------------------------------------------------------------------------------
 (setq pt1 (list (+ dx gre) (+ dy (/ h -2)))
       pt2 (list (+ dx pre) (+ dy (- (/ h 2) (* (sin phi) ep))))
       pt3 (list (+ dx pre (* ep (cos phi))) (+ dy (/ h 2)))
       pt4 (list (+ dx (- gre (* ep (cos phi)))) (+ dy (- (/ h -2) (* ep (sin phi)))))
       pt5 (list dx (+ dy (- (/ h 2) (* ep (sin phi)))))
       pt7 (list dx (+ dy (/ h 2)))
       pt8 (list dx (+ dy (- (/ h -2) (* ep (sin phi)))))
 )
)
(defun pointexping ()
;----------------------------------------------------------------------------------
; - FONCTION UTILISEE LORSQUE LA COTATION EST EXTERIEUR PETIT DIA.                 
;   ET INTERIEUR GRAND DIA.                                                        
; - POUR LA DEFINITION DES POINTS CONSULTER LE DOCUMENT...                         
;----------------------------------------------------------------------------------
 (setq pt1 (list (+ dx gre) (+ dy (/ h -2)))
       pt2 (list (+ dx pre) (+ dy (* ep (sin phi)) (/ h 2)))
       pt3 (list (+ dx pre (- (* ep (cos phi)))) (+ dy (/ h 2)))
       pt4 (list (+ dx gre (* ep (cos phi))) (+ dy (/ h -2) (* ep (sin phi))))
       pt5 (list dx (+ dy (* ep (sin phi) (/ h 2))))
       pt7 (list dx (+ dy (/ h 2)))
       pt8 (list dx (+ dy (/ h -2)))
 )
)

Link to comment
Share on other sites

Thank you ymg how about if you could remove the dimensions and the elvetion generated view

because for now theres is no need for the above i delete them .

The reason for the lisp is only to be able to get the exact square footage of each diemnsions and then put it in excel data base and generate the total weight of a vessell i already been working on the file for the past year and already have listed 46000 item with drop down menu and select items.

The only thing left to add is the conical parts.

 

Unless you can come up with the formula derived from the lisp for excell i will make it work.

Link to comment
Share on other sites

Robp,

 

Here is a very fast hack. I rem'd out the dimension part, turn your segment into a polyline and added text for the area of the segment and the whole cone.

 

However when I check the output against the formula

 

attachment.php?attachmentid=45878&stc=1&d=1387740527

 

There are small differences, even if I go to the average between the inside and the outside diameters.

 

It seems to me that it would be simpler for you to use the formula straight into Excel.

If you have Large Diam. in Column A , Small Diam. in Column B and Height in Column C, then the EXCEL formula would be:

=PI()*((B2/2)+(A2/2))*SQRT((C2*C2)+(((A2-B2)/2))*((A2-B2)/2)) 

 

Anyway here is the Autolisp Code modified:

(defun c:devcon ()
;==============================================================================
; PROGRAMME PRINCIPALE ( DEVELOPPEMENT D'UN CONE )                             
;                                                                              
; VARIABLES UTILISEE... INVP, IVVG                                             
; NOTE: LE PROGRAMME CALCULE (PAR DEFAULT) LES DIMENSIONS DEVELOPPEES A PARTIR 
; DE LA COTATION EXTERIEURE DU CONE. SI LA COTATION EST DIFFERENTE, C'EST      
; ALORS QU'INTERVIENNENT LES VARRIABLES INVG ET INVP                           
;                                                                              
; INVP=1 LORSQUE LE PETIT DIAMETRE EST COTE A L'EXTERIEUR                      
; INVG=1 LORSQUE LE GRAND DIAMETRE EST COTE A L'EXTERIEUR                      
; INVP=-1 LORSQUE LE PETIT DIAMETRE EST COTE A L'INTERIEUR                     
; INVG=-1 LORSQUE LE GRAND DIAMETRE EST COTE A L'INTERIEUR                     
;==============================================================================
 (idod "\nLE PETIT DIAMETRE DU CONE EST-IL COTE A L'INTERIEUR <i> OU A L'EXTERIEUR <E> ? ")
 (if (or (= ans "e") (= ans "E"))
   (progn (setq invp 1)
          (setq pre (/ (getreal "\nPETIT DIAMETRE EXTERIEUR =...? ") 2))
   )
   (progn (setq invp -1)
          (setq pre (/ (getreal "\nPETIT DIAMETRE INTERIEUR =...? ") 2))
   )
 ) 
 (idod "\nLE GRAND DIAMETRE DU CONE EST-IL COTE A L'INTERIEUR <i> OU A L'EXTERIEUR <E> ? ")
 (if (or (= ans "e") (= ans "E"))
   (progn (setq invg 1)
          (setq gre (/ (getreal "\nGRAND DIAMETRE EXTERIEUR =...? ") 2))
   )
   (progn (setq invg -1)
          (setq gre (/ (getreal "\nGRAND DIAMETRE INTERIEUR =...? ") 2))
   )
 ) 
 (setq ep   (getreal "\nEPAISSEUR DE LA PLAQUE =...? ")
       nseg (getreal "\nNOMBRE DE SEGMENT =...? ")        
       hmin (getreal "\nHAUTEUR DU CONE PLUS PETIT CONE =...? ")
       hmax (getreal "\nHAUTEUR DU CONE PLUS GRAND CONE =...? ")
       incr 1          
 )
 (command "_LAYER" "M" "CONES" "")
 (setvar 'CLAYER "0")
 (command "_LAYER" "_F" "CONES" "")
 (while (<= hmin hmax)
    (setq h hmin)
    (dev pre gre ep nseg h)    ;FONCTION DE CALCUL ET DE DESSIN DU DEVELOPPEMENT       
    (setq ss (ssget "_A"))     
    (command "_MOVE" ss "" (list 0 0) (list (* (- hmax hmin) (* (+ gre gre) 1.25)) 0))     
    (command "_CHPROP" ss "" "_LAYER" "CONES" "")
    (setq hmin (+ hmin incr))
 )
 (command "_LAYER" "_T" "CONES" "")
 (command "_ZOOM" "_ALL")
)

;***********************************************************************************

(defun dev (pre gre ep nseg h / );pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 ptc r1 r2 he cl)
 (setq phie 0.5)
 (repeat 20 ;ITERATION POUR TROUVER LA PENTE EXACTE DU CONE
   (setq phi  (atan (/ (- (- gre (* ep 0.5 invg (cos phie)))
                          (- pre (* ep 0.5 invp (cos phie)))
                       )
                       h
                    )
              )
         phie phi
   )
 )
 (setq r1  (/ (- gre (* ep 0.5 invg (cos phi))) (sin phi))
       r2  (/ (- pre (* ep 0.5 invp (cos phi))) (sin phi))
       alp (/ (* pi (- gre (* (cos phi) invg ep 0.5))) r1 nseg)
 )
;----------------------------------------------------------------------------------
; AJUSEMENT DES DIMENSIONS DE L`ECRAN                                              
;                                                                                  
; HE HAUTEUR DE L`ECRAN                                                            
; FACT DIMENSION VALANT UN POUCE QUELQUE SOIT L`ECHELLE DU DESSIN                  
; PTC POSITION DU POINT CENTRALE DU DEVELOPPEMENT                                  
; CHOIX VARRIABLE INDIQUANT LE MODE DE COTATION                                    
;----------------------------------------------------------------------------------
 (if (< alp (/ pi 3))
   (progn
     (setq he    (* 2.5 r1 (sin alp))
           fact  (* 0.091 he)
           ptc   (list 0 (+ (* fact -2) r2 (/ (- r1 r2) 2)))
           choix 0
     )
   )
 )
 (if (and (>= alp (/ pi 3)) (<= phi (/ pi 2)))
   (progn
     (setq he    (* 3 r1)
           fact  (* 0.091 he)
           ptc   (list 0 (+ (* fact -2) (/ r1 2)))
           choix 0
     )
   )
 )
 (if (> alp (/ pi 2))
   (progn
     (setq he    (* 3.4 r1)
           fact  (* 0.091 he)
           ptc   (list 0 (* fact -3))
           choix 1
     )
   )
 ) 

 (setq plim1 (list (* he -0.75) (* he -1)) ;POINT LIMITE INFERIEUR GAUCHE          
       plim2 (list (* he 0.75) (* he 1))   ;POINT LIMITE SUPERIEUR DROIT           
;----------------------------------------------------------------------------------
; POUR LA DEFINITION DES POINTS PT1 A PT9,CONSULTER LE DOCUMENT...                 
;----------------------------------------------------------------------------------
       pt1   (list (* r2 (sin alp)) (- (* r2 (cos alp)) (cadr ptc)))
       pt2   (list (* r1 (sin alp)) (- (* r1 (cos alp)) (cadr ptc)))
       pt3   (list (* r1 (sin (* alp -1))) (- (* r1 (cos alp)) (cadr ptc)))
       pt4   (list (* r2 (sin (* alp -1))) (- (* r2 (cos alp)) (cadr ptc)))
       pt5   (list 0 (- r1 (cadr ptc)))
       pt6   (list 0 (- r2 (cadr ptc)))
       pt7   (list (* r1 (sin (/ alp 1.5)))
                   (- (* r1 (cos (/ alp 1.5))) (cadr ptc))
             )
       pt8   (list (* r2 (sin (* alp 0.))
                   (- (* r2 (cos (* alp 0.)) (cadr ptc))
             )
       pt9   (list (* r1 (sin (/ alp -4)))
                   (- (* r1 (cos (/ alp -4))) (cadr ptc))
             )
 )
;----------------------------------------------------------------------------------
; COMMANDES DE DESSIN...                                                           
;----------------------------------------------------------------------------------
 (command "LIMITS" plim1 plim2)
 (command "ZOOM" "ALL")
 (command "LINE" pt1 pt2 "")
 (command "LINE" pt4 pt3 "")
 (command "ARC" pt2 pt5 pt3)
 (command "ARC" pt1 pt6 pt4)
 (command "_PEDIT" (entlast) "Y" "_J" (ssget "_ALL") "" "")
 (command "_.area" "_o" (entlast))
       
 (setq segarea (getvar "area")
       conarea (* segarea nseg)
 )
 (command "_TEXT" "_J" "_TC" (list 0 (- (cadr pt6) (* fact 0.75))) 0.5 0 (strcat " Seg: " (rtos segarea 2 2) " sq. inches" ""))
 (command "_TEXT" "_J" "_TC" (list 0 (- (cadr pt6) (* fact 0.75) 1)) 0.5 0 (strcat "Cone: " (rtos conarea 2 2) " sq. inches" ""))
 ;(setvar "DIMTIX" 0)              ;PLACE LES DIM A L'INTERIEUR                     
 ;(setvar "DIMSCALE" (* 1.2 fact)) ;AJUSTE LA DIMENSION DES COTES                   
 ;(setvar "LTSCALE" (* 0.8 fact))  ;AJUSTE LE FACTEUR D`ECHELLE DES LIGNES          
 ;(setvar "LUNITS" 5)              ;CHOIX DU SYSTEME D`UNITE FRACTIONNAIRE          
 ;(command "LINETYPE" "S" "CENTER" "")
 ;(command "LINE"
 ;         (list 0 (+ (cadr pt5) (* fact 0.75)))
 ;         (list 0 (- (cadr pt6) (* fact 0.75)))
 ;         ""
 
 ;(command "LINETYPE" "S" "CONTINUOUS" "")

 ;(if (= choix 0)
 ;  (progn
 ;         (setvar "DIMSE2" 1)     ;ENLEVE LA DEUXIEME LIGNE D`EXTENSUON            
 ;         (command "DIM" "HORI" pt2 pt5 (list 0 (+ (cadr pt5) (* 0.5 fact))) "")
 ;         (setvar "DIMSE2" 0)     ;REMET LA DEUXIEME LIGNE D`EXTENSION            
 ;         (command "HORI" pt1 pt2 (list 0 (- (cadr pt1) (* 0.5 fact))) "")
          ;(command "HORI"
          ;         pt2
          ;         (list (* (car pt2) -1) (cadr pt2))
          ;         (list 0 (+ (cadr pt5) (* 1 fact)))
          ;         ""
          
          ;(command "VERT" pt2 pt1 (list (+ (car pt2) (* 0.75 fact)) 0) "")
          ;(command "VERT" pt1 pt5 (list (+ (car pt2) (* 1.75 fact)) 0) "")
          ;(command "RADIUS"  "_NEAREST" pt7 "" (list (car pt7) (- (cadr pt7) (* 1.5 fact))))
          ;(command "RADIUS"  "_NEAREST" pt8 "" (list (car pt8) (- (cadr pt8) (* 1.0 fact))))
          ;(command "EXIT")
;   ) 
;   (progn
;     (command "DIM" "HORI" pt2 ptc (list 0 (- (cadr pt2) (* 0.5 fact))) "")
;     (command "VERT" pt2 ptc (list (+ r1 (* 0.5 fact)) 0) "")
;     (command "RADIUS" pt9 "" (* -2 fact))       ; COTATION GRAND RAYON                
;     (command "RADIUS" pt8 "" (* -0.8 fact))     ; COTATION PETIT RAYON                
;    (command "EXIT")
;   ) 
; ) 

 (command "REGENALL")
) 

(defun idod (arg)
 (initget 1 "I i E e")
 (setq ans (strcase (getkword arg)))
)

;==================================================================================
;LES 4 FONCTION SUIVANTES, CALCULENT LES POINTS POUR LE DESSIN DU CONE FORME       
;==================================================================================

(defun pointex ()
;----------------------------------------------------------------------------------
; - FONCTION UTILISEE LORSQUE LA COTATION EST EXTERIEUR (LES 2 DIAMETRES)          
; - POUR LA DEFINITION DES POINTS CONSULTER LE DOCUMENT...                         
;----------------------------------------------------------------------------------
 (setq pt1 (list (+ dx gre) (+ dy (/ h -2)))
       pt2 (list (+ dx pre) (+ dy (/ h 2)))
       pt3 (list (+ dx (- pre (* ep (cos phi)))) (+ dy (- (/ h 2) (* ep (sin phi)))))
       pt4 (list (+ dx (- gre (* ep (cos phi)))) (+ dy (- (/ h -2) (* ep (sin phi)))))
       pt5 (list dx (+ dy (/ h 2)))
       pt7 (list dx (+ dy (- (/ h 2) (* ep (sin phi)))))
       pt8 (list dx (+ dy (- (/ h -2) (* ep (sin phi)))))
 )
)
(defun pointin ()
;----------------------------------------------------------------------------------
; - FONCTION UTILISEE LORSQUE LA COTATION EST INTERIEUR (LES 2 DIAMETRES)          
; - POUR LA DEFINITION DES POINTS CONSULTER LE DOCUMENT...                         
;----------------------------------------------------------------------------------
 (setq pt1 (list (+ dx gre) (+ dy (/ h -2)))
       pt2 (list (+ dx pre) (+ dy (/ h 2)))
       pt3 (list (+ dx pre (* ep (cos phi))) (+ dy (/ h 2) (* ep (sin phi))))
       pt4 (list (+ dx gre (* ep (cos phi))) (+ dy (/ h -2) (* ep (sin phi))))
       pt5 (list dx (+ dy (/ h 2)))
       pt7 (list dx (+ dy (/ h 2) (* ep (sin phi))))
       pt8 (list dx (+ dy (/ h -2)))
 )
)
(defun pointinpexg ()
;----------------------------------------------------------------------------------
; - FONCTION UTILISEE LORSQUE LA COTATION EST EXTERIEURE GRAND DIA.                
;   ET INTERIEURE PETIT DIA.                                                       
; - POUR LA DEFINITION DES POINTS CONSULTER LE DOCUMENT...                         
;----------------------------------------------------------------------------------
 (setq pt1 (list (+ dx gre) (+ dy (/ h -2)))
       pt2 (list (+ dx pre) (+ dy (- (/ h 2) (* (sin phi) ep))))
       pt3 (list (+ dx pre (* ep (cos phi))) (+ dy (/ h 2)))
       pt4 (list (+ dx (- gre (* ep (cos phi)))) (+ dy (- (/ h -2) (* ep (sin phi)))))
       pt5 (list dx (+ dy (- (/ h 2) (* ep (sin phi)))))
       pt7 (list dx (+ dy (/ h 2)))
       pt8 (list dx (+ dy (- (/ h -2) (* ep (sin phi)))))
 )
)
(defun pointexping ()
;----------------------------------------------------------------------------------
; - FONCTION UTILISEE LORSQUE LA COTATION EST EXTERIEUR PETIT DIA.                 
;   ET INTERIEUR GRAND DIA.                                                        
; - POUR LA DEFINITION DES POINTS CONSULTER LE DOCUMENT...                         
;----------------------------------------------------------------------------------
 (setq pt1 (list (+ dx gre) (+ dy (/ h -2)))
       pt2 (list (+ dx pre) (+ dy (* ep (sin phi)) (/ h 2)))
       pt3 (list (+ dx pre (- (* ep (cos phi)))) (+ dy (/ h 2)))
       pt4 (list (+ dx gre (* ep (cos phi))) (+ dy (/ h -2) (* ep (sin phi))))
       pt5 (list dx (+ dy (* ep (sin phi) (/ h 2))))
       pt7 (list dx (+ dy (/ h 2)))
       pt8 (list dx (+ dy (/ h -2)))
 )
)

surfcone.gif

Edited by ymg3
Link to comment
Share on other sites

ROBP,

 

Since ultimately what you are after is the weight. Wouldn't it be better to compute the volume of the trucated cone

with formula: V = 1/3 pi (r1r1 + r1r2 + r2r2) h

 

You do it with Outside radius then with Inside Radius.

Vor -Vir = Volume of trucated cone.

 

ymg

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...