[求助]下面的程序在角度判断上有BUG,请高手帮忙看看。
下面的程序在角度判断上有BUG,请高手帮忙看看。 ;管线绘制 ZZXXQQ 2004.11.11(DEFUN C:DRAWPIPE ()
(SETVAR "CMDECHO" 0)
(SETQ OLDOS (GETVAR "OSMODE"))
(SETVAR "OSMODE" 0)
(SETQ D (GETDIST "\n输入管子外径 D= <20>")
D (IF (NOT D) 20 D)
D5 (* D 0.5)
R (GETREAL (STRCAT "\n输入管子弯曲半径 <大于" (RTOS D5 2 1) "> R= "))
R (IF (NOT R) D5 R)
R (IF (> D5 R) D5 R)
RS (- R D5)
RD (+ R D5)
PT (GETPOINT "\n管线起点 <0,0>: ")
PT (IF (/= PT nil) PT (LIST 0 0))
AL1 (/ PI 2) AL2 (- AL1)
PT1 (GETPOINT PT "\n管线下一点 :")
A (ANGLE PT PT1) A1 (+ A AL1) A2 (+ A AL2)
DS (DISTANCE PT1 PT)
P1 (POLAR PT A1 D5)
P2 (POLAR PT A2 D5)
P3 (POLAR P1 A (- DS R))
P4 (POLAR P2 A (- DS R))
PT PT1)
(COMMAND "LINE" P3 P1 "") (SETQ S1 (ENTLAST))
(COMMAND "LINE" P1 P2 P4 "") (SETQ S2 (ENTLAST))
(WHILE (SETQ PT1 (GETPOINT PT "\n管线下一点 :"))
(SETQ A0 (ANGLE PT PT1) A1 (+ A0 AL1) A2 (+ A0 AL2)
DS (DISTANCE PT1 PT)
P1 (POLAR PT A1 D5)
P2 (POLAR PT A2 D5)
P3 (POLAR P1 A0 (- DS R))
P4 (POLAR P2 A0 (- DS R))
AA1 (IF (> A PI) (- A PI PI) A)
AA (IF (> A0 PI) (- A0 PI PI) A0))
(COMMAND "LINE" P1 P3 "") (SETQ S3 (ENTLAST))
(COMMAND "LINE" P2 P4 "") (SETQ S4 (ENTLAST))
(IF (> AA1 AA)
(COMMAND "FILLET" "R" RS "FILLET" S2 S4 "FILLET" "R" RD "FILLET" S1 S3)
(COMMAND "FILLET" "R" RD "FILLET" S2 S4 "FILLET" "R" RS "FILLET" S1 S3)
)
(SETQ A A0 PT PT1 S1 S3 S2 S4)
)
(SETQ P1 (POLAR P3 A0 R) P2 (POLAR P4 A0 R))
(COMMAND "STRETCH" "C" P3 P3 "" P3 P1 "STRETCH" "C" P4 P4 "" P4 P2)
(COMMAND "LINE" P1 P2 "")
(SETVAR "OSMODE" OLDOS)
(SETVAR "CMDECHO" 1)
(PRINC)
)
(PROMPT "\nDRAWPIPE 加载成功。")
(PRINC)
说说在什么情况下,会出现什么BUG吧,也方便一下别人... 如下图画到红圈处内外倒角反了
(DEFUN C:test ()<BR> (SETvar "CMDECHO" 0)<BR> (SETQ OLDOS (GETvar "OSMODE"))<BR> (SETvar "OSMODE" 0)<BR> (SETQ D (GETDIST "\n?入管子外? D= <20>")<BR> D (IF (NOT D) 20 D)<BR> D5 (* D 0.5)<BR> R (GETREAL (STRCAT "\n?入管子?曲半? <大于" (RTOS D5 2 1) "> R= "))<BR> R (IF (NOT R) D5 R)<BR> R (IF (> D5 R) D5 R)<BR> RS (- R D5)<BR> RD (+ R D5)<BR> PT (GETPOINT "\n管?起? <0,0>: ")<BR> PT (IF (/= PT nil) PT (LIST 0 0))<BR> AL1 (/ PI 2) AL2 (- AL1)<BR> PT1 (GETPOINT PT "\n管?下一? :")<BR> A (ANGLE PT PT1) A1 (+ A AL1) A2 (+ A AL2)<BR> DS (DISTANCE PT1 PT)<BR> P1 (POLAR PT A1 D5)<BR> P2 (POLAR PT A2 D5)<BR> P3 (POLAR P1 A (- DS R))<BR> FIR P3<BR> P4 (POLAR P2 A (- DS R))<BR> PT PT1)<BR> (COMMAND "LINE" P3 P1 "") (SETQ S1 (ENTLAST))<BR> (COMMAND "LINE" P1 P2 P4 "") (SETQ S2 (ENTLAST))<BR> (WHILE (SETQ PT1 (GETPOINT PT "\n管?下一? :"))<BR> (SETQ A0 (ANGLE PT PT1) A1 (+ A0 AL1) A2 (+ A0 AL2)<BR> DS (DISTANCE PT1 PT)<BR> P1 (POLAR PT A1 D5)<BR> P2 (POLAR PT A2 D5)<BR> P3 (POLAR P1 A0 (- DS R))<BR> P4 (POLAR P2 A0 (- DS R)))<BR> (COMMAND "LINE" P1 P3 "") (SETQ S3 (ENTLAST))<BR> (COMMAND "LINE" P2 P4 "") (SETQ S4 (ENTLAST))<BR> (if(>(distance p1 FIR) (distance p2 FIR))<BR> (COMMAND "FILLET" "R" RS "FILLET" S2 S4 "FILLET" "R" RD "FILLET" S1 S3)<BR> (COMMAND "FILLET" "R" RD "FILLET" S2 S4 "FILLET" "R" RS "FILLET" S1 S3))<BR> (SETQ A A0 PT PT1 S1 S3 S2 S4 FIR P3)<BR> )<BR> (SETQ P1 (POLAR P3 A0 R) P2 (POLAR P4 A0 R))<BR> (COMMAND "STRETCH" "C" P3 P3 "" P3 P1 "STRETCH" "C" P4 P4 "" P4 P2)<BR> (COMMAND "LINE" P1 P2 "")<BR> (SETvar "OSMODE" OLDOS)<BR> (SETvar "CMDECHO" 1)<BR> (PRINC)<BR>)<BR>(PROMPT "\nDRAWPIPE 加?成功。")<BR>(PRINC)<BR> 太弯(现在夹角很小时)也会不行, 慢慢看看先
十分感谢BDYCAD。送花一朵。 高手请高手,高高手啊~ 楼上的家伙还真的会挖,什么年代的帖子还拿出来,,,,,,,,无语中! 没有捕捉???~~ 很好的程序,谢谢大师们!
页:
[1]