layout命令生成的NewLayout保持了和SourceLayout相同的系统变量psltscale的值
程序生成的NewLayout如果不作一些工作,系统变量psltscale的值是系统默认值1
这看起来系统变psltscale是随Layout对象保存的?
如果是,Layout对象怎么没有这个属性?也就是没有方法通过Layout对象来设定这个值? 再試試看
;|
(setq *ACADOBJECT* (vlax-get-acad-object))
(setq *CDOC* (vla-get-activedocument *ACADOBJECT*))
(setq *SOURCELAYOUT* (vla-get-activelayout *CDOC*))
(setq SNEWLAYOUTNAME "LAI")
(setq *LAYOUTS* (vla-get-layouts *CDOC*))
|;
;;(LKPT:LAYOUT:MULTICOPY:COPYFROM *SOURCELAYOUT* SNEWLAYOUTNAM)
(defun LKPT:LAYOUT:MULTICOPY:COPYFROM (SOURCELAYOUT SNEWLAYOUTNAM)
(setq SOURCELAYOUTBLOCK
(vla-get-block SOURCELAYOUT)
;;; iCount (vla-get-Count SourceLayoutBlock)
;;; SourceLayoutBlock-Objects-list '()
)
;;;(vlax-for item SourceLayoutBlock
;;; (setq SourceLayoutBlock-Objects-list (cons item SourceLayoutBlock-Objects-list))
;;;)
(setq NEWLAYOUT (vla-add *LAYOUTS* SNEWLAYOUTNAME)
NEWLAYOUTBLOCK (vla-get-block NEWLAYOUT)
)
;;;(vla-copyobjects
;;; CDoc
;;; (vlax-safearray-fill
;;; (vlax-make-safearray
;;; vlax-vbobject
;;; (cons 0 (1- iCount))
;;; )
;;; SourceLayoutBlock-Objects-list
;;; )
;;; NewLayoutBlock
;;;)
(vlax-for ITEM SOURCELAYOUTBLOCK
(vla-copyobjects
*CDOC*
(vlax-safearray-fill
(vlax-make-safearray vlax-vbobject '(0 . 0))
(list ITEM)
)
NEWLAYOUTBLOCK
)
)
(vla-copyfrom NEWLAYOUT SOURCELAYOUT)
(mapcar 'vlax-release-object
(list SOURCELAYOUTBLOCK NEWLAYOUTBLOCK NEWLAYOUT)
)
)
这个CopyObjects不是复制多个对象吗?
怎么不能把多个对象fill到SafeArray中来作呢?
一定要一个一个来for ? ;;TRY因看來也不會比較快!
(defun TTT (NEWLAYOUTNAME)
(setq ACADOBJECT (vlax-get-acad-object))
(setq CDOC (vla-get-activedocument ACADOBJECT))
(setq LAYOUTS (vla-get-layouts CDOC))
(setq CLAYOUT (vla-get-activelayout CDOC))
(setq CLAYOUT_BLK (vla-get-block CLAYOUT))
(setq NEWLAYOUT (vla-add LAYOUTS NEWLAYOUTNAME))
(setq NEWLAYOUT_BLK (vla-get-block NEWLAYOUT))
(setq ELIST '())
(setq SSARRAY (vlax-safearray-fill
(vlax-make-safearray
vlax-vbobject
(cons 0 (- (vla-get-count CLAYOUT_BLK) 1))
)
(vlax-for ENT CLAYOUT_BLK
(setq ELIST (cons ENT ELIST))
)
)
)
(vla-copyobjects CDOC SSARRAY NEWLAYOUT_BLK)
(vla-copyfrom NEWLAYOUT CLAYOUT)
(princ)
)
e2002发表于2003-9-17 16:40:00static/image/common/back.gif发现一个问题:
layout命令生成的NewLayout保持了和SourceLayout相同的系统变量psltscale的值
程序生成的NewLayout如果不作一些工作,系统变量psltscale的值是系统默认值1
这看起来系统变
看书上这一节终于明白了....
"AutoCAD 2000 对象开发从入门到精通" 真是绝版好书!
原版书名 : Mastering AutoCAD 2000 Objects
作者 : Dietmar Rudolph
书号 : isbn7-5053-6172-4/TP.3312 顶起来 ,这么好的东西不能被人遗忘了。 自贡黄明儒 发表于 2014-10-23 14:08 static/image/common/back.gif
顶起来 ,这么好的东西不能被人遗忘了。
呵呵,黄大哥又发现好东西了,具体有什么作用呢?
页:
1
[2]