乐筑天下

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

[编程交流] 使用lis创建布局选项卡

[复制链接]

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 11:48:17 | 显示全部楼层 |阅读模式
你好我正在寻找一个lisp,可以帮助我创建布局选项卡。
 
首先,我解释一下我的情况。我在模型选项卡中有几个类似的图形,我想将其导出到布局(每个图形都有自己的布局)。图形仅在长度上不同,因此布局必须具有不同的长度(在绘图大小上),并且高度是恒定的。
 
我想做的是有一个lisp,colud创建布局选项卡使用不同的打印大小(如果我可以选择一个),为每个选项卡。
 
请随时联系我这里或直接与任何问题或意见。
 
如有任何帮助或指导,我们将不胜感激。提前谢谢。
 
英语不是我的母语,所以我很抱歉犯了错误。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:00:53 | 显示全部楼层
可以使用vla add方法创建新布局:
 
  1. (defun NewLay (lay)
  2. (vl-load-com)
  3. (setq *adoc* (cond (*adoc*) ((vla-get-ActiveDocument
  4.                                 (vlax-get-acad-object)))))
  5. (if (vl-catch-all-error-p
  6.        (setq lay (vl-catch-all-apply (function vla-add)
  7.                    (list (vla-get-layouts *adoc*) lay))))
  8.    
  9.    (vl-catch-all-error-message lay) lay))

 
欢迎来到CADTutor
回复

使用道具 举报

22

主题

272

帖子

254

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
111
发表于 2022-7-6 12:14:20 | 显示全部楼层
...或者用这个。。。
 
http://www.cadtutor.net/forum/showthread.php?t=42431
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:19:51 | 显示全部楼层
谢谢Marek
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:32:08 | 显示全部楼层
这将把选定的对象深度克隆到新布局:
 
  1. ;; lay = New Layout Name  (Will be Created if non-existent)
  2. (defun CopytoLayout (lay / ss NewLay ObjLst)
  3. (vl-load-com)
  4. ; Lee Mac  ~  27.01.10
  5. (setq *acad* (cond (*acad*) ((vlax-get-acad-object)))
  6.        *adoc* (cond (*adoc*) ((vla-get-ActiveDocument *acad*))))
  7. (cond (  (not (snvalid lay)))
  8.        (  (ssget)
  9.           (vlax-for obj (setq ss (vla-get-ActiveSelectionSet *adoc*))
  10.             (setq ObjLst (cons Obj ObjLst)))         
  11.           (vla-delete ss)
  12.           (if (vl-catch-all-error-p
  13.                 (setq NewLay (vl-catch-all-apply
  14.                                (function vla-item)
  15.                                  (list (vla-get-Layouts *adoc*) lay))))
  16.             
  17.             (setq NewLay (vla-Add (vla-get-Layouts *adoc*) lay)))
  18.           (vla-CopyObjects *adoc*
  19.             
  20.             (vlax-make-variant
  21.               (vlax-safearray-fill
  22.                 (vlax-make-safearray vlax-vbObject
  23.                   (cons 0 (1- (length ObjLst))))
  24.                
  25.                 (reverse ObjLst)))
  26.             
  27.             (vla-get-Block NewLay)))))
回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 12:44:34 | 显示全部楼层
谢谢你的快速回复。
收件人:LeeMac
我还没有试过你的解决方案,因为我还不太擅长lisp,所以我会稍后再看,但谢谢你的帮助!
收件人:MDB设计
尝试了此程序。。。这是非常好的,我发现它在进一步的工作中非常有用。。。但目前我正在寻找一种解决方案,使我能够在一个窗口中选择每个特定选项卡的打印大小。例如,在此程序中,您提供的控件(例如Modify)可以像在页面设置管理器中一样更改打印大小。
 
我不确定这是否可能。。。如果是的话,如果你能给我推荐任何解决方案,我将不胜感激。
 
非常感谢您的回复。
 
另外,我是lisp编程的新手,我的知识很少,所以你可以添加一些爆炸性的东西来说明如何正确使用它。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:52:07 | 显示全部楼层
你好
 
您可以设置新布局的打印大小,但需要使用DCL(或其衍生工具)才能从窗口中选择选项。
 
要使用我上面发布的代码,可以在AutoCAD的Visual LISP编辑器中运行它(命令行处的VLIDE),也可以直接从命令行运行它。
 
它需要一个参数,即布局名称,因此:
 
  1. (CopytoLayout "New Layout)

 
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 10:50 , Processed in 0.365662 second(s), 66 queries .

© 2020-2025 乐筑天下

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