乐筑天下

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

[编程交流] LISP fn返回外部参照计数a

[复制链接]

56

主题

256

帖子

230

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
253
发表于 2022-7-5 15:06:40 | 显示全部楼层 |阅读模式
大家好,
 
我有一个脚本,从这里我已经调整,以获得计数。
 
  1. (defun C:XREFCNT (/ i x)
  2. (setq i 0)
  3. (vlax-for x
  4.         (vla-get-blocks
  5.                 (vla-get-ActiveDocument (vlax-get-acad-object))
  6.                 )
  7.         (if (eq (vla-get-IsXref x) :vlax-true)
  8.                 (setq i (1+ i))
  9.                 )
  10.         )
  11. i
  12. )

 
XREFCNT返回命令行中的数字。
 
然后我该如何发出警报,下面的代码不起作用。It错误:
错误:错误的参数类型:fixnump:#
 
  1. (if XREFCNT > 0)
  2. (alert
  3. (strcat "Number of External Reference Drawings = " (itoa (strcat XREFCNT)))
  4. )
回复

使用道具 举报

76

主题

312

帖子

254

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
390
发表于 2022-7-5 15:30:34 | 显示全部楼层
命令XREFCNT定义为“#”。
 
更改此项:
 
  1. (itoa (strcat XREFCNT))

 
收件人:
  1. (itoa (strcat (XREFCNT)))

 
和改变
 
  1. (defun C:XREFCNT (/ i x)

 
收件人:
 
  1. (defun XREFCNT (/ i x)
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 15:37:24 | 显示全部楼层
  1.    (if (> (setq c (XREFCNT)) 0)
  2.     (alert (strcat "Number of External Reference Drawings = " (itoa c)))
  3.     )
回复

使用道具 举报

56

主题

256

帖子

230

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
253
发表于 2022-7-5 15:44:43 | 显示全部楼层
谢谢你们俩。
 
这是工作代码。
  1. (defun XREFCNT (/ i x)
  2. (setq i 0)
  3. (vlax-for x
  4.         (vla-get-blocks
  5.                 (vla-get-ActiveDocument (vlax-get-acad-object))
  6.                 )
  7.         (if (eq (vla-get-IsXref x) :vlax-true)
  8.                 (setq i (1+ i))
  9.                 )
  10.         )
  11. i
  12. )
  13. ; SETS XREF PATHS TO "RELATIVE" IF IN DRAWING
  14. (if (> (setq c (XREFCNT)) 0)
  15.         ; (alert (strcat "Number of External Reference Drawings = " (itoa c)))
  16.         (command "-XREF" "T" "*" "R")
  17.         )
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:06:06 | 显示全部楼层
可以使用C:xrefcnt,但defun调用必须匹配(C:xrefcnt)
 
是否有理由不在现场?
  1. (defun c:XREFCNT2 (/ i x)
  2. (setq i 0)
  3.         (vlax-for x
  4.         (vla-get-blocks
  5.                 (vla-get-ActiveDocument (vlax-get-acad-object))
  6.                 )
  7.         (if (eq (vla-get-IsXref x) :vlax-true)
  8.                 (setq i (1+ i))
  9.                 )
  10. )
  11. (if (> i 0)
  12.         (alert (strcat "Number of External Reference Drawings = " (rtos i 2 0)))
  13.         (alert "No Xrefs")
  14.        )
  15. )
  16. (c:XREFCNT2)
回复

使用道具 举报

56

主题

256

帖子

230

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
253
发表于 2022-7-5 16:08:26 | 显示全部楼层
 
因为我在下面使用了redir命令。我在启动脚本的其他地方调用它。
 
  1. (if
  2. (vl-string-search "company_name_here" (strcat(getvar 'dwgprefix)))
  3. (progn
  4.         (if (> (setq c (XREFCNT)) 0)
  5.                 (Command ".script" "XRef_company_name_here_Paths_Fix.scr")
  6.                 )
  7.         (setq StyleSheet "company_name_here.ctb")
  8.         )
  9. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-15 00:44 , Processed in 1.886067 second(s), 64 queries .

© 2020-2025 乐筑天下

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