继续顶,有高手在等到吗?
illcyt 发表于 2012-7-26 08:36 static/image/common/back.gif
相同文字修改,你用find修改不就行了吗,或者很多类似find的插件可以查找替换修改的
find不行,因为图中可能只是某几个地方相关联,有些虽然一样但并不关联。
个人觉得反应器比较能符合实际需求。话说这个悬赏开的够高了,G版应该有兴趣搞搞吧。
没多大用处吧,同一文字应该不会很多
仲文玉 发表于 2012-7-26 21:34 static/image/common/back.gif
没多大用处吧,同一文字应该不会很多
但是这个对我来说用处就大着了
这个几个文字相关联的文件多了改起来就很方便,也许你说用find吧
可是我需要的做成一个模板,以后都可以用哦,呵呵
其实,我本来想找一个“关联复制”的程序的,所有东西关联复制之后都可以随便修改的,但这个可能难度更大,所以先单求一个文字关联算了。
ORCHI 发表于 2012-7-26 21:20 static/image/common/back.gif
find不行,因为图中可能只是某几个地方相关联,有些虽然一样但并不关联。
个人觉得反应器比较能符合实际 ...
find不是可以手动框选吗
本帖最后由 Gu_xl 于 2012-7-27 14:31 编辑
;;(c:wzgl) 相同文字关联
(defun c:wzgl(/ SS GROUPTAG N E EL OBJ HAND)
(setq ss (ssget ":L" '((0 . "*text")(-4 . "<not") (-3 ("WZGL")) (-4 . "not>") )))
(if ss
(progn
(setq groupTag (rtos (getvar 'cdate) 2 8))
(regapp groupTag) (regapp "WZGL")
(repeat (setq n (sslength ss))
(setq e (ssname ss (setq n (1- n)))
el (entget e)
el (append el (list (list -3 (list "WZGL" (cons 1000 groupTag))(list groupTag (cons 1000 groupTag)))))
obj(vlax-ename->vla-object e)
hand (cdr (assoc 5 el))
)
(entmod el)
(vlr-pers (VLR-Object-Reactor
(list obj)
(list groupTag hand)
'((:VLR-modified . gxl-Text-Change)))) ;_ 添加永久反应器
)
)
)
(princ)
)
;;(c:qxwzgl) 取消文字关联
(defun c:qxwzgl (/ SS HANDS VLROBJECTS VLRDATA TAG TAGS HAND kd filter doc)
(setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
(initget "Sel All")
(setq kd
(cond
((getkword "\n取消文字关联选项[仅所选文字Sel/所选文字全部相关All]<All>"))
("All")
)
)
(setq ss (ssget ":L" '((0 . "*text") (-3 ("WZGL")))))
(if ss
(progn
(if (= "All" kd)
(progn
(gxl-sel-mapcar
ss
'(lambda (x / tag)
(setq tag (cdr(cadadr(assoc -3 (entget x '("WZGL"))))))
(if (not (member tag tags)) (setq tags (cons tag tags)))
)
)
(setq filter (mapcar '(lambda (x) (list -3(list "WZGL") (list x ))) tags))
(Setq ss (ssget "x"
(append
(list '(0 . "*text") '(-4 . "<or"))
filter
'((-4 . "or>"))
)
)
)
)
)
(setq hands (gxl-sel-mapcar ss '(lambda (X) (gxl-dxfx 5))))
(setq vlrobjects (car(vlr-reactors :VLR-Object-Reactor))) ;_ 获取图形全部对象反应器
(foreach vlr(cdr vlrobjects) ;_ 过滤其他对象反应器
(if
(and
(setq vlrdata (vlr-data vlr))
(= 'list (type vlrdata))
(setq tag (car vlrdata))
(setq hand (cadr vlrdata))
)
(progn
(if (member hand hands)
(progn
(vlr-owner-remove vlr (vla-HandleToObject doc hand))
)
)
)
)
)
(gxl-sel-mapcar
ss
'(lambda (x / a)
(if (setq a (assoc -3 (entget x '("WZGL"))))
(entmod
(append (entget x)
(list (list -3 '("WZGL") (list (cdr(cadadr a)))))
)
)
)
)
)
)
)
(princ)
)
;;gxl-Text-Change 回调函数
(defun gxl-Text-Change (TEXT-OBJECT
REACTOR-OBJECT PARAMETER-LIST
/ DATA TAGHAND
STRINGSS VLROBJECTSVLRDATA
N vlrs Hands e)
(setq data (vlr-data Reactor-Object)
tag (car data)
hand (cadr data)
string (vla-get-textstring Text-Object)
)
(setq ss (ssget "x" (list '(0 . "*text") (list -3 (list tag)))))
(ssdel (vlax-vla-object->ename Text-Object) ss)
(setq vlrobjects (car(vlr-reactors :VLR-Object-Reactor))) ;_ 获取图形全部对象反应器
(foreach vlr (cdr vlrobjects) ;_ 过滤其他对象反应器
(if
(and
(setq vlrdata (vlr-data vlr))
(= 'list (type vlrdata))
(= (car vlrdata) tag)
(/= (cadr vlrdata) hand)
)
(progn
(setq vlrs (cons vlr vlrs))
(setq Hands (cons (cadr vlrdata) Hands))
(vlr-remove vlr) ;_ 禁用text的对象反应器,防止嵌套调用反应器,导致系统崩溃
)
)
)
(if (> (setq n (sslength ss)) 0)
(repeat n
(vla-put-textstring (vlax-ename->vla-object (setq e (ssname ss (setq n (1- n))))) string)
(if (not (member (setq hand (cdr (assoc 5 (entget e)))) Hands))
(vlr-pers (VLR-Object-Reactor
(list (vlax-ename->vla-object e))
(list tag hand)
'((:VLR-modified . gxl-Text-Change))))
) ;_ 添加永久反应器,使得被复制的对象可以自动添加反应器
)
)
;;恢复启用反应器
(foreach vlr vlrs (vlr-add vlr))
(princ)
)
(defun gxl-dxf (ent i)
(cond ((= (type ent) 'ename)
(cdr (assoc i (entget ent '("*"))))
)
((= (type ent) 'list)
(cdr (assoc i ent))
)
) ;_ if
)
(defun gxl-Sel-Mapcar (ss Fun / nn rtn)
(if ss
(repeat (setq nn (sslength ss))
(setq rtn (cons (apply Fun (list (ssname ss (setq nn (1- nn))))) rtn))
)
)
)
本帖最后由 lz123456 于 2012-7-27 11:34 编辑
G版,文字关联后,如果再用那命令选择到了那原来关联了的文字,CAD就崩溃了,最好是能过滤掉或者提供个选项去掉关联
标高问题想解决啊
本帖最后由 myjping 于 2012-7-27 11:54 编辑
不错,很好用,但应该加个消除关联的
同时在关联的两个文字间应加个东东标识,比如相关联的形成组,组散了就不关联了,组另复制后,只有组内的关联
Gu_xl 发表于 2012-7-27 09:35 static/image/common/back.gif
关联后移动会带动其他联动文字。移动关联文字和其他物体时,其他物体会产生丢失现象