明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 夏生生

[提问] 如何让当前视口中心和四个角点显示特定字符(高飞鸟版主能有空指导更好)

[复制链接]
 楼主| 发表于 2021-12-14 20:36:22 | 显示全部楼层
lee50310 发表于 2021-12-14 18:50
是這種效果嗎?

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

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

使用道具 举报

发表于 2021-12-15 09:48:01 | 显示全部楼层
guosheyang 发表于 2021-12-13 12:19
你是想要 这个控件标题文字 这种   一直显示在那儿哈

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

使用道具 举报

发表于 2021-12-15 21:42:42 | 显示全部楼层
自定义函数处理

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 1明经币 +1 收起 理由
夏生生 + 1 很给力!

查看全部评分

回复

使用道具 举报

发表于 2021-12-16 08:43:07 | 显示全部楼层
这个功能是为了防止图纸资料被别人盗用,做的类似于水印的效果吧。但程序与图纸是分开的呀,难道能把程序内置到图纸里面?
回复

使用道具 举报

发表于 2021-12-16 09:18:05 | 显示全部楼层
现在的方案似乎都是在指定位置放置文字对象,移动屏幕后更新。是不是可以换个思路,四角放一个不可关闭、背景同色的窗体,文字在该窗体上,也就相对屏幕固定了。
回复

使用道具 举报

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

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

使用道具 举报

发表于 2021-12-16 10:32:30 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 1明经币 +1 收起 理由
夏生生 + 1 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2021-12-16 18:03:14 | 显示全部楼层

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

使用道具 举报

 楼主| 发表于 2021-12-16 22:07:01 | 显示全部楼层

下面的代码,在非3do的情况下都可以,3do的情况下就乱了,请问您是怎么做到的?方便指导一下吗?
  1. (defun c:temp (/   CEN     D2W       GR1       GR2
  2.          H   LOOP     OBJL       PT         SC
  3.          SCR   STR     WB       WH         xty-make-text@w
  4.          xty-put-dxf     xty-put-dxfl
  5.         )
  6.   (setq  loop t
  7.   pt   '(0 0 0)
  8.   str  "特定字符"
  9.   objl (list (xty-make-text@w str 0 0 pt pt 1 1 0 "standard")
  10.        (xty-make-text@w str 0 0 pt pt 1 1 0 "standard")
  11.        (xty-make-text@w str 0 0 pt pt 1 1 0 "standard")
  12.        (xty-make-text@w str 0 0 pt pt 1 1 0 "standard")
  13.        (xty-make-text@w str 0 0 pt pt 1 1 0 "standard")
  14.        ) ;_画五个临时文字
  15.   objl (mapcar 'vlax-ename->vla-object objl)
  16.   )
  17.   (while loop
  18.     (setq gr1 (grread t 15 1)
  19.     gr2 (cadr gr1)
  20.     gr1 (car gr1)
  21.     cen (trans (getvar "VIEWCTR") 1 2)
  22.     wh  (getvar "VIEWSIZE")
  23.     scr (getvar "SCREENSIZE")
  24.     sc  (/ wh (cadr scr))
  25.     wb  (* 0.5 (* sc (car scr)))
  26.     wh  (* 0.5 wh)
  27.     h   (* 30 sc)
  28.     d2w (append
  29.     (mapcar  'append
  30.       (mapcar
  31.         (function (lambda (v) (trans v 0 2 t)))
  32.         '((1. 0. 0.) (0. 1. 0.) (0. 0. 1.))
  33.       )
  34.       (mapcar 'list (trans '(0 0 0) 2 0))
  35.     )
  36.     '((0. 0. 0. 1.))
  37.         ) ;_DCS->wcs转换矩阵
  38.     )
  39.     (xty-put-dxfl
  40.       (vlax-vla-object->ename (car objl))
  41.       '(40 72 73 10 11)
  42.       (list h
  43.       0
  44.       0
  45.       (mapcar '- cen (list wb wh))
  46.       (mapcar '- cen (list wb wh))
  47.       )
  48.     )
  49.     (xty-put-dxfl
  50.       (vlax-vla-object->ename (cadr objl))
  51.       '(40 72 73 10 11)
  52.       (list h
  53.       2
  54.       0
  55.       (mapcar '+ cen (list wb (- wh)))
  56.       (mapcar '+ cen (list wb (- wh)))
  57.       )
  58.     )
  59.     (xty-put-dxfl
  60.       (vlax-vla-object->ename (caddr objl))
  61.       '(40 72 73 10 11)
  62.       (list h
  63.       2
  64.       3
  65.       (mapcar '+ cen (list wb wh))
  66.       (mapcar '+ cen (list wb wh))
  67.       )
  68.     )
  69.     (xty-put-dxfl
  70.       (vlax-vla-object->ename (cadddr objl))
  71.       '(40 72 73 10 11)
  72.       (list h
  73.       0
  74.       3
  75.       (mapcar '+ cen (list (- wb) wh))
  76.       (mapcar '+ cen (list (- wb) wh))
  77.       )
  78.     )
  79.     (xty-put-dxfl
  80.       (vlax-vla-object->ename (last objl))
  81.       '(40 72 73 10 11)
  82.       (list h 1 2 cen cen)
  83.     )
  84.     (foreach n objl (vla-TransformBy n (vlax-tMatrix d2w)))
  85.     (cond ((= 3 gr1)
  86.      (setq loop nil)
  87.      (foreach n objl (vla-delete n))
  88.     )
  89.     )
  90.   )
  91.   (defun xty-make-text@w (tt t72 t73 t10 t11 th tw t50 tst /)
  92.     (entmakex (list '(0 . "text")
  93.         '(100 . "AcDbEntity")
  94.         '(100 . "AcDbText")
  95.         (cons 10 t10)
  96.         (cons 1 tt)
  97.         (cons 40 th)
  98.         (cons 41 tw)
  99.         (cons 7 tst)
  100.         (cons 72 t72)
  101.         (cons 11 t11)
  102.         (cons 50 t50)
  103.         (cons 73 t73)
  104.         )
  105.     )
  106.   )
  107.   (defun xty-put-dxf (en code ch / ent)
  108.     (setq ent (entget en))
  109.     (if  (xty-get-dxf code en)
  110.       (entmod (subst (cons code ch) (assoc code ent) ent))
  111.       (entmod (append ent (list (cons code ch))))
  112.     )
  113.     (entupd en)
  114.   )
  115.   (defun xty-put-dxfl (en code-l ch-l / ent)
  116.     (setq ent (entget en))
  117.     (foreach n
  118.          code-l
  119.       (if (xty-get-dxf n en)
  120.   (setq ent (subst (cons n (car ch-l)) (assoc n ent) ent))
  121.   (setq ent (append ent (list (cons n (car ch-l)))))
  122.       )
  123.       (setq ch-l (cdr ch-l))
  124.     )
  125.     (entmod ent)
  126.     (entupd en)
  127.   )
  128. )


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

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

3DO也乱


紫薯布丁
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-16 20:35 , Processed in 0.160460 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表