乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 66|回复: 3

[编程交流] 条带外部参照路径?

[复制链接]

33

主题

267

帖子

213

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
197
发表于 2022-7-6 09:38:32 | 显示全部楼层 |阅读模式
我从GSA(美国政府机构)收到了这封信,作为一个更大项目的一部分,帮助将文件设置为他们的标准。这一部分似乎不起作用-没有设定路径。
我已经测试了各个部分,但看不出哪里出了问题。
 
如果有人能看一下并告诉我,如果有什么事情看起来不对劲,我将不胜感激。欢迎提出任何建议。谢谢
 
  1. ; remove xref paths
  2. ; select the first block
  3. (progn
  4. (setq blk (tblnext "BLOCK" 1))
  5. ; repeat for each block definition in the drawing
  6. (while (/= blk nil)
  7. ; determine if the block is an xref
  8. (setq groupcode70 (cdr (assoc 70 blk)))
  9. ; determine if groupcode70 contains a bitwise 4
  10. ; this would indicate it is an xref
  11. (if (= 4 (logand 4 groupcode70))
  12.    (progn
  13.      ; if groupcode70 contains a bitwise 32 it is resolved
  14.      (if (= 32 (logand 32 groupcode70))
  15.        (progn
  16.          ; it is resolved
  17.          ; strip out path if present
  18.          (if(setq xrefname (cdr (assoc 1 blk)))
  19.          (if (wcmatch xrefname "*\\*")
  20.            ; change the old name to the new
  21.            (command ".-xref" "p"
  22.                     (cdr (assoc 2 blk))
  23.                     (strcat (vl-filename-base xrefname)(vl-filename-extension xrefname))
  24.            ) ;end command
  25.          )) ;end if
  26.        ) ;end progn
  27.        (progn) ; xref is unresolved - do not try to change it
  28.      )
  29.    )
  30.    (progn) ; the block is not an xref
  31. )
  32. ; select the next block
  33. (setq blk (tblnext "BLOCK"))
  34. )
  35. );_end progn
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 10:06:31 | 显示全部楼层
这对我来说很有用:
 
  1. (defun c:FOO  (/ path)
  2. (vl-load-com)
  3. (vla-startundomark
  4.    (cond (*activeDoc*)
  5.          ((setq *activeDoc*
  6.                  (vla-get-activedocument (vlax-get-acad-object))))))
  7. (vlax-for x  (vla-get-blocks *activeDoc*)
  8.    (if (and (vlax-property-available-p x 'isxref)
  9.             (= :vlax-true (vla-get-isxref x)))
  10.      (vla-put-path
  11.        x
  12.        (strcat (vl-filename-base (setq path (vla-get-path x)))
  13.                (vl-filename-extension path)))))
  14. (vla-endundomark *activeDoc*)
  15. (princ))

 
编辑-如果不喜欢使用参照管理器,可以将上面发布的代码中的vlax for语句(稍作调整)应用于ObjectDBX函数,该函数将遍历特定项目目录中的所有图形,并对每个图形的“模型”布局的块对象进行此更改(如果适用)(假设外部参照以毫秒为单位)。
 
希望这有帮助!
回复

使用道具 举报

33

主题

267

帖子

213

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
197
发表于 2022-7-6 10:25:54 | 显示全部楼层
干净多了,谢谢
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 10:47:39 | 显示全部楼层
 
不客气。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-7 00:39 , Processed in 0.716598 second(s), 60 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表