明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2800|回复: 13

[已解答] 能否实现同一DWG文件内的链接

[复制链接]
发表于 2014-7-30 09:12:38 | 显示全部楼层 |阅读模式
RT,能不能实现在图纸内点击一文字,即得到同一图纸内相对应的图块或文字
发表于 2023-11-3 12:24:53 | 显示全部楼层

一个文字可以链接多个图形吗?谢谢!
发表于 2014-7-30 10:53:43 | 显示全部楼层
得到的是什么,文字内容,图块名称,还是。。。。不清楚意图。
发表于 2014-7-30 11:15:50 | 显示全部楼层
是不是说的视图跳转?
发表于 2014-7-30 12:24:59 | 显示全部楼层
“链接规则以及链接后处理”要清楚
比如
dwg内含有多张图纸以及目录
点击目录条目
视窗转换到对应图纸

要求清楚了
程序并不难
但是通用基本不可能
 楼主| 发表于 2014-7-30 16:07:41 | 显示全部楼层
masterlong 发表于 2014-7-30 12:24
“链接规则以及链接后处理”要清楚
比如
dwg内含有多张图纸以及目录

就是这个意思,从目录文字跳往图纸,通用是什么意思,从文字跳往图块?
发表于 2014-7-30 16:47:59 | 显示全部楼层
通用则需要适合每个人的需要。
一般地,目录文字跳转图块还算是比较好处理的。可以手动链接两个对象的句柄值。使用程序的时候选择了连接的目录文字,自动寻找对应句柄,低版本计算外框值,缩放视图即可,高版本直接 zoom o 。。。
 楼主| 发表于 2014-7-30 16:54:09 | 显示全部楼层
edata 发表于 2014-7-30 16:47
通用则需要适合每个人的需要。
一般地,目录文字跳转图块还算是比较好处理的。可以手动链接两个对象的句柄 ...

虽不明,但觉厉...大神可否写点程序
发表于 2014-7-30 17:32:27 | 显示全部楼层
其实就是通过某种方式获取一些"特征"
再根据"特征"搜寻符合特征的其它数据
再进行相应的处理
就好比文字查找替换这一类的程序
其实也是一样的思路

正因为可以有非常多的可能
所以通用是不可能的
只能具体要求具体解决
发表于 2014-7-30 17:51:18 | 显示全部楼层
本帖最后由 edata 于 2014-7-30 18:02 编辑

  1. ;;图形内链接跳转
  2. ;;code by edata @ mjtd.com 2014-7-30
  3. ;;首次执行将选择提示选择对象并关联对象
  4. ;;再次选择关联的对象将相互跳转
  5. ;;关联跳转
  6. (defun c:tt(/ ss en en2 en2_h5 en_h5 sk_link)
  7.   (prompt "\n请选择关联对象:")
  8.   (if(setq ss(ssget ":E:S" ));'((0 . "*text"))))
  9.     (progn
  10.       (setq en(ssname ss 0))
  11.       (setq en_h5(sk_dxf en 5))
  12.       (if(and (setq sk_link(vlax-ldata-get (vlax-ename->vla-object en) "sk_hplink")) (entget (handent sk_link)))
  13.   (progn
  14.     (prompt "\n执行跳转.")
  15.     (setvar 'cmdecho 0)
  16.     (command "zoom" "o" (ssadd(handent sk_link)) "")
  17.     (setvar 'cmdecho 1)
  18.     )
  19.   (progn
  20.     (if(setq en2(car(entsel "\n该对象无链接,请选择链接对象:")))
  21.       (progn
  22.         (setq en2_h5(sk_dxf en2 5))
  23.         (vlax-ldata-put (vlax-ename->vla-object en) "sk_hplink" en2_h5)
  24.         (vlax-ldata-put (vlax-ename->vla-object en2) "sk_hplink" en_h5)
  25.         (prompt "\n链接完成.")
  26.         )
  27.       )
  28.     )  
  29.   )
  30.       )
  31.     )
  32.   (princ)
  33.   )
  34. ;;关联删除
  35. (defun c:tt2(/ ss en sk_link en2)
  36.   (prompt "\n请选择需要删除关联的对象:")
  37.   (if(setq ss(ssget));'((0 . "*text"))))
  38.     (while(setq en(ssname ss 0))            
  39.       (if(setq sk_link(vlax-ldata-get (vlax-ename->vla-object en) "sk_hplink"))
  40.   (progn
  41.     (prompt "\r删除........")
  42.     (setq en2 (handent sk_link))   
  43.     (vlax-ldata-delete (vlax-ename->vla-object en) "sk_hplink")
  44.     (and (entget en2) (vlax-ldata-delete (vlax-ename->vla-object en2) "sk_hplink"))
  45.     (prompt "\r删除完成....")
  46.     )
  47.   (prompt "\r没有发现链接.")
  48.   )
  49.       (setq ss (ssdel en ss))
  50.       )
  51.     )
  52.   (princ)
  53.   )
  54. ;;dxf组码获取函数
  55. (defun sk_dxf(ent code)(cdr(assoc code (entget ent))))
 楼主| 发表于 2014-7-30 17:57:36 | 显示全部楼层
edata 发表于 2014-7-30 17:51

谢谢哈,真大神也,这样看图就方便了许多
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 08:52 , Processed in 0.167019 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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