cheng5276 发表于 2012-3-7 09:29:10

请教不开图,DBX插入图块

;RetVal = object.InsertBlock(InsertionPoint, Name, Xscale, Yscale, ZScale, Rotation [, Password])
;想通过不开图在目标图中的指定点插入图中已有的图块对象,不成功。
;但查看(dump) DBX是有InsertBlock方法的
;另外[, Password]如何用,我没查到相关的用法。
;请高手们指点迷津。
(defun c:tt()
(setq dbx (cheng5276-dbx "c:\\02.dwg"))
(Vla-InsertBlock (Vlax-Get dbx 'ModelSpace) (vlax-3d-point '(0 0 0)) "aaa" 1 1 1 0) ;插入不成功
(vla-saveas dbx "c:\\02.dwg")
(vlax-release-object dbx)
)
;创建DBX通用函数
(defun cheng5276-dbx (file / dbxstr dbx)
(setq DbxStr (if (< (atof (getvar "ACADVER")) 16.0) 
"ObjectDBX.AxDbDocument" 
(strcat "ObjectDBX.AxDbDocument." (substr (getvar "acadver") 1 2))
) 
) 
(setq dbx (Vlax-Get-Or-Create-Object DbxStr))
(if file (vla-open dbx file))
dbx
)

hhhlike 发表于 2012-9-22 08:58:17

最近也碰到这个问题,不知道有没有解决了

byghbcx 发表于 2012-9-22 11:09:53

AUTOCAD的设计中心可以直接拖入,没必要写程序

davide888 发表于 2013-11-12 17:00:26

我也想知道      

edata 发表于 2014-6-11 12:02:05

老帖也回一回
DBX插入文件,试试插入外部文件,密码"778899"是"A$C7EC4176F.dwg" 加密的密码。。(defun c:tt()
(setq dbx (cheng5276-dbx (findfile "20140611~11.dwg")))
(Vla-InsertBlock (Vlax-Get dbx 'ModelSpace) (vlax-3d-point '(0 0 0)) "A$C7EC4176F.dwg" 1 1 1 0 "778899") ;插入不成功
(vla-saveas dbx (findfile "20140611~11.dwg"))
(vlax-release-object dbx)
)
;创建DBX通用函数
(defun cheng5276-dbx (file / dbxstr dbx)
(setq DbxStr (if (< (atof (getvar "ACADVER")) 16.0) 
"ObjectDBX.AxDbDocument" 
(strcat "ObjectDBX.AxDbDocument." (substr (getvar "acadver") 1 2))
) 
) 
(setq dbx (Vlax-Get-Or-Create-Object DbxStr))
(if file (vla-open dbx file))
dbx
)

edata 发表于 2014-6-11 12:48:16

实现了当前文件的块插入到外部文件,应该是楼主所说的。。。
(defun c:tt()
(setq dbx (cheng5276-dbx (findfile "20140611~11.dwg")))
(setq mydoc(vla-get-activedocument(vlax-get-acad-object)))
(setq BLOCKS (vla-get-blocks mydoc))
(setq SB (vla-item BLOCKS "A$C7EC4176F" ))
(vla-copyobjects
   mydoc
   (vlax-safearray-fill
   (vlax-make-safearray
       vlax-vbobject
       '(0 . 0)
   )
   (list SB)
   )
   (Vlax-Get dbx 'ModelSpace)
)
(vlax-release-object SB)
(Vla-InsertBlock (Vlax-Get dbx 'ModelSpace) (vlax-3d-point '(0 0 0)) "A$C7EC4176F" 1 1 1 0 )
;(Vla-InsertBlock (Vlax-Get dbx 'ModelSpace) (vlax-3d-point '(0 0 0)) "A$C7EC4176F" 1 1 1 0 "778899") ;插入不成功
(vla-saveas dbx (findfile "20140611~11.dwg"))
(vlax-release-object dbx)
)
;创建DBX通用函数
(defun cheng5276-dbx (file / dbxstr dbx)
(setq DbxStr (if (< (atof (getvar "ACADVER")) 16.0) 
"ObjectDBX.AxDbDocument" 
(strcat "ObjectDBX.AxDbDocument." (substr (getvar "acadver") 1 2))
) 
) 
(setq dbx (Vlax-Get-Or-Create-Object DbxStr))
(if file (vla-open dbx file))
dbx
)

灰石Jeremy 发表于 2020-7-2 23:32:19

谢大神指导,最近也在琢磨
页: [1]
查看完整版本: 请教不开图,DBX插入图块