乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: CAB

在封闭绘图中查找文本

[复制链接]

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2004-10-5 18:17:35 | 显示全部楼层
如果我能找到它,但我不记得它停止工作的Acad版本...
回复

使用道具 举报

CAB

29

主题

781

帖子

430

银币

中流砥柱

Rank: 25

铜币
526
发表于 2004-10-6 00:05:36 | 显示全部楼层

我刚刚将一个VBA项目文件“TextFind&Replace.dvb”放在池塘中,允许您选择在哪个目录中查找图形,选择要搜索的图形,搜索短语和替换内容
此时,它不会列出找到文本并修改的图形,但添加该功能也不会太难。这是一项正在进行的工作,基于CADVault.com上的代码。事实上,整个文件夹/文件浏览都是从那里开始的代码
欢迎反馈,并将产生更为完美的最终产品
哦,2004年之前的ACAD用户必须确保该对象。DBX可以使用。如果不确定,请运行此小代码段以确定。
  1. (if (and (= (atoi (getvar "AcadVer")) 15)
  2.                (not (vl-registry-read "HKEY_CLASSES_ROOT\\ObjectDBX.AxDbDocument\\CLSID"))
  3.                )
  4.         (startapp "regsvr32.exe" (strcat "/s "" (findfile "axdb15.dll") """))
  5.         )

杰夫
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2004-10-6 07:37:40 | 显示全部楼层
Jeff
它在这里停止
Dim bolMod 作为布尔值: bolMod = false
编译错误
无效 外部过程
回复

使用道具 举报

10

主题

153

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
193
发表于 2004-10-6 10:33:32 | 显示全部楼层
对不起,CAB-
我在测试后将一条应该拆分的线移动到公共区域。如果您将代码编辑为此,它将起作用。
  1. Dim strNew As String
  2. Dim bolMod As Boolean 'EDIT this line
  3. Private Sub UserForm_Initialize()
  4.   'Set up
  5.   Set objDbx = GetInterfaceObject("ObjectDBX.AxDbDocument")
  6.   Me.Caption = "Object DBX Batch Process"
  7.   ListBox1.MultiSelect = fmMultiSelectMulti
  8.   CommandButton1.Caption = "Browse for folder"
  9.   CommandButton2.Caption = "Process Selection"
  10.   CommandButton3.Caption = "Exit"
  11.   bolMod = False 'ADD this line
  12. End Sub

回复

使用道具 举报

CAB

29

主题

781

帖子

430

银币

中流砥柱

Rank: 25

铜币
526
发表于 2004-10-6 15:09:42 | 显示全部楼层
CAB,
这是一个通过 vlisp 的 ObjectDBX 方法。 尝试一下,让我知道它如何为你服务。
  1. (vl-load-com)
  2. (defun *error* (msg)
  3.   (princ "\nError: ")
  4.   (princ msg)
  5.   (princ)
  6.   (if (and dbxdoc (not (vlax-object-released-p dbxdoc)))
  7.     (vlax-release-object dbxdoc)
  8.   )
  9.   (gc)
  10.   (princ)
  11. )
  12. (defun DLLRegister (dll)
  13.   (startapp "regsvr32.exe" (strcat "/s "" dll """))
  14. )
  15. (defun ProgID->ClassID (ProgID)
  16.   (vl-registry-read
  17.     (strcat "HKEY_CLASSES_ROOT\" progid "\\CLSID")
  18.   )
  19. )
  20. (defun DBX-Register (/)
  21.   (if (/= (getvar "ACADVER") "15.0")
  22.     (setq classname "ObjectDBX.AxDbDocument.16")
  23.     (setq classname "ObjectDBX.AxDbDocument")
  24.   )
  25.   (cond
  26.     ((ProgID->ClassID classname))
  27.     ((and
  28.        (setq server (findfile "AxDb15.dll"))
  29.        (DLLRegister server)
  30.        (ProgID->ClassID classname)
  31.      )
  32.      (ProgID->ClassID classname)
  33.     )
  34.     ((not (setq server (findfile "AxDb15.dll")))
  35.      (alert
  36.        "Error: Cannot locate ObjectDBX Type Library (AxDb15.dll)..."
  37.      )
  38.     )
  39.     (T
  40.      (DLLRegister "ObjectDBX.AxDbDocument")
  41.      (or
  42.        (ProgID->ClassID "ObjectDBX.AxDbDocument")
  43.        (alert
  44.          "Error: Failed to register ObjectDBX ActiveX services..."
  45.        )
  46.      )
  47.     )
  48.   )
  49. )
  50. (defun findphrase (phrase document / count)
  51.   (setq count 0)
  52.   (vlax-for item (vla-get-modelspace document)
  53.     (cond ((or (eq (vla-get-ObjectName item) "AcDbText")
  54.                (eq (vla-get-ObjectName item) "AcDbMText")
  55.            )
  56.            (if (vl-string-search phrase (vla-get-textstring item))
  57.              (setq count (1+ count))
  58.            )
  59.           )
  60.           ((and        (eq (vla-get-Objectname item) "AcDbBlockReference")
  61.                 (eq (vla-get-hasattributes item) :vlax-true)
  62.            )
  63.            (foreach for-item (get_atts item)
  64.              (if (vl-string-search phrase (vla-get-textstring for-item))
  65.                (setq count (1+ count))
  66.              )
  67.            )
  68.           )
  69.     )
  70.   )
  71.   count
  72. )
  73. (defun get_atts        (obj)
  74.   (vlax-safearray->list
  75.     (vlax-variant-value
  76.       (vla-getattributes obj)
  77.     )
  78.   )
  79. )
  80. (defun c:tfar (/ file files str dbxdoc of lst wil classname)
  81.   (setq file "")
  82.   (while (setq file (getfiled "Select a file to replace text in" file "dwg" 128))
  83.     (setq files (cons file files))
  84.   )
  85.   (cond        ((not files) (princ "No files were selected."))
  86.         ((not (setq str (getstring T "Enter search phrase?  ")))
  87.          (princ "\nSearch phrase is missing. ")
  88.         )
  89.         ((not (DBX-Register)) (princ "Unable to load ObjectDBX."))
  90.         ((not (setq dbxdoc (vla-GetInterfaceObject
  91.                              (vlax-get-acad-object)
  92.                              classname
  93.                            )
  94.               )
  95.          )
  96.          (princ "Unable to load ObjectDBX.")
  97.         )
  98.         (T
  99.          (foreach f (reverse files)
  100.            (setq of  (vl-catch-all-apply
  101.                        '(lambda        ()
  102.                           (vlax-invoke-method dbxdoc 'open f)
  103.                         )
  104.                      )
  105.                  lst (if (vl-catch-all-error-p of)
  106.                        (list f "File was read only. ")
  107.                        (list f (findphrase str dbxdoc))
  108.                      )
  109.                  wil (cons lst wil)
  110.            )
  111.          )
  112.         )
  113.   )
  114.   (if (and dbxdoc (not (vlax-object-released-p dbxdoc)))
  115.     (vlax-release-object dbxdoc)
  116.   )
  117.   (gc)
  118.   (textscr)
  119.   (mapcar '(lambda (x)
  120.              (princ
  121.                (strcat "\n"
  122.                        (car x)
  123.                        "\n"
  124.                        (cond ((eq (type (cadr x)) 'INT)
  125.                               (strcat (itoa (cadr x))
  126.                                       " text entities matched your phrase."
  127.                               )
  128.                              )
  129.                              (T (cadr x))
  130.                        )
  131.                )
  132.              )
  133.            )
  134.           wil
  135.   )
  136.   (princ)
  137. )
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-7 03:30 , Processed in 0.409488 second(s), 60 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表