明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2315|回复: 12

[LISP群(2)] 2013-09-13 明经 AutoLISP 编程②(177027547) 群聊记录:numberp: #<SUBR @0c10bdc0 COS

 关闭 [复制链接]
发表于 2013-9-13 09:15:43 | 显示全部楼层 |阅读模式
梅花 09:15:43
numberp: #
这是什么错误啊
[still] 09:19:18
不是数字
 楼主| 发表于 2013-9-13 09:37:06 | 显示全部楼层
梅花 09:37:06
函数错误: 0.523599
梅花 09:41:50
(defun dtr(a)
  (* a (/ pi 180))
  )
(defun c:itriangle(/ p1 p2 p3 l1 a b)
  (setvar "cmdecho" 0)
  (graphscr)
  (setq p1 (getpoint "  enter first point of bottom later:"))
  (setq l1 (getdist "  enter length  of bottom later:"))
  (setq a (getangle"  enter angle of bottom later to x:"))
  (setq b (getangle"  enter angle of bottom angle:"))
  (setq p2 (polar p1 a l1))
  (setq p3 (polar p1 (+ a b) (/ (/ l1 2) cos dtr(b)))
  (command "line" p1 p2 p3 "c")
  (setvar "cmdecho" 1)
  (princ)
  )

  以上是绘制等腰三角形的程序,加载后出现
  错误: 函数错误: 0.523599 我输入法的b j 30  请帮助解决
梅花 09:42:29
我输入的b 是30出现以上错误。谢谢
 楼主| 发表于 2013-9-13 10:09:50 | 显示全部楼层
[gmstcn]囧囧圣堂 10:09:50
dtr的返回值被当做函数名了
梅花 10:13:32
怎样解决这个问题啊
 楼主| 发表于 2013-9-13 10:57:28 | 显示全部楼层
梅花 10:57:28
(defun dtr(a)
  (* a (/ pi 180))
  )
(defun c:itriangle(/ p1 p2 p3 l1 a b)
  (setvar "cmdecho" 0)
  (graphscr)
  (setq p1 (getpoint "\n enter first point of bottom later:"))
  (setq l1 (getdist "\n enter length  of bottom later:"))
  (setq a (getangle "\n enter angle of bottom later to x:"))
  (setq b (getangle "\n enter angle of bottom angle:"))
  (setq p2 (polar p1 a l1))
  (setq p3 (polar p1 (+ a b) (/ (/ l1 2) (cos dtr(b)))))
  (command "line" p1 p2 p3 "c")
  (setvar "cmdecho" 1)
  (princ)
  )
以上是绘制等腰三角形的程序加载后出现如下错误:请帮助解决,谢谢
 C:ITRIANGLE ,
_$ (c:itriangle)
; 错误: 函数错误: 1.0472
 楼主| 发表于 2013-9-13 16:35:43 | 显示全部楼层
梅花 16:35:43
(defun dtr(a)
  (* a (/ pi 180.0))
)
(defun c:belt(/ r1 r2 d a c1 x1 x2 c2 p1 p2 p3 p4)
  (setvar "cmdecho" 0)
  (graphscr)
  (setq r1 (getdist "\n enter radius of small pulley:"))
  (setq r2 (getdist "\n enter radius of large pulley:"))
  (setq d  (getdist "\n enter distance between pulleys:"))
  (setq a  (getangle "\n enter angle of pulleys:"))
  (setq c1 (getpoint"\n enter center of small pulleys:"))
  (setq x1 (- r2 r1))
  (setq x2 (sqrt (- (* d d) (* (- r2 r1) (- r2 r1)))))
  (setq ang (atan (/ x1 x2)))
  (setq c2 (polar c1 a d))
  (setq p1 (polar c1(+ ang a (dtr 90)) r1))
  (setq p3 (polar c1(- (+ a (dtr 270)) ang) r1))
  (setq p2 (polar c2(+ ang a (dtr 90)) r2))
  (setq p4 (polar c2(- (+ a (dtr 270)) ang) r2))
  (command "circle" c1 r1)
  (command "circle" c2 r2)
  (command "line" p1 p2 "")
  (command "line" p3 p4 "")
  (setvar "cmdecho" 1)
  (princ)
)

;;;以上是皮带轮程序,为什么画不出皮带,请帮助
 楼主| 发表于 2013-9-13 17:13:24 | 显示全部楼层
[958620832]仁者 17:13:24
(defun getdata ()
 (setq r1 (atoi (get_tile "m1")))
 (setq r2 (atoi (get_tile "m2"))))

(defun c:mm1 ()
  (setq tempname (vl-filename-mktemp "hh.dcl") filen (open tempname "w"))
  (foreach stream '(
    "hh:dialog {"
    "\n  label = "移动矩形" ;"
    "\n  :boxed_radio_row { label = "删除或保留(原对象)" ;"
    "\n     :radio_button { key = \"m1\" ; label = "删除原对象" ; value = "1" ; }"
    "\n     :radio_button { key = \"m2\" ; label = "保留原对象" ; value = "0" ; } }"
    "\n  ok_cancel;}")
    (princ stream filen))
   (close filen)
   (setq dclname tempname)
   (setq dcl_re (load_dialog dclname))
   (if (not (new_dialog "hh" dcl_re)) (exit))
   (action_tile "accept" "(getdata)(done_dialog 1)")
   (action_tile "cancel" "(done_dialog 0)")
   (setq std (start_dialog)) 
   (if (= std 1) (progn
    (setq ss (ssget))
    (setq p1 (getpoint "\n请输入一个角点:"))
    (setq p2 (getpoint "\n请输入另一个角点:"))
    (setq pc (list (/ (+ (car p1) (car p2)) 2) (/ (+ (cadr p1) (cadr p2)) 2)))
    (if (and (= r1 1) (= r2 0)) (progn
      (command "copy" ss "" "m" pc)
      (while (= 1 (getvar "cmdactive")) (command pause))
      (command "erase" ss "")))
    (if (and (= r1 0) (= r2 1)) (command "copy" ss "" "m" pc))))
  (unload_dialog id)
  (princ))
 楼主| 发表于 2013-9-13 17:50:44 | 显示全部楼层
梅花 17:50:44
[qqimg]201309/{5CF3E557-ECC9-789A-8C66-9648C0370CFB}.jpg[/qqimg]
 楼主| 发表于 2013-9-13 21:10:36 | 显示全部楼层
[958620832]仁者 21:10:36
不行啊,老兄
 楼主| 发表于 2013-9-13 21:37:58 | 显示全部楼层
[958620832]仁者 21:37:58
以上程序应改为:
(defun getdata ()
 (setq r1 (atoi (get_tile "m1")))
 (setq r2 (atoi (get_tile "m2")))
)
(defun c:m1 ()
 (setq tempname (vl-filename-mktemp "hh.dcl")
       filen (open tempname "w"))
 (foreach stream
  '("hh:dialog {"
    "\n label="移动矩形";"
    "\n :boxed_radio_row{"
    "\n  label="删除或保留(原对象)";"
    "\n  :radio_button{key=\"m1\";label="删除原对象";value="1";}"
    "\n  :radio_button{key=\"m2\";label="保留原对象";value="0";}"
    "\n }\n ok_cancel;}")
 (princ stream filen))
 (close filen)
 (setq dclname tempname)
 (setq dcl_re (load_dialog dclname))
 (if (not (new_dialog "hh" dcl_re)) (exit))
 (action_tile "accept" "(getdata)(done_dialog 1)")
 (action_tile "cancel" "(done_dialog 0)")
 (setq std (start_dialog)) 
 (if (= std 1) (progn
  (setq ss (ssget))
  (setq p1 (getpoint "\n请输入一个角点:"))
  (setq p2 (getpoint "\n请输入另一个角点:"))
  (setq pc (list (/ (+ (car p1) (car p2)) 2) (/ (+ (cadr p1) (cadr p2)) 2)))
  (command "copy" ss "" "m" pc)
  (while (= 1 (getvar "cmdactive")) (command pause))
  (if (and (= r1 1) (= r2 0)) (command "erase" ss ""))))
 (unload_dialog id)
 (princ))
 楼主| 发表于 2013-9-13 22:06:28 | 显示全部楼层
[ZZXXQQ] 22:06:28
(defun c:m1 ()
 (setq tempname (vl-filename-mktemp "hh.dcl")
       filen (open tempname "w"))
 (foreach stream
  '("hh:dialog {"
    "\n label=\"移动矩形\";"
    "\n :boxed_radio_row{"
    "\n  label=\"删除或保留(原对象)\";"
    "\n  :radio_button{key=\"m1\";label=\"删除原对象\";value=\"1\";}"
    "\n  :radio_button{key=\"m2\";label=\"保留原对象\";value=\"0\";}"
    "\n }\n ok_cancel;}")
 (princ stream filen))
 (close filen)
 (setq dclname tempname)
 (setq dcl_re (load_dialog dclname))
 (if (not (new_dialog "hh" dcl_re)) (exit))
 (action_tile "accept" "(getdata)(done_dialog 1)")
 (action_tile "cancel" "(done_dialog 0)")
 (setq std (start_dialog)) 
 (if (= std 1) (progn
  (setq ss (ssget))
  (setq p1 (getpoint "\n请输入一个角点:"))
  (setq p2 (getpoint "\n请输入另一个角点:"))
  (setq pc (list (/ (+ (car p1) (car p2)) 2) (/ (+ (cadr p1) (cadr p2)) 2)))
  (command "copy" ss "" "m" pc)
  (while (= 1 (getvar "cmdactive")) (command pause))
  (if (and (= r1 1) (= r2 0)) (command "erase" ss ""))
 ))
 (unload_dialog id)
 (princ)
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-6 03:29 , Processed in 0.183998 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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