乐筑天下

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

[编程交流] 编辑LISP以接受argu

[复制链接]

95

主题

477

帖子

383

银币

后起之秀

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

铜币
475
发表于 2022-7-5 18:12:15 | 显示全部楼层 |阅读模式
我有一个关于编辑LISP例程以允许参数的快速问题。在当前写入时,它允许用户选择外部参照,然后以只读方式打开。我想重写它,以便可以将其添加到CUI中,这样当选择外部参照时,然后右键单击可以选择以只读方式打开它。我应该使用什么函数代替entsel,以便参数接受当前选定的外部参照?我目前拥有:
  1. (setq sel (entsel "\nSelect an Xref: "))
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 18:29:00 | 显示全部楼层
读一读这个
回复

使用道具 举报

95

主题

477

帖子

383

银币

后起之秀

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

铜币
475
发表于 2022-7-5 18:34:05 | 显示全部楼层
谢谢Tharwat!如果我理解正确,我需要像这样添加参数
  1. (defun c:xopenreadonly (x / other variables) ...rest of code )
。我怎样才能让恩塞尔接受这个论点?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 18:40:09 | 显示全部楼层
去掉前缀c:然后这样称呼它:
 
  1. (if (setq sel (entsel "\nSelect an Xref: "))
  2. (xopenreadonly sel)
  3. )

 
c:代表命令,冒号后面的字符代表命令名,因此在您的情况下,您需要一个子函数,而不是独立的程序。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 18:56:15 | 显示全部楼层
我想你需要这样的东西:
 
试试这个[未经测试的],然后告诉我。
 
  1. (defun c:xopenreadonly2 (/ sel)
  2. (if (setq sel (ssget "_I" '((0 . "INSERT"))))
  3.    (xopen (ssname sel 0))
  4.    (if (and (setq sel (car (entsel "\nSelect an Xref: ")))
  5.             (eq (cdr (assoc 0 (entget sel))) "INSERT")
  6.        )
  7.      (xopen sel)
  8.    )
  9. )
  10. (defun xopen (sel / blk path)
  11.    (if (and (setq blk (vlax-ename->vla-object sel))
  12.             (vlax-property-available-p blk 'Path)
  13.             (setq path (vla-get-path blk))
  14.             (setq path (findfile path))
  15.        )
  16.      (vla-activate
  17.        (vla-open (vla-get-documents (vlax-get-acad-object))
  18.                  (strcat """ path """)
  19.                  :vlax-true
  20.        )
  21.      )
  22.    )
  23. )
  24. (princ)
  25. )
回复

使用道具 举报

95

主题

477

帖子

383

银币

后起之秀

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

铜币
475
发表于 2022-7-5 19:05:06 | 显示全部楼层
这非常有效,我只需要做一个小调整。非常感谢你的帮助!
  1. (defun c:xopenreadonly2 (/ sel)
  2. (if (setq sel (ssget "_I" '((0 . "INSERT"))))
  3.    (xopen (ssname sel 0))
  4.    (if (and (setq sel (car (entsel "\nSelect an Xref: ")))
  5.             (eq (cdr (assoc 0 (entget sel))) "INSERT")
  6.        )
  7.      (xopen sel)
  8.    )
  9. )
  10. (princ)
  11. )
  12. (defun xopen (sel / blk path)
  13.    (if (and (setq blk (vlax-ename->vla-object sel))
  14.             (vlax-property-available-p blk 'Path)
  15.             (setq path (vla-get-path blk))
  16.             (setq path (findfile path))
  17.        )
  18.      (vla-activate
  19.        (vla-open (vla-get-documents (vlax-get-acad-object))
  20.                  (strcat """ path """)
  21.                  :vlax-true
  22.        )
  23.      )
  24.    )
  25. )
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 19:19:42 | 显示全部楼层
 
杰出的不客气。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 20:01 , Processed in 0.493968 second(s), 66 queries .

© 2020-2025 乐筑天下

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