找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 603|回复: 4

[求助] [求助]:调用autolisp的问题

[复制链接]
发表于 2004-10-30 20:45:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
编写完一个autolisp(其中含有(c:cal))之后,将其拷贝到cad,键入命令,却老是发现"错误: 参数太多"字样,键入“cal”回车,按ESC,再重新键入上边新编制的命令,发现运行正常,如何克服这个问题,是什么原因造成的呢?望兄台相告。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-10-30 21:04:25 | 显示全部楼层
检查实参数量,但你说按完ESC后还能运行正常?
顺便说一句,尽量不要用autocad保留变量名(函数名,命令名等)作为自定义函数名
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-11-2 23:00:44 | 显示全部楼层

我的意思

我的意思是说要想运行自己编制的autolisp程序,首先要键入cal命令才行,不然程序不予运行,就会出现上述错误,所以还请兄台能够理解不知是不是我的程序问题,现书写如下,望指教

(defun c:hh()
  (setq Ls (getreal "Ls = "))
  (setq R (getreal "R = "))
  (setq c (* Ls R))
  (setq i -1)
  (setq L 1)
  (while (< i Ls)
    (setq i (c:cal "i+L"))
    (setq x (c:cal "i-i^5/(40*c*c)"))
    (setq y (c:cal "i^3/(6*c)-i^7/(336*c^3)"))
    (setq pt (cons (list x y) pt))   
  )
(setq pt1 (reverse pt))
(setvar "cmdecho" 0)
(setvar "osmode" 0)
  (apply 'command (cons ".pline" pt1))
(setq pt1 nil pt nil)
  (command)
  (princ)
)

打开cad,将以上粘贴到cad命令行后,运行hh,就会出现以上错误,而键入cal>>回车>>ESC,再键入hh就可以运行了,如何解决这个问题呢?望回!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-11-3 07:54:36 | 显示全部楼层
(defun C:HH ()
  (arxload "geomcal.arx" nil)
  ;;(vl-arx-import  "geomcal.arx")
  (setq LS (getreal "Ls = "))
  (setq R (getreal "R = "))
  (setq C (* LS R))
  (setq I -1)
  (setq L 1)
  (while (< I LS)
    (setq I (C:CAL "i+L"))
    (setq X (C:CAL "i-i^5/(40*c*c)"))
    (setq Y (C:CAL "i^3/(6*c)-i^7/(336*c^3)"))
    (setq PT (cons (list X Y) PT))
  )
  (setq PT1 (reverse PT))
  (setvar "cmdecho" 0)
  (setvar "osmode" 0)
  (apply 'command (cons ".pline" PT1))
  (setq        PT1 NIL
        PT  NIL
  )
  (command)
  (princ)
)



將 ObjectARX/ADSRX 函數匯入分離名稱空間的 VLX
(vl-arx-import ['function | "application"])

依預設值,分離名稱空間 VLX 應用程式不從 ObjectARX/ADSRX 應用程式匯入任何函數。使用 vl-arx-import 明確地從 ObjectARX/ADSRX 應用程式匯入函數。

引數

函數

要匯入函數名稱的符號。

application

要匯入函數所屬應用程式名稱字串。

如果沒有指定引數 (或 nil),vl-arx-import會從目前的文件名稱空間匯入全部函數名稱。

傳回值

未指定。
如果從文件 VLX 執行,這個函數不作任何事並傳回 nil,因為所有 ADS-DEFUN 函數名稱全都自動匯入文件 VLS 應用程式。

範例

要知道 vl-arx-import 如何運作,嘗試下列步驟:

1        將下列程式碼複製到 VLISP 編輯器並儲存檔案:

(vl-doc-export 'testarx)
(defun testarx ()
   (princ "This function tests invoking an ARX app ")
   (vl-arx-import 'c:cal)
   (c:cal)

)

2        使用「製作應用程式」以上述程式碼建立一個 VLX。選取「分離名稱空間應用程式」選項。
3        如果尚未載入 geomcal.arx,請將它載入。
4        載入並執行應用程式。

要確認 vl-arx-import 的影響,在程式碼中vl-arx-import 呼叫列左端處加上註解符號「;」,儲存變更,然後重新建構並執行此應用程式。沒有了 vl-arx-import 呼叫,會找不到 c:cal函數。
在以上的範例中,您可以用下列程式置換 vl-arx-import 呼叫:

(vl-arx-import "geomcal.arx")

這會匯入 geomcal.arx 中全部的函數定義,包括 c:cal。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-11-3 12:59:54 | 显示全部楼层
太谢谢了,这个问题困了我好久了,我是一个初自学者,碰到很多问题,真是太谢谢了,以后还请多多关照,多多指教。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-27 15:21 , Processed in 0.200041 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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