明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1459|回复: 6

[求助] 请高手帮忙调试

[复制链接]
发表于 2010-5-4 16:07:00 | 显示全部楼层 |阅读模式

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2010-5-5 08:48:00 | 显示全部楼层

很简单,找到你那个(- 轮廓面积 除料面积)语句,更改为(vl-prin1-to-string (- 轮廓面积 除料面积))

具体的程序就没有看了!

 楼主| 发表于 2010-5-5 09:25:00 | 显示全部楼层

请高手明示!不甚感激

小弟已想了2天,快崩溃了,请帮忙看一下lisp语句哪有问题!

发表于 2010-5-5 10:52:00 | 显示全部楼层

不好意思,没有注意看,运行了一下感觉能用,就是导出不能用而已啊!没有出错呢!

发表于 2010-5-5 13:48:00 | 显示全部楼层
  1. (defun c:kg (/ std id a b l c p d e )
  2.     (setvar "osmode" 0)
  3.         (setq gear_list1_list(list 0.5 0.6 0.8 1.0 1.2 1.5 1.6 1.8 2.0 2.5 2.8 3.0 3.2 3.5 4.0 5.0 6.0 8.0 10.0 12.0 14.0 15.0 16.0 18.0 20.0 ))
  4.         (setq gear_list2_list(list 7.85 2.7 0.8 1.0 ))
  5.         
  6.   (defun getdata ()
  7.         (setq a  (atof (get_tile "s_out")))
  8.         (setq b  (atof (get_tile "s_in")))
  9.         (setq l  (get_tile "gear_list1"))
  10.         (setq c  (nth(atoi l)gear_list1_list))
  11.         (setq p  (get_tile "gear_list2"))
  12.         (setq d  (nth(atoi p)gear_list2_list))
  13.         )
  14.   
  15.   (setq id (load_dialog "kg.dcl"))
  16.   (if( < id 0 )(exit))
  17.   (setq std 1)
  18.    
  19.       (while(= std 1)
  20.    (if(not(new_dialog"kg"id))(exit))
  21.    (action_tile "pick_1" "(done_dialog 1)")
  22.           (action_tile "pick_2" "(done_dialog 2)")
  23.           (action_tile "weight" "(getdata)(oweight)")
  24. (action_tile "goout" "(done_dialog 3)")
  25.           (action_tile "cancel" "(done_dialog 0)")
  26.           (setq std (start_dialog))
  27. (cond
  28.    ((= std 1)
  29.           (vl-load-com);将 Visual LISP 扩展功能载入到 AutoLISP  
  30.           (setq my (entsel)) ;"\n选择面域:"
  31.           (while (= my nil) (setq my (entsel)))
  32.           (setq myob (vlax-ename->vla-object (car my)))
  33.           (setq myar (vla-get-area myob))  ;返回面域的面积
  34.    (setq a myar)
  35.    )
  36.    ((= std 2)
  37.           (vl-load-com);将 Visual LISP 扩展功能载入到 AutoLISP
  38.           (setq my1 (entsel)) ;"\n选择面域:"
  39.           (while (= my1 nil) (setq my1 (entsel)))
  40.           (setq myob1 (vlax-ename->vla-object (car my1)))
  41.           (setq myar1 (vla-get-area myob1))  ;返回面域的面积
  42.    (setq b myar1)
  43.    )
  44.    ((= std 3)
  45.           (setq pt (getpoint "指定插入点"))
  46.     (command "text" pt "2.5" "0" (strcat "轮廓面积:" (rtos a) ))
  47.     (command "text" (polar pt (* 1.5 pi) 3.5) "2.5" "0" (strcat "除料面积:" (rtos b)) )
  48.     (command "text" (polar pt (* 1.5 pi) 7) "2.5" "0" (strcat "厚度  :" (rtos c )))
  49.     (command "text" (polar pt (* 1.5 pi) 10.5) "2.5" "0" (strcat "密度  :" (rtos d) ))
  50.     (if e (command "text" (polar pt (* 1.5 pi) 14) "2.5" "0"(strcat  "重量  :" (rtos e) )))  
  51.    )
  52.    )
  53. )
  54.   (unload_dialog id)
  55.   (princ)
  56.   )
发表于 2010-5-5 14:55:00 | 显示全部楼层
不知道可否,俺还是新手一个。。。
  1. ;;; 定义以对话框为界面计算零件重量的命令,命令名为“kg”,需装入kg.dcl文件。
  2. ;;; AutoLISP源程序代码
  3. (defun c:kg (/  A    B       C   D
  4.       GEAR_LIST1_LIST    GEAR_LIST2_LIST  ID
  5.       MY  MY1    MYAR       MYAR1  MYOB
  6.       MYOB1 OLDOSMODE  POINT      STD  TEXTSIZE
  7.       TEXTSIZE_B TEXT_P    xsws
  8.      )
  9.   (setq gear_list1_list
  10.   (list 0.5   0.6   0.8  1.0   1.2   1.5   1.6  1.8   2.0
  11.         2.5   2.8   3.0  3.2   3.5   4.0   5.0  6.0   8.0
  12.         10.0  12.0  14.0  15.0  16.0  18.0  20.0
  13.        )
  14.   )
  15.   (setq gear_list2_list (list 7.85 2.7 0.8 1.0))
  16.   (setq id (load_dialog "kg.dcl"))
  17.   (if (< id 0)
  18.     (exit)
  19.   )
  20.   (setq std 3)
  21.   (while (> std 0)
  22.     (if (not (new_dialog "kg" id))
  23.       (exit)
  24.     )
  25.     (action_tile "pick_1" "(getdata)(done_dialog 1)")
  26.     (action_tile "pick_2" "(getdata)(done_dialog 2)")
  27.     (action_tile "weight" "(getdata)(oweight)")
  28.     (action_tile "cancel" "(done_dialog 0)")
  29.     (action_tile "goout" "(getdata)(done_dialog 999)")
  30.     (set_dialog a b l p)
  31.     (setq std (start_dialog))
  32.     (if (= std 1)
  33.       (progn
  34. (vl-load-com)   ;将 Visual LISP 扩展功能载入到 AutoLISP  
  35. (setq my (entsel))  ;"\n选择面域:"
  36. (while (= my nil) (setq my (entsel)))
  37. (setq myob (vlax-ename->vla-object (car my)))
  38. (setq myar (vla-get-area myob)) ;返回面域的面积
  39. (setq a myar)
  40.       )
  41.     )
  42.     (if (= std 2)
  43.       (progn
  44. (vl-load-com)   ;将 Visual LISP 扩展功能载入到 AutoLISP
  45. (setq my1 (entsel))  ;"\n选择面域:"
  46. (while (= my1 nil) (setq my1 (entsel)))
  47. (setq myob1 (vlax-ename->vla-object (car my1)))
  48. (setq myar1 (vla-get-area myob1)) ;返回面域的面积
  49. (setq b myar1)
  50.       )
  51.     )
  52.     (if (= std 999)
  53.       (progn
  54. (setq std 0)
  55. (setq text_p (strcat "轮廓面积:"
  56.         (rtos a 2 4)
  57.         "\n除料面积:"
  58.         (rtos b 2 4)
  59.         "\n厚度:"
  60.         (rtos c 2 4)
  61.         "\n密度:"
  62.         (rtos d 2 4)
  63.         "\n重量:"
  64.         (rtos (* d (* c (- a b))) 2 4)
  65.        )
  66. )
  67. (setq point (getpoint "\n选择点"))
  68. (setq TEXTSIZE 5) ;_文字高度
  69. (setq TEXTSIZE_b 2) ;_行间距倍数
  70. (setq xsws 3) ;_小数位数
  71. (setq oldosmode (getvar "osmode"))
  72. (setvar "osmode" 0)
  73. (command "..text"
  74.    point
  75.    TEXTSIZE
  76.    0
  77.    (strcat "轮廓面积:" (rtos a 2 xsws))
  78. )
  79. (command "..text"
  80.    (setq point (list (nth 0 point)
  81.        (- (nth 1 point) (* TEXTSIZE_b TEXTSIZE))
  82.         )
  83.    )
  84.    TEXTSIZE
  85.    0
  86.    (strcat "除料面积:" (rtos b 2 xsws))
  87. )
  88. (command "..text"
  89.    (setq point (list (nth 0 point)
  90.        (- (nth 1 point) (* TEXTSIZE_b TEXTSIZE))
  91.         )
  92.    )
  93.    TEXTSIZE
  94.    0
  95.    (strcat "厚度:" (rtos c 2 xsws))
  96. )
  97. (command "..text"
  98.    (setq point (list (nth 0 point)
  99.        (- (nth 1 point) (* TEXTSIZE_b TEXTSIZE))
  100.         )
  101.    )
  102.    TEXTSIZE
  103.    0
  104.    (strcat "密度:" (rtos d 2 xsws))
  105. )
  106. (command "..text"
  107.    (setq point (list (nth 0 point)
  108.        (- (nth 1 point) (* TEXTSIZE_b TEXTSIZE))
  109.         )
  110.    )
  111.    TEXTSIZE
  112.    0
  113.    (strcat "重量:" (rtos (* d (* c (- a b))) 2 xsws))
  114. )
  115. (setvar "osmode" oldosmode)
  116.       )
  117.     )
  118.   )
  119.   (unload_dialog id)
  120.   (princ)
  121. )
  122. (defun oweight ()
  123.   (setq e (* d (* c (- a b))))
  124.   (set_tile "show" (rtos e 2 4))
  125. )
  126. (defun getdata ()
  127.   (setq a (atof (get_tile "s_out")))
  128.   (setq b (atof (get_tile "s_in")))
  129.   (setq l (get_tile "gear_list1"))
  130.   (setq c (nth (atoi l) gear_list1_list))
  131.   (setq p (get_tile "gear_list2"))
  132.   (setq d (nth (atoi p) gear_list2_list))
  133. )
  134. (defun set_dialog (a b l p)
  135.   (if a
  136.     (progn
  137.       (set_tile "s_out" (rtos a 2 4))
  138.     )
  139.   )
  140.   (if b
  141.     (progn
  142.       (set_tile "s_in" (rtos b 2 4))
  143.     )
  144.   )
  145.   (set_tile "gear_list1" l)
  146.   (set_tile "gear_list2" p)
  147. )
 楼主| 发表于 2010-5-5 18:51:00 | 显示全部楼层

感谢5楼指教, 但是轮廓面积和除料面积不能及时显示在编辑框内,编辑框总是显示初始值

请赐教!

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-2 01:21 , Processed in 0.198383 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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