高级的代码不止一行。
参见LEE-MAC的布局分图
 - (defun c:layoutcutter ( / cnt doc idx lay lst new prf psp sel str tmp )
- (setq prf "Layout"
- psp (= 1 (getvar 'cvport))
- )
- (if (setq sel (ssget "_:L" (list (if psp (cons 410 (getvar 'ctab)) '(410 . "Model")))))
- (progn
- (setq doc (vla-get-activedocument (vlax-get-acad-object))
- lay (vla-get-activelayout doc)
- tmp (mapcar 'strcase (cons "model" (layoutlist)))
- cnt 0
- )
- (while (member (strcase (setq str (strcat prf (itoa (setq cnt (1+ cnt)))))) tmp))
- (setq new (vla-add (vla-get-layouts doc) str))
- (repeat (setq idx (sslength sel))
- (setq lst (cons (vlax-ename->vla-object (ssname sel (setq idx (1- idx)))) lst))
- )
- (vlax-invoke doc 'copyobjects
- (if psp (cons (vla-item (vla-get-block lay) 0) (reverse lst)) (reverse lst))
- (vla-get-block new)
- )
- (foreach obj lst (vla-delete obj))
- (if psp
- (foreach prp
- '(
- PlotType
- PlotHidden
- PlotOrigin
- PlotRotation
- PlotViewportBorders
- PlotViewportsFirst
- PlotWithLineweights
- PlotWithPlotStyles
- ScaleLineweights
- ShowPlotStyles
- StandardScale
- StyleSheet
- UseStandardScale
- CanonicalMediaName
- CenterPlot
- ConfigName
- PaperUnits
- )
- (vl-catch-all-apply 'vlax-put-property (list new prp (vlax-get-property lay prp)))
- )
- )
- )
- )
- (princ)
- )
- (vl-load-com) (princ)
|