明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1108|回复: 5

高手帮忙看看,我做的lisp错在什么地方啊?谢谢

[复制链接]
发表于 2008-1-10 08:29 | 显示全部楼层 |阅读模式

程序如下,为什么这个出来的图形不能直接做出圆角,需要在命令行人为的给出圆角的R,再在图像上手动进行倒圆角啊,实在不知道错在哪了?刚开始学习,请 大家帮忙看看,有 什么 不足多多指点。

;这是一个槽钢绘图程序,

(defun cg (fi / b h d t r1 r xp 123 v1 v2 v3 cadat a1ph
+a1 a2 a3 a4 a5 a6 a7 a8 11 fp 111 1mz)
    (setq v1 (getvar "cmdecho"))
    (setq v2 (getvar "blipmode"))
    (setq v3 (getvar "osmode"))
    (setvar "osmode" 16551)
    (setvar "orthomode" 1)
    (setvar "blipmode" 0)
    (setvar "cmdecho" 0)
    (setq fp (open "c:/xinggang/data/cg.dat" "r"))
      (setq 1mz 1)
         (while (/= 1mz fi)
    (setq 11 (read-line fp))
    (setq 11 (read 11))
    (setq 111 11)
    (setq 1mz (car 11))
    (setq cadat 111)
  );while
  (setq h (cadr cadat))
  (setq b (cadr (cdr cadat)))
  (setq d (cadr (cdr (cdr cadat))))
  (setq t (cadr (cdr (cdr (cdr cadat)))))
  (setq r1 (cadr (cdr (cdr (cdr (cdr cadat))))))
  (setq r t)
  (setq a1ph 0.1)
  (setq xp (/ (- b d) 20.0))
  (setq 123 (- t xp))
  (setq pt0 (getpoint "\nFrom point to start :"))
  (setq pt1 (polar pt0 (* pi 1.5) (* h 0.5)))
  (setq pt2 (polar pt1 0.0 b))
  (setq pt3 (polar pt2 (* pi 0.5)) 123))
  (setq pt5 (polar pt0 0.0 d))
  (setq pt4 (polar pt5 (* pi 1.5) (- (* h 0.5) (+ t xp))))
  (setq pt6 (polar pt5 (* pi 0.5) (- (* h 0.5) (+ t xp))))
  (setq pt9 (polar pt0 (* pi 0.5) (* h 0.5)))
  (setq pt8 (polar pt9 0.0 b))
  (setq pt7 (polar pt8 (* pi 1.5) l23))


  (command "line" pt1 pt9 "")
  (setq a1 (entlast))
  (command "line" pt1 pt2 pt3 pt4 pt6 pt7 pt8 pt9 "")
  (setq a2 (entnext a1))
  (setq a3 (entnext a2))
  (setq a4 (entnext a3))
  (setq a5 (entnext a4))
  (setq a6 (entnext a5))
  (setq a7 (entnext a6))
  (setq a8 (entnext a7))
  (command "fillet" "r" r)
  (command "fillet" a4 a5)
  (command "fillet" a6 a5)
  (command "fillet" "r" r1)
  (command "fillet" a3 a4)
  (command "fillet" a6 a7)

  (princ)
  (close fp)
  (setvar "blipmode" v2)
  (setvar "cmdecho" v1)
  (setvar "osmode" v3)
  (princ)
);


(defun c:ccg (/ cgb)
   (print "这是一个槽钢绘图程序")
   (new_dialog "cg" (load_dialog "c:/xinggang/dcl/cg"))
   (setq ok T)
   (start_image "help")
   (slide_image 1 1 (dimx_tile "help") (dimy_tile "help") "c:/xinggang/slide/cg-dcl")
   (end_image)
   (action_tile "LBox" "(setq vl $Value)")
   (action_tile "accept" "(done_dialog)")
   (action_tile "cancel" "(setq ok nil) (done_dialog)")
   (start_dialog)
   (setq cgb '(50 63 80 100 126 140 160 180 200 220 250 280 320 360 400))
  (if ok (cg (nth (read v1) cgb)))
   (princ)
)



 

发表于 2008-1-10 08:42 | 显示全部楼层

(setq 11 (read-line fp))   ; INT 是不能为变量的   下同 .....

请先行改正

 楼主| 发表于 2008-1-10 09:21 | 显示全部楼层

谢谢,已经修改了,可是那个问题没有解决啊。

插入图形后在命令行提示:"这是一个槽钢绘图程序"
请输入插入点 :; 错误: 参数值错误: AutoCAD 命令: T

指定圆角半径<1.000>:

能否 把这个倒圆角的命令直接做在程序里。谢谢

发表于 2008-1-10 09:31 | 显示全部楼层
本帖最后由 作者 于 2008-1-10 9:36:58 编辑

改了一下。主要是变量问题,变量一定要以字母开头,单字母t不能做变量。多个个右括弧。LISP不是MNU换行不要写+号。
  1. (defun cg (fi / b h d th r1 r xp L23 v1 v2 v3 cadat a1ph
  2. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; a1 a2 a3 a4 a5 a6 a7 a8 L1 fp L11 Lmz)
  3. &#160;(setq v1 (getvar "cmdecho"))
  4. &#160;(setq v2 (getvar "blipmode"))
  5. &#160;(setq v3 (getvar "osmode"))
  6. &#160;(setvar "osmode" 16551)
  7. &#160;(setvar "orthomode" 1)
  8. &#160;(setvar "blipmode" 0)
  9. &#160;(setvar "cmdecho" 0)
  10. &#160;(setq fp (open "c:/xinggang/data/cg.dat" "r"))
  11. &#160;(setq Lmz 1)
  12. &#160;(while (/= 1mz fi)
  13. &#160; (setq L1 (read-line fp))
  14. &#160; (setq L1 (read L1))
  15. &#160; (setq L11 L1)
  16. &#160; (setq Lmz (car L1))
  17. &#160; (setq cadat L11)
  18. &#160;);while
  19. &#160;(close fp)
  20. &#160;(setq h (cadr cadat))
  21. &#160;(setq b (nth 2 cadat))
  22. &#160;(setq d (nth 3 cadat))
  23. &#160;(setq th (nth 4 cadat))
  24. &#160;(setq r1 (nth 5 cadat))
  25. &#160;(setq r th)
  26. &#160;(setq a1ph 0.1)
  27. &#160;(setq xp (/ (- b d) 20.0))
  28. &#160;(setq L23 (- th xp))
  29. &#160;(setq pt0 (getpoint "\nFrom point to start :"))
  30. &#160;(setq pt1 (polar pt0 (* pi 1.5) (* h 0.5)))
  31. &#160;(setq pt2 (polar pt1 0.0 b))
  32. &#160;(setq pt3 (polar pt2 (* pi 0.5)) 123)
  33. &#160;(setq pt5 (polar pt0 0.0 d))
  34. &#160;(setq pt4 (polar pt5 (* pi 1.5) (- (* h 0.5) (+ th xp))))
  35. &#160;(setq pt6 (polar pt5 (* pi 0.5) (- (* h 0.5) (+ th xp))))
  36. &#160;(setq pt9 (polar pt0 (* pi 0.5) (* h 0.5)))
  37. &#160;(setq pt8 (polar pt9 0.0 b))
  38. &#160;(setq pt7 (polar pt8 (* pi 1.5) l23))
  39. &#160;(command "line" pt1 pt9 "") (setq a1 (entlast))
  40. &#160;(command "line" pt1 pt2 pt3 pt4 pt6 pt7 pt8 pt9 "")
  41. &#160;(setq a2 (entnext a1))
  42. &#160;(setq a3 (entnext a2))
  43. &#160;(setq a4 (entnext a3))
  44. &#160;(setq a5 (entnext a4))
  45. &#160;(setq a6 (entnext a5))
  46. &#160;(setq a7 (entnext a6))
  47. &#160;(setq a8 (entnext a7))
  48. &#160;(command "fillet" "r" r)
  49. &#160;(command "fillet" a4 a5)
  50. &#160;(command "fillet" a6 a5)
  51. &#160;(command "fillet" "r" r1)
  52. &#160;(command "fillet" a3 a4)
  53. &#160;(command "fillet" a6 a7)
  54. &#160;(setvar "blipmode" v2)
  55. &#160;(setvar "cmdecho" v1)
  56. &#160;(setvar "osmode" v3)
  57. &#160;(princ)
  58. )
 楼主| 发表于 2008-1-10 13:21 | 显示全部楼层
还是没有解决我的问题。还是要在外面做倒圆角,希望做到内部,高手帮忙啊!
发表于 2008-1-10 13:36 | 显示全部楼层
建议您附上 c:/xinggang/data/cg.dat 文件以方便调试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-10 04:52 , Processed in 0.183728 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表