求一简单程序
在同一图纸内,点击一段文字,即跳转至与其内容相同的另一段文字处,如点击"7APEsp",就跳转至同一图纸的另一个"7APEsp"那里,先谢过各位赏脸看帖的大神了;显示下一字 明经 ZZXXQQ 2014.7.30
(defun c:tt ()
(vl-load-com)
(if (and(setq s1 (entsel "\n选择文字: "))
(setq ent (entget(car s1)))
(= (cdr(assoc 0 ent)) "TEXT")) (progn
(setq txt (cdr(assoc 1 ent)))
(if (>(sslength(setq ss (ssget "X" (list '(0 . "TEXT") (cons 1 txt))))) 1) (progn
(ssdel (car s1) ss)
(while (>(sslength ss) 0)
(setq en (ssname ss 0))
(ssdel en ss)
(vla-getboundingbox (vlax-ename->vla-object en) 'p1 'p2)
(setq p1 (vlax-safearray->list p1) p2 (vlax-safearray->list p2))
(command "_.ZOOM" "W" p1 p2)
(setq k (getpoint))
)
))
))
(princ)
)
;; 跳显相同文本
(defun c:tt ()
(if (setq ss (ssget ":E:S" '((0 . "text"))))
(progn
(if s2 (redraw s2 4))
(setq s1 (ssname ss 0))
(if (and (setq ss (ssget "X" (list '(0 . "TEXT") (cons 1 (xyp-DXF 1 s1)))))
(>= (sslength ss) 2)
)
(progn
(setq s2 (ssname (ssdel s1 ss) 0))
(redraw s2 3)
;(command "ZOOM" "W" (xyp-9pt s2 1) (xyp-9pt s2 9))
)
)
)
)
(princ)
) xyp1964 发表于 2014-7-30 22:32 static/image/common/back.gif
请问大师,能不能不放大,而是移动至其位置,亮显之类的 我的仿WORD查找和替换有类似功能,源码在论坛里 xyp1964 发表于 2014-7-30 22:32 static/image/common/back.gif
额,显示的是no function definition: XYP-DXF,麻烦大师看下哈 ZZXXQQ 发表于 2014-7-30 20:21 static/image/common/back.gif
请问大师,能不能不放大,而是移动至其位置,亮显之类的 如果同时有多个相同,变成随机跳,不如cad直接快速选择. kwok 发表于 2014-7-31 12:46 static/image/common/back.gif
如果同时有多个相同,变成随机跳,不如cad直接快速选择.
一般就只有两个唯一对应的 Z版平移亮显
(defun c:tt (/ ang cen cen2 en ent k new_p3 new_p4 p1 p2 p3 p4 s1 ss txt view_pts)
(vl-load-com)
(if (and(setq s1 (entsel "\n选择文字: "))
(setq ent (entget(car s1)))
(= (cdr(assoc 0 ent)) "TEXT"))
(progn
(setq txt (cdr(assoc 1 ent)))
(if (>(sslength(setq ss (ssget "X" (list '(0 . "TEXT") (cons 1 txt))))) 1)
(progn
(setvar 'cmdecho 0)
(ssdel (car s1) ss)
(while (>(sslength ss) 0)
(setq en (ssname ss 0))
(vla-getboundingbox (vlax-ename->vla-object en) 'p1 'p2)
(setq p1 (vlax-safearray->list p1) p2 (vlax-safearray->list p2))
(setq cen(mapcar '(lambda(x y)(*(+ x y) 0.5)) p1 p2))
(setq view_pts(zj-get-scr-coods))
(setq p3(car view_pts) p4 (cadr view_pts))
(setq cen2 (mapcar '(lambda(x y)(*(+ x y) 0.5)) p3 p4))
(setq ang(angle p3 p4))
(setq new_p3(polar cen ang (distance cen2 p3)))
(setq new_p4(polar cen ang (* -1 (distance cen2 p3))))
(command "_.ZOOM" "W" new_p3 new_p4)
(sssetfirst nil (ssadd en))
(if(/= (sslength ss) 1)(setq k (getpoint"\r下一个: "))(princ"\n完成!"))
(ssdel en ss)
)
(setvar 'cmdecho 1)
)
)
)
)
(princ)
)
;;;返回绘图区左下角与右上角
(defun zj-get-scr-coods (/ half_h half_w pt_cen lst ptx pty)
(setq pt_cen (trans (GETVAR "VIEWCTR") 1 2)
ptx (car pt_cen)
pty (cadr pt_cen)
half_h (* 0.5 (GETVAR "VIEWSIZE"))
half_w (* half_h (/ (car (GETVAR "SCREENSIZE")) (cadr (GETVAR "SCREENSIZE"))))
)
(LIST (LIST (- ptx half_w) (- pty half_h)) (LIST (+ ptx half_w) (+ pty half_h)))
)
页:
[1]
2