乐筑天下

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

[编程交流] 插入布局LISP

[复制链接]

9

主题

55

帖子

47

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-5 16:28:03 | 显示全部楼层 |阅读模式
我创建了下面的lisp。它会插入给定纸张大小的所有可用布局选项卡,或者用户可以选择单个布局选项卡。问题是,当用户尝试在30x42页上选择All时,它表示没有函数定义。其他一切都很完美。我似乎想不出是什么错误。
 
  1. (defun c:TMLAY ( / LAYOUT SHEETSIZE)
  2.    (setq
  3.        SHEETSIZE
  4.        (assoc
  5.            (progn
  6.                (initget "B D E")
  7.                (getkword "What Sheet Size? [b/D/E]:")
  8.            )
  9.            '(("B" . "2016 TM 11x17 Template") ("D" . "2016 TM 24x36 Template") ("E" . "2016 TM 30x42 Template"))
  10.        )
  11.    )
  12.    (if (= (cdr SHEETSIZE) "2016 TM 11x17 Template")
  13.        (command "layout" "template" (cdr SHEETSIZE) "QF100" "imageframe" "1" "imageframe" "0")
  14.    )
  15.    (if (= (cdr SHEETSIZE) "2016 TM 24x36 Template")
  16.        (setq
  17.            layout
  18.            (assoc
  19.                (progn
  20.                    (initget "All 001D 001K 002D 002K 003 100 200 201 300 400 500 600 700")
  21.                    (getkword "Which Sheet or All? [All/001D/001K/002D/002K/003/100/200/201/300/400/500/600/700]:")
  22.                )
  23.                '(("All" . "All") ("001D" . "QF001-DES") ("001K" . "QF001-KEC") ("002D" . "QF002-DES") ("002K" . "QF002-KEC") ("003" . "QF003") ("100" . "QF100") ("200" . "QF200") ("201" . "QF201") ("300" . "QF300") ("400" . "QF400-D") ("500" . "QF500") ("600" . "QF600") ("700" . "QF700"))
  24.            )
  25.        )
  26.    )
  27.    (if (= (cdr SHEETSIZE) "2016 TM 30x42 Template")
  28.        (setq
  29.            layout
  30.            (assoc
  31.                (progn
  32.                    (initget "All 001D 001K 100 200 201 300 500 600 700")
  33.                    (getkword "Which Sheet or All? [All/001D/001K/100/200/201/300/500/600/700]:")
  34.                )
  35.                '(("All" . "All") ("001D" . "QF001-DES") ("001K" . "QF001-KEC") ("100" . "QF100") ("200" . "QF200") ("201" . "QF201") ("300" . "QF300") ("500" . "QF500") ("600" . "QF600") ("700" . "QF700"))
  36.            )
  37.        )
  38.    )
  39.    (if (wcmatch (cdr layout) "All")
  40.        (
  41.            (if (wcmatch (cdr SHEETSIZE) "2016 TM 24x36 Template")
  42.                (command "layout" "template" "2016 TM 24x36 Template" "QF001-DES,QF001-KEC,QF002-DES,QF002-KEC,QF003,QF100,QF200,QF201,QF300,QF400-D,QF500,QF600,QF700" "imageframe "1" "imageframe" "0")
  43.                    (if (wcmatch (cdr SHEETSIZE) "2016 TM 30x42 Template")
  44.                        (command "layout" "template" "2016 TM 30x42 Template" "QF001-DES,QF001-KEC,QF100,QF200,QF201,QF300,QF500,QF600,QF700" "imageframe "1" "imageframe" "0")
  45.                    )
  46.                )
  47.            )
  48.        (
  49.        (command "layout" "template" (cdr SHEETSIZE) (cdr layout) "imageframe" "1" "imageframe" "0")
  50.    )
  51. (princ))
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 16:41:05 | 显示全部楼层
您有(2倍):
  1. "imageframe "1"
回复

使用道具 举报

9

主题

55

帖子

47

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-5 16:44:18 | 显示全部楼层
 
你这是什么意思?我正在将imageframe设置为0。这是我确保TBLOCK中的图像上没有帧的方法。
回复

使用道具 举报

27

主题

113

帖子

90

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
132
发表于 2022-7-5 16:54:08 | 显示全部楼层
罗伊说的。在这两个“imageframe”命令之后需要有一个“。
 
(@cadtutor,代码标签中什么时候会有行号?)
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 16:58:43 | 显示全部楼层
额外支架。
 
  1. (if (wcmatch (cdr layout) "All")
  2.       [color="red"] ([/color]
  3.         ..........
  4.       [color="red"] )[/color]
  5. )
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 17:01:46 | 显示全部楼层
 
Op在这里也有类似的括号问题。
至少我很高兴他学会了如何使用assoc progn initget getkword块,也许现在是时候学习cond如何工作了?
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:08:22 | 显示全部楼层
使用命令的有趣imageframe接受“1”或1,但对于setvar,它必须是数字。我倾向于使用setvars而不是command。
 
命令:(setvar“imageframe”1)
; 错误:AutoCAD变量设置被拒绝:“imageframe”“1”
命令:(setvar“imageframe”1)
1.
回复

使用道具 举报

9

主题

55

帖子

47

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-5 17:20:24 | 显示全部楼层
移除额外的支架,并将其设置为setvar imageframe。现在,当我做30x42尺寸的时候,它只是说零。
 
  1. (defun c:TMLAY ( / LAYOUT SHEETSIZE)
  2.    (setq
  3.        SHEETSIZE
  4.        (assoc
  5.            (progn
  6.                (initget "B D E")
  7.                (getkword "What Sheet Size? [b/D/E]:")
  8.            )
  9.            '(("B" . "2016 TM 11x17 Template") ("D" . "2016 TM 24x36 Template") ("E" . "2016 TM 30x42 Template"))
  10.        )
  11.    )
  12.    (if (= (cdr SHEETSIZE) "2016 TM 11x17 Template")
  13.        (command "layout" "template" (cdr SHEETSIZE) "QF100" "setvar" "imageframe" "1" "setvar" "imageframe" "0")
  14.    )
  15.    (if (= (cdr SHEETSIZE) "2016 TM 24x36 Template")
  16.        (setq
  17.            layout
  18.            (assoc
  19.                (progn
  20.                    (initget "All 001D 001K 002D 002K 003 100 200 201 300 400 500 600 700")
  21.                    (getkword "Which Sheet or All? [All/001D/001K/002D/002K/003/100/200/201/300/400/500/600/700]:")
  22.                )
  23.                '(("All" . "All") ("001D" . "QF001-DES") ("001K" . "QF001-KEC") ("002D" . "QF002-DES") ("002K" . "QF002-KEC") ("003" . "QF003") ("100" . "QF100") ("200" . "QF200") ("201" . "QF201") ("300" . "QF300") ("400" . "QF400-D") ("500" . "QF500") ("600" . "QF600") ("700" . "QF700"))
  24.            )
  25.        )
  26.    )
  27.    (if (= (cdr SHEETSIZE) "2016 TM 30x42 Template")
  28.        (setq
  29.            layout
  30.            (assoc
  31.                (progn
  32.                    (initget "All 001D 001K 100 200 201 300 500 600 700")
  33.                    (getkword "Which Sheet or All? [All/001D/001K/100/200/201/300/500/600/700]:")
  34.                )
  35.                '(("All" . "All") ("001D" . "QF001-DES") ("001K" . "QF001-KEC") ("100" . "QF100") ("200" . "QF200") ("201" . "QF201") ("300" . "QF300") ("500" . "QF500") ("600" . "QF600") ("700" . "QF700"))
  36.            )
  37.        )
  38.    )
  39.    (if (wcmatch (cdr layout) "All")
  40.        (if (wcmatch (cdr SHEETSIZE) "2016 TM 24x36 Template")
  41.            (command "layout" "template" "2016 TM 24x36 Template" "QF001-DES,QF001-KEC,QF002-DES,QF002-KEC,QF003,QF100,QF200,QF201,QF300,QF400-D,QF500,QF600,QF700" "setvar" "imageframe "1" "setvar" "imageframe" "0")
  42.                (if (wcmatch (cdr SHEETSIZE) "2016 TM 30x42 Template")
  43.                    (command "layout" "template" "2016 TM 30x42 Template" "QF001-DES,QF001-KEC,QF100,QF200,QF201,QF300,QF500,QF600,QF700" "setvar" "imageframe "1" "setvar" "imageframe" "0")
  44.                )
  45.            )
  46.        )
  47.        (command "layout" "template" (cdr SHEETSIZE) (cdr layout) "imageframe" "1" "imageframe" "0")
  48.    )
  49. (princ))
回复

使用道具 举报

9

主题

55

帖子

47

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-5 17:25:28 | 显示全部楼层
我想出来了。我在wcmatch if的第一个命令行中有一个额外的括号。我正在结束一个不需要的命令。
 
  1. (defun c:TMLAYS ( / LAYOUT SHEETSIZE)
  2.    (setq
  3.        SHEETSIZE
  4.        (assoc
  5.            (progn
  6.                (initget "B D E")
  7.                (getkword "What Sheet Size? [b/D/E]:")
  8.            )
  9.            '(("B" . "2016 TM 11x17 Template") ("D" . "2016 TM 24x36 Template") ("E" . "2016 TM 30x42 Template"))
  10.        )
  11.    )
  12.    (if (= (cdr SHEETSIZE) "2016 TM 11x17 Template")
  13.        (command "layout" "template" (cdr SHEETSIZE) "QF100" "imageframe" "1" "imageframe" "0")
  14.    )
  15.    (if (= (cdr SHEETSIZE) "2016 TM 24x36 Template")
  16.        (setq
  17.            layout
  18.            (assoc
  19.                (progn
  20.                    (initget "All 001D 001K 002D 002K 003 100 200 201 300 400 500 600 700")
  21.                    (getkword "Which Sheet or All? [All/001D/001K/002D/002K/003/100/200/201/300/400/500/600/700]:")
  22.                )
  23.                '(("All" . "All") ("001D" . "QF001-DES") ("001K" . "QF001-KEC") ("002D" . "QF002-DES") ("002K" . "QF002-KEC") ("003" . "QF003") ("100" . "QF100") ("200" . "QF200") ("201" . "QF201") ("300" . "QF300") ("400" . "QF400-D") ("500" . "QF500") ("600" . "QF600") ("700" . "QF700"))
  24.            )
  25.        )
  26.    )
  27.    (if (= (cdr SHEETSIZE) "2016 TM 30x42 Template")
  28.        (setq
  29.            layout
  30.            (assoc
  31.                (progn
  32.                    (initget "All 001D 001K 100 200 201 300 500 600 700")
  33.                    (getkword "Which Sheet or All? [All/001D/001K/100/200/201/300/500/600/700]:")
  34.                )
  35.                '(("All" . "All") ("001D" . "QF001-DES") ("001K" . "QF001-KEC") ("100" . "QF100") ("200" . "QF200") ("201" . "QF201") ("300" . "QF300") ("500" . "QF500") ("600" . "QF600") ("700" . "QF700"))
  36.            )
  37.        )
  38.    )
  39.    (if (wcmatch (cdr layout) "All")
  40.        (if (wcmatch (cdr SHEETSIZE) "2016 TM 24x36 Template")
  41.            (command "layout" "template" "2016 TM 24x36 Template" "QF001-DES,QF001-KEC,QF002-DES,QF002-KEC,QF003,QF100,QF200,QF201,QF300,QF400-D,QF500,QF600,QF700" "setvar" "imageframe" "1" "setvar" "imageframe" "0")
  42.            (if (wcmatch (cdr SHEETSIZE) "2016 TM 30x42 Template")
  43.                (command "layout" "template" "2016 TM 30x42 Template" "QF001-DES,QF001-KEC,QF100,QF200,QF201,QF300,QF500,QF600,QF700" "setvar" "imageframe" "1" "setvar" "imageframe" "0")
  44.            )
  45.        )
  46.        (command "layout" "template" (cdr SHEETSIZE) (cdr layout) "setvar" "imageframe" "1" "setvar" "imageframe" "0")
  47.    )
  48. (princ))
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:28:48 | 显示全部楼层
这就是我,我相信其他人在我写代码时会有一些提示,如果说我添加了一个(defun,我按enter键几次,然后添加结束符),这样我就可以跟上匹配对,特别是如果使用一个程序,其中可能会丢失括号数。
 
我知道我已经贴过几次了,但无论如何,这里有一个小助手,看看你的最后一行,如果不是0,你有一个括号错误。
CHKBRK。LSP
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-20 20:26 , Processed in 1.582865 second(s), 73 queries .

© 2020-2025 乐筑天下

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