乐筑天下

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

[编程交流] Lisp询问copi的编号

[复制链接]

18

主题

66

帖子

48

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 15:57:25 | 显示全部楼层 |阅读模式
大家好,
我有一个lisp,可以让你选择要打印的视图,然后继续打印。
我希望在这个lisp(选择视图后)能够输入副本的数量。
谢谢你的帮助
  1. ;created by Lee Mac
  2. (defun c:plot18X24 ( / acobj acdoc views view_list listbox)
  3. (vl-load-com)
  4. (setq acobj (vlax-get-acad-object)
  5.        acdoc (vla-get-activedocument acobj)
  6.        views (vla-get-views acdoc)
  7.        )
  8. (vlax-for view views
  9.    (setq view_list (cons (vla-get-name view) view_list))
  10.    )
  11. (foreach view (LM:listbox "Select views to plot" view_list 1)
  12.    (command
  13.      "_plot"
  14.      "_y"
  15.      "Model"
  16.      "HP.pc3"
  17.      "18X24 (landscape)"
  18.      "Inches"
  19.      "Landscape"
  20.      "No"
  21.      "View"
  22.      view
  23.      "Fit"
  24.      "Center"
  25.      "Yes"
  26.      "baw.ctb"
  27.      "Yes"
  28.      "A"
  29.      "No"
  30.      "No"
  31.      "Yes"
  32.      )
  33.    )
  34. (princ)
  35. )
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:02:36 | 显示全部楼层
试试这个:
  1. (defun c:plot18x24 (/ i n vws)
  2. (vl-load-com)
  3. (vlax-for view (vla-get-views (vla-get-activedocument (vlax-get-acad-object)))
  4.    (setq vws (cons (vla-get-name view) vws))
  5. )
  6. (setq n 0)
  7. (if (setq vws (lm:listbox "Select views to plot" vws 1))
  8.    (repeat (setq i (cond ((getint "\nNumber of copies [1]:"))
  9.                   (1)
  10.             )
  11.     )
  12.      (print (strcat "Printing copy " (itoa (setq n (1+ n))) " of " (itoa i)))
  13.      (foreach view vws
  14. (command "_plot" "_y" "Model" "HP.pc3" "18X24 (landscape)" "Inches" "Landscape"        "No" "View"
  15.          view "Fit" "Center" "Yes" "baw.ctb" "Yes" "A" "No" "No" "Yes"
  16.         )
  17.      )
  18.    )
  19. )
  20. (princ)
  21. )
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 16:08:04 | 显示全部楼层
更多信息:https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/number-of-copies-to-plot/td-p/901242
 
gr.Rlx
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 16:15:42 | 显示全部楼层
大家不要忘记,有一个“视图”符号表,它可能更快地迭代+它将跳过activex的使用。
回复

使用道具 举报

18

主题

66

帖子

48

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 16:18:29 | 显示全部楼层
ronjorp,
谢谢你的快速回复。
你的解决方案没有像我想的那样有效。
这个lisp仍然只打印一个副本,而不要求打印数字a副本。
我还将附上lisp的第二部分,该部分将从视图中创建列表。
希望它会更有意义。
谢谢
 
  1. ;;Created by Lee Mac
  2. ;; bit - [int] 1=allow multiple; 2=return indexes
  3. ;; Returns: [lst] List of selected items/indexes, else nil
  4. (defun LM:listbox ( msg lst bit / dch des tmp rtn )
  5.    (cond
  6.        (   (not
  7.                (and
  8.                    (setq tmp (vl-filename-mktemp nil nil ".dcl"))
  9.                    (setq des (open tmp "w"))
  10.                    (write-line
  11.                        (strcat "listbox:dialog{label="" msg "";spacer;:list_box{key="list";multiple_select="
  12.                            (if (= 1 (logand 1 bit)) "true" "false") ";width=50;height=15;}spacer;ok_cancel;}"
  13.                        )
  14.                        des
  15.                    )
  16.                    (not (close des))
  17.                    (< 0 (setq dch (load_dialog tmp)))
  18.                    (new_dialog "listbox" dch)
  19.                )
  20.            )
  21.            (prompt "\nError Loading List Box Dialog.")
  22.        )
  23.        (   t     
  24.            (start_list "list")
  25.            (foreach itm lst (add_list itm))
  26.            (end_list)
  27.            (setq rtn (set_tile "list" "0"))
  28.            (action_tile "list" "(setq rtn $value)")
  29.            (setq rtn
  30.                (if (= 1 (start_dialog))
  31.                    (if (= 2 (logand 2 bit))
  32.                        (read (strcat "(" rtn ")"))
  33.                        (mapcar '(lambda ( x ) (nth x lst)) (read (strcat "(" rtn ")")))
  34.                    )
  35.                )
  36.            )
  37.        )
  38.    )
  39.    (if (< 0 dch)
  40.        (unload_dialog dch)
  41.    )
  42.    (if (and tmp (setq tmp (findfile tmp)))
  43.        (vl-file-delete tmp)
  44.    )
  45.    rtn
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:23:53 | 显示全部楼层
不知道该告诉你什么。。这部分代码将在您从列表中选择视图后提示您输入副本。
  1. (cond ((getint "\nNumber of copies [1]:"))
  2.           (1)
  3.     )
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 16:30:27 | 显示全部楼层
@ronjonp,可能会在命令调用中增加“name”参数,如:
 
  1. (strcat view "_" (itoa (setq n (1- n))))
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:34:39 | 显示全部楼层
我认为这会打破它,因为这些名字不存在?
 
更新了上面的代码以打印到命令行打印进度:
  1. (print (strcat "Printing copy " (itoa (setq n (1+ n))) " of " (itoa i)))
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 16:37:52 | 显示全部楼层
 
啊,你说得对,对不起-我以为PLOT命令需要plotfile的名称,他们正在覆盖现有的plotfile。
 
那么也许:
 
  1. (vlax-put (vla-get-Plot (vla-get-ActiveDocument (vlax-get-acad-object))) 'NumberOfCopies n)
回复

使用道具 举报

18

主题

66

帖子

48

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 16:46:33 | 显示全部楼层
ronjonp,Grrr
 
除了输入上的错误列表和仍然不要求副本数量(默认情况下只取一份)之外,没有其他更改。
谢谢
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 21:23 , Processed in 1.043127 second(s), 72 queries .

© 2020-2025 乐筑天下

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