明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 874|回复: 9

[提问] 还是关于布局空间,请教大家

[复制链接]
发表于 2015-7-14 20:24:49 | 显示全部楼层 |阅读模式
问题描述如下:已设置好一个布局,如何复制n个上述布局,并且将所有的布局的名称改掉?
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2015-7-15 14:06:49 | 显示全部楼层
Command: layout
Enter layout option [Copy/Delete/New/Template/Rename/SAveas/Set/?] <set>: c
Enter name of layout to copy <Layout1>:
Enter layout name for copy <Layout1 (3)>: 新图1
Layout "Layout1" copied to "新图1".
 楼主| 发表于 2015-7-15 15:24:15 | 显示全部楼层
edata 发表于 2015-7-15 14:06
Command: layout
Enter layout option [Copy/Delete/New/Template/Rename/SAveas/Set/?] : c
Enter name  ...

用vlisp语言怎么实现?
发表于 2015-7-15 17:20:09 | 显示全部楼层

    (vl-cmdf "_.layout" "_copy" clayoutName tmpName)
    (vl-cmdf "_.layout" "_rename" clayoutName NLayoutName)
 楼主| 发表于 2015-7-15 17:50:33 | 显示全部楼层
edata 发表于 2015-7-15 17:20
(vl-cmdf "_.layout" "_copy" clayoutName tmpName)
    (vl-cmdf "_.layout" "_rename" clayoutNam ...

有没有更加高级的方法?
发表于 2015-7-15 18:31:17 | 显示全部楼层
高级的代码不止一行。
参见LEE-MAC的布局分图
  1. (defun c:layoutcutter ( / cnt doc idx lay lst new prf psp sel str tmp )
  2.     (setq prf "Layout"
  3.           psp (= 1 (getvar 'cvport))
  4.     )
  5.     (if (setq sel (ssget "_:L" (list (if psp (cons 410 (getvar 'ctab)) '(410 . "Model")))))
  6.         (progn
  7.             (setq doc (vla-get-activedocument (vlax-get-acad-object))
  8.                   lay (vla-get-activelayout doc)
  9.                   tmp (mapcar 'strcase (cons "model" (layoutlist)))
  10.                   cnt 0
  11.             )
  12.             (while (member (strcase (setq str (strcat prf (itoa (setq cnt (1+ cnt)))))) tmp))
  13.             (setq new (vla-add (vla-get-layouts doc) str))
  14.             (repeat (setq idx (sslength sel))
  15.                 (setq lst (cons (vlax-ename->vla-object (ssname sel (setq idx (1- idx)))) lst))
  16.             )
  17.             (vlax-invoke doc 'copyobjects
  18.                 (if psp (cons (vla-item (vla-get-block lay) 0) (reverse lst)) (reverse lst))
  19.                 (vla-get-block new)
  20.             )
  21.             (foreach obj lst (vla-delete obj))
  22.             (if psp
  23.                 (foreach prp
  24.                    '(
  25.                         PlotType
  26.                         PlotHidden
  27.                         PlotOrigin
  28.                         PlotRotation
  29.                         PlotViewportBorders
  30.                         PlotViewportsFirst
  31.                         PlotWithLineweights
  32.                         PlotWithPlotStyles
  33.                         ScaleLineweights
  34.                         ShowPlotStyles
  35.                         StandardScale
  36.                         StyleSheet
  37.                         UseStandardScale
  38.                         CanonicalMediaName
  39.                         CenterPlot
  40.                         ConfigName
  41.                         PaperUnits
  42.                     )
  43.                     (vl-catch-all-apply 'vlax-put-property (list new prp (vlax-get-property lay prp)))
  44.                 )
  45.             )
  46.         )
  47.     )
  48.     (princ)
  49. )
  50. (vl-load-com) (princ)
 楼主| 发表于 2015-7-15 18:45:29 | 显示全部楼层
edata 发表于 2015-7-15 18:31
高级的代码不止一行。
参见LEE-MAC的布局分图

膜拜,最近正在学习和布局有关的函数,发现这方面的资料好少呀!
 楼主| 发表于 2015-7-15 21:05:02 | 显示全部楼层
edata 发表于 2015-7-15 18:31
高级的代码不止一行。
参见LEE-MAC的布局分图

请教前辈,我发现,如果有几个布局的话,改掉中间的布局名称,对布局的实际顺序(在程序中的顺序)会产生影响,这个怎么解决?我希望它们还是我们看到的自左向右的顺序。
发表于 2015-7-16 10:34:00 | 显示全部楼层
那么你可以研究这个。
http://lee-mac.com/lisp/html/TabSortV2-2.html
发表于 2015-7-27 12:00:56 | 显示全部楼层
edata 发表于 2015-7-15 18:31
高级的代码不止一行。
参见LEE-MAC的布局分图

别人都称你e大,真不亏是e大
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-21 18:22 , Processed in 0.223232 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表