夏生生 发表于 2021-12-14 20:36:22

lee50310 发表于 2021-12-14 18:50
是這種效果嗎?

滑鼠拖曳 文字都在 視口中心和四個角


是的,在WCS的情况下我可以做到这个效果,但是在XY顺时针UCS、3DO情况、还有PLAN为UCS,坐标系为wcs的情况下,我做不到

mokson 发表于 2021-12-15 09:48:01

guosheyang 发表于 2021-12-13 12:19
你是想要 这个控件标题文字 这种   一直显示在那儿哈

我也一直想要这样的效果,但是想不出来如何实现。

xyp1964 发表于 2021-12-15 21:42:42

自定义函数处理

rocking2008 发表于 2021-12-16 08:43:07

这个功能是为了防止图纸资料被别人盗用,做的类似于水印的效果吧。但程序与图纸是分开的呀,难道能把程序内置到图纸里面?

mikewolf2k 发表于 2021-12-16 09:18:05

现在的方案似乎都是在指定位置放置文字对象,移动屏幕后更新。是不是可以换个思路,四角放一个不可关闭、背景同色的窗体,文字在该窗体上,也就相对屏幕固定了。

lijiao 发表于 2021-12-16 09:55:22

mikewolf2k 发表于 2021-12-16 09:18
现在的方案似乎都是在指定位置放置文字对象,移动屏幕后更新。是不是可以换个思路,四角放一个不可关闭、背 ...

我也想到了这个办法,在四个角放置四个非模态的窗口,利用API隐藏窗口的标题栏,并且让窗口透明,然后再定义一个反应器,当CAD窗口发生变化时,改变四个窗口的位置

xtjd 发表于 2021-12-16 10:32:30


夏生生 发表于 2021-12-16 18:03:14

xtjd 发表于 2021-12-16 10:32


可以指点一下坐标转换部分吗?谢谢

夏生生 发表于 2021-12-16 22:07:01

xtjd 发表于 2021-12-16 10:32

下面的代码,在非3do的情况下都可以,3do的情况下就乱了,请问您是怎么做到的?方便指导一下吗?
(defun c:temp (/   CEN   D2W       GR1       GR2
         H   LOOP   OBJL       PT         SC
         SCR   STR   WB       WH         xty-make-text@w
         xty-put-dxf   xty-put-dxfl
      )
(setqloop t
pt   '(0 0 0)
str"特定字符"
objl (list (xty-make-text@w str 0 0 pt pt 1 1 0 "standard")
       (xty-make-text@w str 0 0 pt pt 1 1 0 "standard")
       (xty-make-text@w str 0 0 pt pt 1 1 0 "standard")
       (xty-make-text@w str 0 0 pt pt 1 1 0 "standard")
       (xty-make-text@w str 0 0 pt pt 1 1 0 "standard")
       ) ;_画五个临时文字
objl (mapcar 'vlax-ename->vla-object objl)
)
(while loop
    (setq gr1 (grread t 15 1)
    gr2 (cadr gr1)
    gr1 (car gr1)
    cen (trans (getvar "VIEWCTR") 1 2)
    wh(getvar "VIEWSIZE")
    scr (getvar "SCREENSIZE")
    sc(/ wh (cadr scr))
    wb(* 0.5 (* sc (car scr)))
    wh(* 0.5 wh)
    h   (* 30 sc)
    d2w (append
    (mapcar'append
      (mapcar
      (function (lambda (v) (trans v 0 2 t)))
      '((1. 0. 0.) (0. 1. 0.) (0. 0. 1.))
      )
      (mapcar 'list (trans '(0 0 0) 2 0))
    )
    '((0. 0. 0. 1.))
      ) ;_DCS->wcs转换矩阵
    )
    (xty-put-dxfl
      (vlax-vla-object->ename (car objl))
      '(40 72 73 10 11)
      (list h
      0
      0
      (mapcar '- cen (list wb wh))
      (mapcar '- cen (list wb wh))
      )
    )
    (xty-put-dxfl
      (vlax-vla-object->ename (cadr objl))
      '(40 72 73 10 11)
      (list h
      2
      0
      (mapcar '+ cen (list wb (- wh)))
      (mapcar '+ cen (list wb (- wh)))
      )
    )
    (xty-put-dxfl
      (vlax-vla-object->ename (caddr objl))
      '(40 72 73 10 11)
      (list h
      2
      3
      (mapcar '+ cen (list wb wh))
      (mapcar '+ cen (list wb wh))
      )
    )
    (xty-put-dxfl
      (vlax-vla-object->ename (cadddr objl))
      '(40 72 73 10 11)
      (list h
      0
      3
      (mapcar '+ cen (list (- wb) wh))
      (mapcar '+ cen (list (- wb) wh))
      )
    )
    (xty-put-dxfl
      (vlax-vla-object->ename (last objl))
      '(40 72 73 10 11)
      (list h 1 2 cen cen)
    )
    (foreach n objl (vla-TransformBy n (vlax-tMatrix d2w)))
    (cond ((= 3 gr1)
   (setq loop nil)
   (foreach n objl (vla-delete n))
    )
    )
)
(defun xty-make-text@w (tt t72 t73 t10 t11 th tw t50 tst /)
    (entmakex (list '(0 . "text")
      '(100 . "AcDbEntity")
      '(100 . "AcDbText")
      (cons 10 t10)
      (cons 1 tt)
      (cons 40 th)
      (cons 41 tw)
      (cons 7 tst)
      (cons 72 t72)
      (cons 11 t11)
      (cons 50 t50)
      (cons 73 t73)
      )
    )
)
(defun xty-put-dxf (en code ch / ent)
    (setq ent (entget en))
    (if(xty-get-dxf code en)
      (entmod (subst (cons code ch) (assoc code ent) ent))
      (entmod (append ent (list (cons code ch))))
    )
    (entupd en)
)
(defun xty-put-dxfl (en code-l ch-l / ent)
    (setq ent (entget en))
    (foreach n
         code-l
      (if (xty-get-dxf n en)
(setq ent (subst (cons n (car ch-l)) (assoc n ent) ent))
(setq ent (append ent (list (cons n (car ch-l)))))
      )
      (setq ch-l (cdr ch-l))
    )
    (entmod ent)
    (entupd en)
)
)

xtjd 发表于 2021-12-17 10:21:26

夏生生 发表于 2021-12-16 22:07
下面的代码,在非3do的情况下都可以,3do的情况下就乱了,请问您是怎么做到的?方便指导一下吗?

3DO也乱;P


紫薯布丁
页: 1 [2] 3
查看完整版本: 如何让当前视口中心和四个角点显示特定字符(高飞鸟版主能有空指导更好)