LISP也可以利用ObjectDBX对未打开的图形进行操作
(vl-load-com)(setq *objectdbx* "ObjectDBX.AxDbDocument")
(defun RegServer (server)
(startapp
"regsvr32.exe"
(strcat "/s \"" server "\"")
)
)
;; Get CLSID from ProgID
(defun GetClassID (ProgID)
(vl-registry-read
(strcat "HKEY_CLASSES_ROOT\\" progid "\\CLSID")
)
)
;; Register ObjectDBX ActiveX services,
;; if not already registered.
(defun RegisterObjectDBX ( / server)
(cond
((GetClassID *ObjectDBX*))
((not (setq server (findfile "AxDb15.dll")))
(alert "Error: Can't locate ObjectDBX Library (AxDb15.dll)"))
(t (regserver server)
(or
(GetClassID *ObjectDBX*)
(alert "Error: Failed to register ObjectDBX ActiveX services.")
)
)
)
) 本帖最后由 highflybird 于 2011-3-31 11:39 编辑
例如下面的例子,是对没打开的图形进行文字式样替换,在某些情况下很有用。
(defun c:ttt(/ cadVer name dbx styles)
(setq CadVer (substr (getvar "acadver") 1 2))
(setq name (strcat "ObjectDBX.AxDbDocument." CadVer))
(setq dbx (vlax-create-object name)) ;;创建dbx对象
(vla-open dbx "D:/work/test.dwg")
(setq styles (vla-get-TextStyles dbx))
(vlax-for n styles
(if (/= (vla-get-bigfontfile n) "")
(vla-put-bigfontfile n "hztxt.shx") ;;替换成hztxt.
)
(vla-put-fontfile n "c:/windows/fonts/SimFang.TTF") ;;替换成仿宋体
)
(vla-saveas dbx "D:/work/test.dwg")
(princ)
)
老大,举个例子吧,看不懂怎么用,怎么才能得到其他cad文件的指针呢? 回复 ahwx0814 的帖子
去我的博客看看吧,里面有个"利用ObjectDBX技术不打开CAD文件替换文字"例子! 回复 Gu_xl 的帖子
对不打开cad图形文件,替换其中的文字的问题,我已找了几天了,今天看到Gu_xl 的博客里有“利用ObjectDBX技术不打开CAD文件替换文字",试了试出现下面的情况
命令: gxl-RePlaceText1
程序编制byGu_xl,2010年7月
输入源文字:西安80坐标系
输入要替换的文字:北京1954
继续输入替换文字<Yes>:n
替换方式[仅替换文本<0>/仅替换块中文本<1>/全部替换<2>]仅替换文本<0>0
;错误: no function definition: GXL-FILE-GETFOLDER
不知道是为什么 ,还请Gu_xl 帮助看看,谢谢! 回复 xuexicad1960 的帖子
去这下载通用函数:
http://u.sohu.com/download/10/13009522634827141620161 回复 Gu_xl 的帖子
通用函数已下载,程序也正常运行了,无论我用哪个替换方式0、1、2最后都显示共完成0处文本替换!莫非程序对文本样式还有要求吗?
为了说明问题,附文字样图一份。
由于沟通出现问题,图廓外坐标系\ 高程系有时要进行变更,所以出现了替换文字的问题。由于刚学习autolisp,解决这样的问题还很困难,到这里来学习。
"利用ObjectDBX技术不打开CAD文件替换文字",出现上面的情况是我输入源文字:西安80坐标系 这里出现失误,原图是 西安80坐标系。我理解错了少输入了个“。” 源文字要输入一整句,不可输入部分。谢谢Gu_xl 版主的程序,我收藏了。
想参照你的程序,编个不开文件,关闭图层。技术上可行吗?谢谢。 Gu_xl 发表于 2011-3-30 19:24
回复 ahwx0814 的帖子
去我的博客看看吧,里面有个"利用ObjectDBX技术不打开CAD文件替换文字"例子!
版主,你的博客怎么是锁定状态的?
页:
[1]
2