ZZXXQQ 发表于 2004-11-11 11:37:00

[求助]下面的程序在角度判断上有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)

meflying 发表于 2004-11-11 12:04:00

说说在什么情况下,会出现什么BUG吧,也方便一下别人...

ZZXXQQ 发表于 2004-11-11 12:23:00

如下图画到红圈处内外倒角反了


       

BDYCAD 发表于 2004-11-11 13:04:00

(DEFUN C:test ()<BR>        (SETvar "CMDECHO" 0)<BR>        (SETQ OLDOS (GETvar "OSMODE"))<BR>        (SETvar "OSMODE" 0)<BR>        (SETQ D (GETDIST "\n?入管子外? D= &lt;20&gt;")<BR>                                               D (IF (NOT D) 20 D)<BR>                                               D5 (* D 0.5)<BR>                                               R (GETREAL (STRCAT "\n?入管子?曲半? &lt;大于" (RTOS D5 2 1) "&gt; R= "))<BR>                                               R (IF (NOT R) D5 R)<BR>                                               R (IF (&gt; D5 R) D5 R)<BR>                                               RS (- R D5)<BR>                                               RD (+ R D5)<BR>                                               PT (GETPOINT "\n管?起? &lt;0,0&gt;: ")<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(&gt;(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 发表于 2004-11-11 13:06:00

太弯(现在夹角很小时)也会不行, 慢慢看看先


ZZXXQQ 发表于 2004-11-11 13:19:00

十分感谢BDYCAD。送花一朵。

crazylsp 发表于 2011-1-18 16:08:58

高手请高手,高高手啊~

danxingpen 发表于 2011-1-18 17:00:06

楼上的家伙还真的会挖,什么年代的帖子还拿出来,,,,,,,,无语中!

daidong013 发表于 2011-6-4 21:26:11

没有捕捉???~~

669423907 发表于 2011-6-5 15:15:23

很好的程序,谢谢大师们!
页: [1]
查看完整版本: [求助]下面的程序在角度判断上有BUG,请高手帮忙看看。