乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 36|回复: 5

[编程交流] lisp错误(无函数定义

[复制链接]

54

主题

208

帖子

46

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
386
发表于 2022-7-6 07:56:35 | 显示全部楼层 |阅读模式
尊敬的先生:
lisp plz chq出错
 
命令:ca
选择对象:找到1个
选择对象:
文本放置位置:无函数定义:SF
 
 
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:19:53 | 显示全部楼层
这是麻烦制造者系列:
 
假设在运行上述代码时,有一个名为SF的函数可用(定义并加载)。但是他的定义就在他调用的下面-请在代码中将该定义移到上面。
有趣的是,如果您尝试第二次运行原始代码,它将工作-该函数变得可用。
 
当做
回复

使用道具 举报

VVA

1

主题

308

帖子

308

银币

初来乍到

Rank: 1

铜币
8
发表于 2022-7-6 08:21:08 | 显示全部楼层
  1. ;;;;;;;;; ------ Carpet Area Program ------ ;;;;;;;;;
  2. (defun c:CA (/ *error* p5 p6 a b c d e f s)
  3. (setq oldCM (getvar "CMDECHO")
  4.      oldos (getvar "OSMODE")
  5. )
  6. (defun *error* (msg)
  7. (if oldCM (setvar "CMDECHO" oldCM))
  8. (if oldos (setvar "OSMODE" oldos))
  9. (princ msg)
  10. (princ)
  11. )
  12. (setvar "CMDECHO" 0)
  13. (setvar "osmode" 0) ;(setvar "osmode" 524)
  14. (if (and (setq s (ssget "_:S:E" '((0 . "LWPOLYLINE"))))
  15.         (setq p5 (getpoint "\nWHERE TO PLACE TEXT: "))
  16. )
  17. (progn
  18. (setq p5 (polar p5 pi 1250))
  19. (setq p6 (polar p5 0 2500))
  20. ;(setq fn (getstring t "\nFLAT NO.:"))
  21. (command "._area" "_e" (ssname s 0))
  22. (SETQ A (GETVAR "AREA"))
  23. (setq f (* A 0.000010764))
  24. (setq f (rtos f 2 2))
  25. (SETQ f (strcat f " SQ. FT."))
  26. (SETQ B (/ A 1000000))
  27. (SETQ C (RTOS B 2 2))
  28. (SETQ D "CARPET AREA")
  29. ;(setq e (strcat FN " = " C " SQ.MT."))
  30. (setq e (strcat "= " C " SQ.MT."))
  31. (setq F (strcat "= " F))
  32. (COMMAND "_TEXT" "_S" "STANDARD" "_f" P5 p6 "250" D
  33.         "_text" "" e
  34.         "_text" "" f
  35.         "_.rectangle"
  36.         (mapcar '+ P5 '(-165 440 0))
  37.         (mapcar '+ P6 '(165 -1045 0))
  38. ) ; end command
  39. )
  40. ;; End Progn
  41. (princ "\n>")
  42. )
  43. ;; End IF
  44. ;; Reset System Variables:
  45. (setvar "cmdecho" oldCM)
  46. (setvar "osmode" oldos)
  47. (princ)
  48. ;; Exit Cleanly
  49. )
  50. ;; End defun
  51. ;;;;;;;;; ------ End Program ---
回复

使用道具 举报

54

主题

208

帖子

46

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
386
发表于 2022-7-6 08:38:14 | 显示全部楼层
尊敬的先生:,
 
thx回复
它正在工作
回复

使用道具 举报

19

主题

70

帖子

51

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-6 08:45:19 | 显示全部楼层
突然我遇到了这个问题,我有两个文件,一个是实用程序,另一个是从中调用一些函数,我使用的部分是:
 
公用事业lsp
  1. ; New Layer
  2. (defun newLayer (LayName Color Ltype Lweight / NewLay)
  3. ;loading line type
  4. (if (not (tblsearch "LTYPE" Ltype))
  5.    (vla-load (vla-get-linetypes activeDoc) Ltype "acadiso.lin"))
  6. ; Creating new layer
  7. (if (not (tblsearch "Layer" LayName))
  8.    (setq NewLay (vla-add LayerTable LayName))
  9.    )
  10. (vla-put-color NewLay Color)
  11. (vla-put-linetype NewLay Ltype)
  12. (vla-put-lineweight NewLay Lweight)
  13. )
  14. (defun gGet (name)
  15. (cdr (assoc name (vlax-ldata-get modelSpace "mhjv-vars")))
  16. )

 
画lsp
  1. 3

 
正如您所看到的,draw中的函数首先调用gGet,然后从实用程序中调用newLayer,有趣的是,正在调用gGet,但当涉及到newLayer时,它会返回;错误:没有函数定义:newLayer“我缺少什么?
回复

使用道具 举报

19

主题

70

帖子

51

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-6 08:56:53 | 显示全部楼层
没关系,有问题了,我在函数定义后/中定义了newlayer
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-9 20:42 , Processed in 0.426768 second(s), 64 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表