明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1881|回复: 7

[讨论] 求助!给选中的块加上链接,链接名就是块名的后13位

[复制链接]
发表于 2011-4-15 12:55:39 | 显示全部楼层 |阅读模式
我画的装配图中有很多零件块,块名的后13位就是零件的名称。

大家能不能帮帮我,给我一段程序,让我能将选中的一块自动加上链接,链接名就是块名的后13位。

就象这样,块名“UP_PSCAL00001234", 加上链接后,链接名为“pscal00001234.dwg".

这样,当我把所有的零件放进一个文件夹,然后设定相对链接路径(hyperlinkbase),就可以通过

单击装配图中的零件块打开指定文件里的零件图了。

如果能做到这样我的工作会轻松很多了。

非常需要这个东西,大家谁能帮帮我,我这里先谢过了!
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2011-4-15 14:13:47 | 显示全部楼层
  1. ;; 图块添加超级链接 需要e派工具箱的支持
  2. (defun c:tt ()
  3.   (CMDLA0)
  4.   (setq        ss (ssget '((0 . "insert")))
  5.         i  -1
  6.   )
  7.   (while (setq s1 (ssname ss (setq i (1+ i))))
  8.     (setq bn (xyp-get-dxf 2 s1)
  9.           bn (xyp-Get-Str2Lstspr bn "_")
  10.     )
  11.     (if        (setq a (cadr bn))
  12.       (vla-add (vla-get-Hyperlinks (xyp-e2o s1)) a)
  13.     )
  14.   )
  15.   (CMDLA1)
  16. )
 楼主| 发表于 2011-4-15 18:30:47 | 显示全部楼层
“xyp1964” 版主!

太感激你了!

这东西对我来说用处很大,你真是帮了大忙了!

 楼主| 发表于 2011-4-15 18:46:50 | 显示全部楼层
xyp1964 版主,能不能给我一个不需要你工具箱支持的程序!

看了你的工具箱,里面的东西真好,但我们是搞机械的,很多东西都用不上!

谢谢!
发表于 2011-4-15 22:35:32 | 显示全部楼层
应该加上“.dwg”
  1. ;; 图块添加超级链接 需要e派工具箱的支持
  2. (defun c:tt ()
  3.   (setq        ss (ssget '((0 . "insert")))
  4.         i  -1
  5.   )
  6.   (while (setq s1 (ssname ss (setq i (1+ i))))
  7.     (if        (setq a (cadr (xyp-Get-Str2Lstspr (xyp-get-dxf 2 s1) "_")))
  8.       (vla-add (vla-get-Hyperlinks (xyp-e2o s1))(strcat a ".dwg"))
  9.     )
  10.   )
  11.   (princ)
  12. )
 楼主| 发表于 2011-4-15 23:28:21 | 显示全部楼层
本帖最后由 panliang9 于 2011-4-15 23:29 编辑

谢谢版主,下载了你的E派工具箱,然后运行了你给的程序,结果正是我想要的!

但是,版主能不能把你的函数直接写进这个程序里呢,还有,能不能加一个判断语句,当块名不够13位的话,就直接用块名做为链接名称呢?

我是不是太贪婪了。
为了表达对版主的谢意!我将Soldworks的图形转化到CAD我自已发展的一套方法贴出来给大家,都是网上找的,也许大家看不上,就当是丰富本版了!

1、SW里装配工程图里每个零件分配到以零件命名的每一个图层的宏。用这个宏可以将SW
     装配图里的每一个零件分配到以零件命名的层里去。
可以在这个位置下载:
http://www.jxcad.com.cn/read.php?tid=314844&page=

2、生成的图形另存为DWG后,用下面这段程序将每一个层变成同名的块。
(defun to(n)
  (cdr (assoc n (entget sn)))
)
(defun c:nn( / l lst n nam s sn)
  (command "undo" "g")
  (setq sn t lst '() n 0)
  (while sn
    (if (setq sn (entlast))
      (progn
        (setq nam (to 8) lst (cons nam lst)
              s (ssget "X" (list (cons 8 nam)))
              l (length lst)
        )
        (command "block" nam "0,0" s "")
        (princ "***") (princ nam)
      )
    )
  )
  (while (< n l)
    (setq nam (nth n lst) n (1+ n))
    (command "insert" nam "0,0" "1" "" "")
  )
  (command "undo" "end")
  (princ)
)

如果再加上版主为我发展的这最后一步方法,即把块名变到附在块上的超级链接上去,那这套方法就非常完整了!
发表于 2011-4-18 07:38:33 | 显示全部楼层
  1. ;; 图块添加超级链接 需要e派工具箱的支持
  2. (defun c:tt ()
  3.   (setq        ss (ssget '((0 . "insert")))
  4.         i  -1
  5.   )
  6.   (while (setq s1 (ssname ss (setq i (1+ i))))
  7.     (setq bn  (xyp-get-dxf 2 s1)
  8.           obj (vlax-ename->vla-object s1)
  9.           hn  (if (and (setq a (cadr (xyp-Get-Str2Lstspr bn "_")))
  10.                        (>= (strlen a) 13)
  11.                   )
  12.                 (strcat a ".dwg")
  13.                 (strcat bn ".dwg")
  14.               )
  15.     )
  16.     (vla-add (vla-get-Hyperlinks obj) hn)
  17.   )
  18.   (princ)
  19. )
 楼主| 发表于 2011-4-18 12:47:05 | 显示全部楼层
版主!

太感激你了!

这一步完成了以后,这个方法就圆满了!

我们复杂的装配图上有几十个甚至上百个零件,按这个方法,从SW做模型开始,

到最后最终投影到CAD里,只要零件按正确的命名规则,每个块都是零件的名字,

每个块上都带有零件的链接。点击每一条线都能找开相应的图纸。这个意义非常的大。

任何人看这份图纸,都能很快明白设计者的思路,弄清机器的结构!

这是非常有用的!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-22 16:37 , Processed in 0.250785 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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