mstg007 发表于 2015-6-1 08:38:01

宏用字段替换文本

有人见过选择MTEXT然后单击将插入SheetSet标题以替换Mtext值的按钮或命令的方法吗?
谢谢
**** Hidden Message *****

ronjonp 发表于 2015-6-1 08:56:29

我相信您所要做的就是将文本替换为:%
%
所有字段表达式都可以在字段对话框的底部找到。

Master_Shake 发表于 2015-6-1 09:08:00

我不认为宏可以改变多行文字实体的值。
(defun c:TextChange (/ a b)
(vl-load-com)
(while T
      (setq a
               (car
             (nentsel "\nSelect text or mtext entity to change")))
                (if (or a
                                (setq b(entget a))
                                        (= (cdr (assoc 0 b)) "TEXT")
                                        (= (cdr (assoc 2 b)) "MTEXT")
                        ) ; end check
      (vla-put-TextString(vlax-ename->vla-object a) "%% ")        
      (princ "\n Invalid Selection")
      ); end if
                ) ; end while
   (princ)
); end

又快又脏。

mjfarrell 发表于 2015-6-1 09:56:03

或者,将该文本替换为标题栏、块…中的属性,然后将该属性设为字段…
attsync…并保存/重新保存。所有工作表都应达到所需的结果

mstg007 发表于 2015-6-1 10:28:58


我确实尝试了上面的方法,我得到了著名的 (####). 当我双击该字段时,它会在对话框字段类别的左上方显示为(未知)。除此之外,它很棒。

mjfarrell 发表于 2015-6-1 10:58:22

这张纸是一套纸的一部分吗?
如果不是,那么人们应该期待####

mstg007 发表于 2015-6-1 11:01:59

它是图纸集的一部分。我只是尝试了这个命令,保存了文件,关闭了它,然后通过图纸集管理器重新打开了图纸。还有著名的(##。CAD版本不重要,对吗?

ronjonp 发表于 2015-6-1 11:15:04

只需快速查看一下,但实体检查永远不会在上面的代码中使用OR进行评估:
(or a (setq b (entget a)) (= (cdr (assoc 0 b)) "TEXT") (= (cdr (assoc 2 b)) "MTEXT")) ; end check相反,我会使用:
(wcmatch (cdr (assoc 0 (entget a))) "*TEXT")

mstg007 发表于 2015-6-1 11:21:38

感谢您查看。我想我发现了这个问题。在上面的lisp中,它要求完整的“%
%”。但是当我去编辑字段时,它将字段表达式显示为“%
%”,其中没有(\)。

ronjonp 发表于 2015-6-1 11:23:11

使用:“%
%”
页: [1] 2
查看完整版本: 宏用字段替换文本