1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > lisp 相贯线展开_一个画两管相接相贯线的程序 - AutoLISP/Visual LISP 编程技术

lisp 相贯线展开_一个画两管相接相贯线的程序 - AutoLISP/Visual LISP 编程技术

时间:2020-04-01 18:16:14

相关推荐

lisp 相贯线展开_一个画两管相接相贯线的程序 - AutoLISP/Visual LISP 编程技术

下面的程序也可以画管子的相贯线,输入的参数D为大管直径,d为小管直径(可以等于D),B为两管的夹角,插入点为小管中心线与大管外壁的交点。该程序在R14上调试通过。

(DEFUN C:XGX ()

(SETQ OLDOS (GETVAR "OSMODE"))

(SETVAR "OSMODE" 0)

(SETVAR "CMDECHO" 0)

(SETQ D (GETDIST "\nDiamter of D= ")

DS (GETDIST "\nDiamter of d= "))

(WHILE (> DS D)

(PROMPT "\nThe d must less than D! ")

(SETQ DS (GETDIST "\nReinter Diamter of d= "))

)

(SETQ B (GETREAL "\nAngle of the pipe (DEG) B= <90> "))

(WHILE (= B 0)

(PROMPT "\nThe angle B must begger than 0")

(SETQ B (GETREAL "\nAngle of the pipe (DEG) B= <90> "))

)

(SETQ B (/ (* (IF (= B nil) 90 0) PI) 180)

ANG (- B PI)

A 0 TA (/ (* 5 PI) 180)

RS (* DS 0.5) R (* D 0.5)

PT (GETPOINT "\nPipe Conect Point : ")

PT1 (POLAR PT 0 (/ RS (SIN B))))

(IF (EQUAL D DS 1E-5) (PROGN

(SETQ PT2 (POLAR PT ANG (/ RS (SIN B))) PT3 (POLAR PT PI (/ RS (SIN B))))

(COMMAND "PLINE" PT1 PT2 PT3 "")

) (PROGN

(SETQ A (+ A TA) RA (* (SIN A) RS) RB (* (COS A) RS))

(COMMAND "PLINE" PT1 "A")

(SETQ PT2 (POLAR (POLAR PT 0 (/ RB (SIN B))) ANG (/ (- R (SQRT (- (* R R) (* RA RA)))) (SIN B))))

(COMMAND "S" PT2)

(REPEAT 35

(SETQ A (+ A TA) RA (* (SIN A) RS) RB (/ (* (COS A) RS) (SIN B))

PT2 (POLAR (POLAR PT 0 RB) ANG (/ (- R (SQRT (- (* R R) (* RA RA)))) (SIN B))))

(COMMAND PT2)

)

(COMMAND "")

))

(SETVAR "OSMODE" OLDOS)

(SETVAR "CMDECHO" 1)

(PRINC)

)

(DEFUN C:XGX2 ()

(SETQ OLDOS (GETVAR "OSMODE"))

(SETVAR "OSMODE" 0)

(SETVAR "CMDECHO" 0)

(SETQ D (GETDIST "\nDiamter of D= ")

DS (GETDIST "\nDiamter of d= "))

(WHILE (> DS D)

(PROMPT "\nThe d must less than D! ")

(SETQ DS (GETDIST "\nReinter Diamter of d= "))

)

(SETQ B (GETREAL "\nAngle of the pipe (DEG) B= <90> "))

(WHILE (= B 0)

(PROMPT "\nThe angle B must begger than 0")

(SETQ B (GETREAL "\nAngle of the pipe (DEG) B= <90> "))

)

(PROMPT "\nEnter Length of small pipe L=

(PRINC (* 3 DS))

(SETQ L (GETDIST "> "))

(SETQ L (IF (= L nil) (* 3 DS) L))

(SETQ B (/ (* (IF (= B nil) 90 B) PI) 180)

ANG (- B PI) AL1 (/ PI 2) AL2 (- AL1)

A 0 TA (/ (* 5 PI) 180)

RS (* DS 0.5) R (* D 0.5)

LSTEP (* TA RS)

PT (GETPOINT "\nInsert Point : ")

PT1 (POLAR PT PI (* RS PI))

PT2 (POLAR PT1 AL1 L))

(SETQ A (+ A TA) RA (* (SIN A) RS))

(COMMAND "PLINE" PT2 "A")

(SETQ PT3 (POLAR PT2 0 LSTEP)

PT2 (POLAR PT3 AL1 (/ (- R (SQRT (- (* R R) (* RA RA)))) (SIN B))))

(COMMAND "S" PT2)

(REPEAT 71

(SETQ A (+ A TA) RA (* (SIN A) RS))

PT3 (POLAR PT3 0 LSTEP)

PT2 (POLAR PT3 AL1 (/ (- R (SQRT (- (* R R) (* RA RA)))) (SIN B))))

(COMMAND PT2)

)

(SETQ PT3 (POLAR PT3 AL2 L))

(COMMAND "L" PT3 PT1 "C")

(SETVAR "OSMODE" OLDOS)

(SETVAR "CMDECHO" 1)

(PRINC)

)

lisp 相贯线展开_一个画两管相接相贯线的程序 - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - Powered by Discuz!...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。