明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6275|回复: 10

[源码] LISP也可以利用ObjectDBX对未打开的图形进行操作

  [复制链接]
发表于 2002-3-30 15:05:00 | 显示全部楼层 |阅读模式
  1. (vl-load-com)

  2. (setq *objectdbx* "ObjectDBX.AxDbDocument")

  3. (defun RegServer (server)
  4.    (startapp
  5.       "regsvr32.exe"
  6.       (strcat "/s \"" server "\"")
  7.    )
  8. )

  9. ;; Get CLSID from ProgID

  10. (defun GetClassID (ProgID)
  11.    (vl-registry-read
  12.       (strcat "HKEY_CLASSES_ROOT\\" progid "\\CLSID")
  13.    )
  14. )

  15. ;; Register ObjectDBX ActiveX services,
  16. ;; if not already registered.

  17. (defun RegisterObjectDBX ( / server)
  18.    (cond
  19.       (  (GetClassID *ObjectDBX*))
  20.       (  (not (setq server (findfile "AxDb15.dll")))
  21.          (alert "Error: Can't locate ObjectDBX Library (AxDb15.dll)"))
  22.       (t (regserver server)
  23.          (or
  24.             (GetClassID *ObjectDBX*)
  25.             (alert "Error: Failed to register ObjectDBX ActiveX services.")
  26.          )
  27.       )
  28.    )
  29. )
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2011-3-31 11:37:39 | 显示全部楼层
本帖最后由 highflybird 于 2011-3-31 11:39 编辑

例如下面的例子,是对没打开的图形进行文字式样替换,在某些情况下很有用。
  1. (defun c:ttt(/ cadVer name dbx styles)
  2.   (setq CadVer (substr (getvar "acadver") 1 2))
  3.   (setq name (strcat "ObjectDBX.AxDbDocument." CadVer))  
  4.   (setq dbx (vlax-create-object name))                                 ;;创建dbx对象
  5.   (vla-open dbx "D:/work/test.dwg")                                      
  6.   (setq styles (vla-get-TextStyles dbx))
  7.   (vlax-for n styles
  8.     (if (/= (vla-get-bigfontfile n) "")
  9.       (vla-put-bigfontfile n "hztxt.shx")                                        ;;替换成hztxt.
  10.     )
  11.     (vla-put-fontfile n "c:/windows/fonts/SimFang.TTF")               ;;替换成仿宋体
  12.   )
  13.   (vla-saveas dbx "D:/work/test.dwg")
  14.   (princ)
  15. )


回复 支持 1 反对 0

使用道具 举报

发表于 2011-3-30 16:55:19 | 显示全部楼层
老大,举个例子吧,看不懂怎么用,怎么才能得到其他cad文件的指针呢?
发表于 2011-3-30 19:24:42 | 显示全部楼层
回复 ahwx0814 的帖子

去我的博客看看吧,里面有个"利用ObjectDBX技术不打开CAD文件替换文字"例子!
发表于 2011-4-3 16:31:16 | 显示全部楼层
回复 Gu_xl 的帖子

对不打开cad图形文件,替换其中的文字的问题,我已找了几天了,今天看到Gu_xl 的博客里有“利用ObjectDBX技术不打开CAD文件替换文字",试了试出现下面的情况
命令: gxl-RePlaceText1
程序编制byGu_xl,2010年7月
输入源文字:西安80坐标系
输入要替换的文字:北京1954
继续输入替换文字[Yes/No]<Yes>:n
替换方式[仅替换文本<0>/仅替换块中文本<1>/全部替换<2>]仅替换文本<0>0
;错误: no function definition: GXL-FILE-GETFOLDER
不知道是为什么 ,还请Gu_xl 帮助看看,谢谢!
发表于 2011-4-3 19:57:39 | 显示全部楼层
发表于 2011-4-3 22:57:37 | 显示全部楼层
回复 Gu_xl 的帖子


通用函数已下载,程序也正常运行了,无论我用哪个替换方式0、1、2最后都显示共完成0处文本替换!莫非程序对文本样式还有要求吗?
为了说明问题,附文字样图一份。
由于沟通出现问题,图廓外坐标系\ 高程系有时要进行变更,所以出现了替换文字的问题。由于刚学习autolisp,解决这样的问题还很困难,到这里来学习。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2011-4-6 22:22:08 | 显示全部楼层
"利用ObjectDBX技术不打开CAD文件替换文字",出现上面的情况是我  输入源文字:西安80坐标系 这里出现失误,原图是   西安80坐标系。  我理解错了少输入了个“。”   源文字要输入一整句,不可输入部分。谢谢Gu_xl 版主的程序,我收藏了。

发表于 2011-12-20 11:51:33 | 显示全部楼层
想参照你的程序,编个不开文件,关闭图层。技术上可行吗?谢谢。
发表于 2020-3-2 18:43:14 | 显示全部楼层
Gu_xl 发表于 2011-3-30 19:24
回复 ahwx0814 的帖子

去我的博客看看吧,里面有个"利用ObjectDBX技术不打开CAD文件替换文字"例子!

版主,你的博客怎么是锁定状态的?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-15 18:33 , Processed in 0.195238 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表