乐筑天下

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

[编程交流] cond故障

[复制链接]

25

主题

62

帖子

37

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
125
发表于 2022-7-6 06:37:58 | 显示全部楼层 |阅读模式
我不知道为什么,但在这段代码中忽略了cond。其想法是将所有页码设为三位数,即001、020、100等。
 
  1. (setq sheetnumber 1)
  2. (foreach tab (_layoutlist)
  3. (setq row 0)
  4. (setq column (+ column 1))
  5. (princ "Test 1\n")
  6. (cond
  7. (> sheetnumber 99)(
  8. (setq sheetnumber (itoa sheetnumber)))
  9. (> sheetnumber 9)(
  10. (setq sheetnumber (itoa (strcat "0" (itoa sheetnumber)))))
  11. (> sheetnumber 0)(
  12. (setq sheetnumber (itoa (strcat "00" (itoa sheetnumber)))))
  13. )
  14. (setq sheetnumber (itoa sheetnumber));Remove this when possible.
  15. (vla-setCellValue table column row sheetnumber)
  16. (setq newname (strcat sheetnumber "-" (substr tab 5 50)))
  17. (setq sheetnumber (atoi sheetnumber))
  18. (setq sheetnumber (+ sheetnumber 1))
  19. (setq row 1)
  20. (setvar 'ctab tab)
  21. (setq tab (substr tab 5 50))
  22. (vla-setCellValue table column row tab)
  23. (command "-layout" "R" "" newname)
  24. )
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 06:48:21 | 显示全部楼层
我对你的语法做了一些更正:
  1. (cond
  2. [color=red]([/color](> sheetnumber 99)[color=red][s]([/s][/color]
  3. (setq sheetnumber (itoa sheetnumber)))
  4. [color=red]([/color](> sheetnumber 9)[color=red][s]([/s][/color]
  5. (setq sheetnumber [color=red][s](itoa[/s][/color] (strcat "0"  (itoa sheetnumber))[color=red][s])[/s][/color]))
  6. [color=red]([/color](> sheetnumber 0)[color=red][s]([/s][/color]
  7. (setq sheetnumber [color=red][s](itoa[/s][/color] (strcat "00" (itoa sheetnumber))[color=red][s])[/s][/color]))
  8. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:04:30 | 显示全部楼层
如果您还没有这样做,我强烈建议您参考AutoLISP开发人员文档,以了解AutoLISP函数的正确语法、参数和返回。
 
以下是cond函数的文档:
 
http://exchange.autodesk.com/autocad/enu/online-help/browse#WS1a9193826455f5ff1a32d8d10ebc6b7ccc-6a7a。htm
 
以下是主要文档的链接:
 
http://exchange.autodesk.com/autocad/enu/online-help/browse#WS73099cc142f48755a52158612bd434e551-7fe9.htm
 
下面是一个教程,解释如何从Visual LISP IDE(VLIDE)中访问此文档:
 
http://lee-mac.com/functioninfo.html
回复

使用道具 举报

25

主题

62

帖子

37

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
125
发表于 2022-7-6 07:09:41 | 显示全部楼层
致MSasu:
 

                               
登录/注册后可看大图

 
李,我正在逐渐学习,但我似乎从实际的书籍中学习编程语言比从在线教程中学习要好得多。不知道为什么。你能推荐一本好书吗?
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 07:20:04 | 显示全部楼层
Jjatho,我们都是来学习的,所以更有趣的是知道我对你的代码提出的更改是否是你想要的,以及你是否理解它们。
回复

使用道具 举报

25

主题

62

帖子

37

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
125
发表于 2022-7-6 07:31:28 | 显示全部楼层
确实如此。这是我今天工作的全部代码。你的帮助为我想要的行为画上了句号。
 
  1. (defun _layoutlist (/ layouts)
  2. ;; List of layouts (VLA-Objects) in drawing (in correct order)
  3. ;; Alan J. Thompson, 10.05.09
  4. (setq layouts (vla-get-layouts
  5.         (cond (*AcadDoc*)
  6.                 ((setq *AcadDoc* (vla-get-activedocument (vlax-get-acad-object))))
  7.         )
  8. )
  9. )
  10. (vl-sort (layoutlist)
  11.         (function (lambda (a b)
  12.                 (< (vla-get-taborder (vla-item layouts a))
  13.                         (vla-get-taborder (vla-item layouts b))
  14.                 )
  15.         )
  16.         )
  17. )
  18. )
  19. (defun C:DIRECTORY()
  20. (setq sheetcount (length (layoutlist))) ;Gives count of paper space sheets
  21. (setq directorysheetcount (itoa sheetcount))
  22. (setq location (list -1.75 )
  23. (command "-table" "2" sheetcount location) ;Creates table.
  24. ; Note that the variable sheetcount corresponds with the number of data rows
  25. ; a title and header row will be created above the data rows.
  26. (setq EN (entlast))
  27. (setq table (vlax-ename->vla-object EN))
  28. (setq column 0)
  29. (setq row 0)
  30. (vla-setCellValue table column row "Contents")
  31. (setq column 1)
  32. (setq row 0)
  33. (vla-setCellValue table column row "Sheet")
  34. (setq column 1)
  35. (setq row 1)
  36. (vla-setCellValue table column row "Description")
  37. (setq sheetnumber 1)
  38. (foreach tab (_layoutlist)
  39. (setq row 0)
  40. (setq column (+ column 1))
  41. (princ "Test 1\n")
  42. (cond
  43. ((> sheetnumber 99)
  44. (setq sheetnumber (itoa sheetnumber)))
  45. ((> sheetnumber 9)
  46. (setq sheetnumber (strcat "0"  (itoa sheetnumber))))
  47. ((> sheetnumber 0)
  48. (setq sheetnumber (strcat "00" (itoa sheetnumber))))
  49. )
  50. (vla-setCellValue table column row sheetnumber)
  51. (setq newname (strcat sheetnumber "-" (substr tab 5 50)))
  52. (setq sheetnumber (atoi sheetnumber))
  53. (setq sheetnumber (+ sheetnumber 1))
  54. (setq row 1)
  55. (setvar 'ctab tab)
  56. (setq tab (substr tab 5 50))
  57. (vla-setCellValue table column row tab)
  58. (command "-layout" "R" "" newname)
  59. )
  60. (setq titlepage (car (_layoutlist)))
  61. (setvar 'ctab (car (_layoutlist)))
  62. (princ)
  63. ) ;End defun DIRECTORY
回复

使用道具 举报

2

主题

389

帖子

387

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 07:44:43 | 显示全部楼层
你真的应该看看李的链接,并将其加入书签。本教程只是介绍如何以另一种方式访问。这些链接主要用于快速参考。如果有,那么可以快速检查函数的语法。在LISP的情况下,您肯定想看看括号是如何排列的。如果你想让你的程序发挥作用,这是至关重要的。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 16:07 , Processed in 1.443612 second(s), 69 queries .

© 2020-2025 乐筑天下

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