ksperopoulos 发表于 2022-7-6 11:00:16

删除所有布局选项卡

我在这里得到了这个lisp(Lee Mac),我试图从中删除“删除所有布局选项卡”部分,并将其放入一个新的lisp例程。但由于我刚刚开始学习lisps,我很难找到我到底需要做什么。请帮忙。
 

(defun c:Brian (/ *error* uFlag)
(vl-load-com)

(defun *error* (msg)
   (and uFlag (vla-EndUndoMark *doc))
   (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
       (princ (strcat "\n** Error: " msg " **")))
   (princ))

(setq *doc (cond (*doc) ((vla-get-ActiveDocument
                            (vlax-get-acad-object)))))

(setq uFlag (not (vla-StartUndoMark *doc)))

(vlax-for blk (vla-get-Blocks *doc)

   (if (eq :vlax-true (vla-get-isXref blk))
   (if (vl-catch-all-error-p
         (vl-catch-all-apply
             (function vla-Detach) (list blk)))
       (princ (strcat "\n** Error Detaching Xref: "
                      (vla-get-name blk) " **")))))

(vlax-for lay (vla-get-Layers *doc)   
   (vla-put-Lineweight lay acLnWt025)
   (vla-put-LayerOn lay :vlax-true))

(vlax-for lay (vla-get-layouts *doc)
   (if (not (eq "MODEL" (strcase (vla-get-Name lay))))
   (vla-delete lay)))

(vlax-for v (vla-get-views *doc)
   (vla-delete v))

(command "_.-scalelistedit" "_R" "_Y" "_E")

(vl-Catch-All-Apply
   (function
   (lambda nil
       (vla-Remove
         (vla-GetExtensionDictionary (vla-Get-Layers *doc)) "ACAD_LAYERFILTERS"))))

(if (setq states (layerstate-getnames t t))
   (mapcar (function layerstate-delete) states))

(repeat 3 (vla-PurgeAll *doc))

(mapcar (function setvar)

         '("CLAYER" "INSBASE"    "CANNOSCALE"    "LTSCALE" "MSLTSCALE" "PSLTSCALE")
         '("0"   (0 0 0)    "1/4\" = 1'-0\""   1         1         1    ))

(setq uFlag (vla-EndUndoMark *doc))
(princ))

jammie 发表于 2022-7-6 11:05:51

仅使用您从Lee的代码中提供的内容,以下几位是相关的
 
(setq *doc (cond (*doc)
       ((vla-get-ActiveDocument
          (vlax-get-acad-object)))))

(vlax-for lay(vla-get-layouts *doc)
(if (not (eq "MODEL" (strcase (vla-get-Name lay))))
   (vla-delete lay)))
 
当做
 
杰米

Lee Mac 发表于 2022-7-6 11:11:48

此外,这可能会有所帮助

ksperopoulos 发表于 2022-7-6 11:17:20

谢谢你们!

ksperopoulos 发表于 2022-7-6 11:17:52

我还尝试将删除层状态命令合并到这个lisp例程中,但它并没有得到所有这些命令。知道为什么吗?

Lee Mac 发表于 2022-7-6 11:23:06

(if (setq states (layerstate-getnames t t))
   (mapcar (function layerstate-delete) states))

ksperopoulos 发表于 2022-7-6 11:26:50

李·麦克
 
这就是我所拥有的,但当我运行lisp时,它并没有得到我在图形中创建的所有图层状态。

Lee Mac 发表于 2022-7-6 11:32:40

不确定。我从来没用过分层状态

ksperopoulos 发表于 2022-7-6 11:35:15

我也是,但我四处打听过,这似乎是人们告诉我要消除的事情之一,以使绘图文件大小更小。这是我进入层状态时看到的消息的快照。

Lee Mac 发表于 2022-7-6 11:41:29

在命令行中尝试以下各项,并发布返回:
 

(layerstate-getnames t t)
 

(mapcar (function layerstate-delete) (layerstate-getnames t t))
页: [1] 2
查看完整版本: 删除所有布局选项卡