乐筑天下

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

[编程交流] 从模式打印所选视图

[复制链接]

18

主题

66

帖子

48

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 15:29:44 | 显示全部楼层 |阅读模式
你好
我有一个LISP,在我切换到Acad2017之前一直工作得很好。
我为Acad2017安装了新的Dos\u lib,但仍然收到相同的错误:“错误:没有函数定义:Dos\u Multilist。
有没有一种方法可以在不使用Dos_lib或修复此代码以使用Acad2017的情况下实现相同的结果?
这是代码(由Stefan BMR创建):
  1. (defun c:plotview ( / acobj acdoc views view_list)
  2. (setq acobj (vlax-get-acad-object)
  3.        acdoc (vla-get-activedocument acobj)
  4.        views (vla-get-views acdoc)
  5.        )
  6. (vlax-for view views
  7.    (setq view_list (cons (vla-get-name view) view_list))
  8.    )
  9. (foreach view (dos_multilist "PLOT SELECTED VIEWS" "Select views to plot" view_list)
  10.    (command
  11.      "_plot"
  12.      "_y"
  13.      "Model"
  14.      "DWG To PDF.pc3"
  15.      "ANSI A (11.00 x 8.50 Inches)"
  16.      "Inches"
  17.      "Landscape"
  18.      "No"
  19.      "View"
  20.      view
  21.      "Fit"
  22.      "Center"
  23.      "Yes"
  24.      "ICP.ctb"
  25.      "Yes"
  26.      "A"
  27.      (strcat (getvar 'dwgprefix) (vl-filename-base (getvar 'dwgname)) " - " view ".pdf")
  28.      "No"
  29.      "Yes"
  30.      )
  31.    )
  32. (princ)
  33. )

非常感谢。
回复

使用道具 举报

20

主题

338

帖子

323

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-5 15:33:32 | 显示全部楼层
Dos_Mulitlist仍适用于Acad2017。
 
您需要检查两件事。doslib是否已加载?您使用的是正确的arx吗?
 
2017年,在64位机器上,它应该是DOSLib21x64。arx公司
 
我目前正在Acad 2017上使用DosLib21x64,它工作正常。
 
当做
 
Hippe013
回复

使用道具 举报

18

主题

66

帖子

48

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 15:38:27 | 显示全部楼层
加载了Dos_lib,我使用DOSLib21x64。64位机器上的arx。
也许这是Lisp程序的问题?
任何如何使这项工作的想法都将受到赞赏。
非常感谢。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 15:41:03 | 显示全部楼层
删除错误想法
回复

使用道具 举报

18

主题

66

帖子

48

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 15:45:27 | 显示全部楼层
你有一个lisp(你可以分享)可以做同样的事情吗
-在模型空间中显示视图
-用于选择要打印的视图
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 15:48:39 | 显示全部楼层
我确实写了一个plot lisp,它也可以打印视图,但它相对比较旧,我不确定所有选项是否都有效。从来没有完全完成过,现在可能可以更好地编写代码的某些部分,只是一天没有足够的时间。。。
 
 
不管怎样,也许它是有用的,至少是我希望的景观部分。对话框启动后(希望如此),转到“高级选项”并在“打印范围”部分中选择“查看”。
 
 
gr.Rlx
RLPlot。dcl
RLPlot。LSP
162945gvfq3hg9vuvczvuw.jpg
162947y4osxppeyqpy0y4c.jpg
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 15:49:33 | 显示全部楼层
Nice one RLX需要额外的“打印所有选项卡”“打印范围”
 
塔兹http://www.lee-mac.com/listbox.html这应该取代DOSLIB函数。
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 15:54:11 | 显示全部楼层
 
 
 
Thanx Bigal。。。我真的应该(有一天)完成它,但从好的方面来看,我现在工作的公司已经决定没有更多的空间给工程部门,所以今年年底我可能会有我需要的所有时间:-)
 
 
gr.R。
回复

使用道具 举报

18

主题

66

帖子

48

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 15:56:46 | 显示全部楼层
比加尔,rlx谢谢你的帖子。
由于我仍在学习LISP,此时我发现很难调用Lee的函数(并替换dos\u multilist)。
这些都是程序和我做的小改动:
  1. ;; created by Stefan BMR
  2. (defun c:plotview ( / acobj acdoc views view_list [color="red"]LISTBOX[/color])
  3. (setq acobj (vlax-get-acad-object)
  4.        acdoc (vla-get-activedocument acobj)
  5.        views (vla-get-views acdoc)
  6.        )
  7. (vlax-for view views
  8.    (setq view_list (cons (vla-get-name view) view_list))
  9.    )
  10. (foreach view ([color="red"]LISTBOX[/color] "PLOT SELECTED VIEWS" "Select views to plot" view_list)
  11.    (command
  12.      "_plot"
  13.      "_y"
  14.      "Model"
  15.      "DWG To PDF.pc3"
  16.      "ARCH C (24.00 x 18.00 Inches)"
  17.      "Inches"
  18.      "Landscape"
  19.      "No"
  20.      "View"
  21.      view
  22.      "Fit"
  23.      "Center"
  24.      "Yes"
  25.      "ICP.ctb"
  26.      "Yes"
  27.      "A"
  28.      (strcat (getvar 'dwgprefix) (vl-filename-base (getvar 'dwgname)) " - " view ".pdf")
  29.      "No"
  30.      "Yes"
  31.      )
  32.    )
  33. (princ)
  34. )
  35. ;;Created by Lee Mac
  36. ;; bit - [int] 1=allow multiple; 2=return indexes
  37. ;; Returns: [lst] List of selected items/indexes, else nil
  38. (defun LM:listbox ( msg lst bit / dch des tmp rtn )
  39.    (cond
  40.        (   (not
  41.                (and
  42.                    (setq tmp (vl-filename-mktemp nil nil ".dcl"))
  43.                    (setq des (open tmp "w"))
  44.                    (write-line
  45.                        (strcat "listbox:dialog{label="" msg "";spacer;:list_box{key="list";multiple_select="
  46.                            (if (= 1 (logand 1 bit)) "true" "false") ";width=50;height=15;}spacer;ok_cancel;}"
  47.                        )
  48.                        des
  49.                    )
  50.                    (not (close des))
  51.                    (< 0 (setq dch (load_dialog tmp)))
  52.                    (new_dialog "listbox" dch)
  53.                )
  54.            )
  55.            (prompt "\nError Loading List Box Dialog.")
  56.        )
  57.        (   t     
  58.            (start_list "list")
  59.            (foreach itm lst (add_list itm))
  60.            (end_list)
  61.            (setq rtn (set_tile "list" "0"))
  62.            (action_tile "list" "(setq rtn $value)")
  63.            (setq rtn
  64.                (if (= 1 (start_dialog))
  65.                    (if (= 2 (logand 2 bit))
  66.                        (read (strcat "(" rtn ")"))
  67.                        (mapcar '(lambda ( x ) (nth x lst)) (read (strcat "(" rtn ")")))
  68.                    )
  69.                )
  70.            )
  71.        )
  72.    )
  73.    (if (< 0 dch)
  74.        (unload_dialog dch)
  75.    )
  76.    (if (and tmp (setq tmp (findfile tmp)))
  77.        (vl-file-delete tmp)
  78.    )
  79.    rtn
  80. )

希望有人能帮我完成这项任务
非常感谢。
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 16:00:35 | 显示全部楼层
试试这个:
 
  1. ;; created by Stefan BMR
  2. (defun c:plotview ( / 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.      "DWG To PDF.pc3"
  17.      "ARCH C (24.00 x 18.00 Inches)"
  18.      "Inches"
  19.      "Landscape"
  20.      "No"
  21.      "View"
  22.      view
  23.      "Fit"
  24.      "Center"
  25.      "Yes"
  26.      "ICP.ctb"
  27.      "Yes"
  28.      "A"
  29.      (strcat (getvar 'dwgprefix) (vl-filename-base (getvar 'dwgname)) " - " view ".pdf")
  30.      "No"
  31.      "Yes"
  32.      )
  33.    )
  34. (princ)
  35. )
  36. ;;Created by Lee Mac
  37. ;; bit - [int] 1=allow multiple; 2=return indexes
  38. ;; Returns: [lst] List of selected items/indexes, else nil
  39. (defun LM:listbox ( msg lst bit / dch des tmp rtn )
  40.    (cond
  41.        (   (not
  42.                (and
  43.                    (setq tmp (vl-filename-mktemp nil nil ".dcl"))
  44.                    (setq des (open tmp "w"))
  45.                    (write-line
  46.                        (strcat "listbox:dialog{label="" msg "";spacer;:list_box{key="list";multiple_select="
  47.                            (if (= 1 (logand 1 bit)) "true" "false") ";width=50;height=15;}spacer;ok_cancel;}"
  48.                        )
  49.                        des
  50.                    )
  51.                    (not (close des))
  52.                    (< 0 (setq dch (load_dialog tmp)))
  53.                    (new_dialog "listbox" dch)
  54.                )
  55.            )
  56.            (prompt "\nError Loading List Box Dialog.")
  57.        )
  58.        (   t     
  59.            (start_list "list")
  60.            (foreach itm lst (add_list itm))
  61.            (end_list)
  62.            (setq rtn (set_tile "list" "0"))
  63.            (action_tile "list" "(setq rtn $value)")
  64.            (setq rtn
  65.                (if (= 1 (start_dialog))
  66.                    (if (= 2 (logand 2 bit))
  67.                        (read (strcat "(" rtn ")"))
  68.                        (mapcar '(lambda ( x ) (nth x lst)) (read (strcat "(" rtn ")")))
  69.                    )
  70.                )
  71.            )
  72.        )
  73.    )
  74.    (if (< 0 dch)
  75.        (unload_dialog dch)
  76.    )
  77.    (if (and tmp (setq tmp (findfile tmp)))
  78.        (vl-file-delete tmp)
  79.    )
  80.    rtn
  81. )

 
gr.Rlx
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 00:25 , Processed in 0.599877 second(s), 85 queries .

© 2020-2025 乐筑天下

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