乐筑天下

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

[编程交流] 添加选项以选择ob

[复制链接]

8

主题

45

帖子

37

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 07:37:00 | 显示全部楼层 |阅读模式
嗨,伙计们,我正在使用这个lisp:
 
  1. ;;published by kpblc
  2. ;;http://www.arcada.com.ua/forum/viewtopic.php?t=526
  3. (defun c:normblocks (/ adoc answer lays lock lay *error* ans0 atype cnt)
  4. (defun *error* (msg)(princ msg)
  5.   (if lock (foreach x lock (vla-put-lock x :vlax-true)))(vl-cmdf "_.Redraw"))
  6. (vl-load-com)(setq cnt 0)
  7. (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
  8. (setq lays (vla-get-layers adoc))
  9. (vla-startundomark adoc)
  10. (initget "LType LWeight Color All _ T W C A")
  11. (if (null (setq answer
  12.      (getkword "\nIn blocks to lead to norm [LType/LWeight/Color/All] <All> : ")))
  13.    (setq answer "A")) ;_ end of if
  14. (initget "byLayer byBlock")
  15. (setq atype (getkword "\nSet contents inside the block to [byLayer/byBlock] <byBlock>:"))
  16. (initget "Yes No")
  17. (setq ans0 (getkword "\nChange entities layer's to 0? [Yes/No] <No>:"))
  18. (vlax-for item (vla-get-blocks adoc)
  19.    (if   (not (wcmatch (strcase (vla-get-name item) t) "*_space*"))
  20.      (progn
  21.      (setq cnt (1+ cnt))
  22.      (grtext -1 (strcat "Modyfied " (vla-get-name item)))
  23.   (vlax-for   sub_item (vla-item (vla-get-blocks adoc) (vla-get-name item))
  24.   (setq lay (vla-item lays (vla-get-layer sub_item)))
  25.   (if (= (vla-get-lock lay) :vlax-true)
  26.   (progn (vla-put-lock lay :vlax-false)(setq lock (cons lay lock))))  
  27.   (if (= ans0 "Yes")(vla-put-Layer sub_item "0"))
  28.   (cond
  29.     ((= answer "W")
  30.      (vla-put-LineWeight sub_item (if (= atype "byLayer") acLnWtByLayer aclnwtbyblock))
  31.      )
  32.     ((= answer "T")
  33.      (vla-put-linetype sub_item (if (= atype "byLayer") "ByLayer" "ByBlock"))
  34.      )
  35.     ((= answer "C")
  36.      (vla-put-color sub_item (if (= atype "byLayer") acByLayer acByBlock))
  37.      )
  38.     (t
  39.      (vla-put-LineWeight sub_item (if (= atype "byLayer") acLnWtByLayer aclnwtbyblock))
  40.      (vla-put-linetype sub_item (if (= atype "byLayer") "ByLayer" "ByBlock"))      
  41.      (vla-put-color sub_item (if (= atype "byLayer") acByLayer acByBlock))
  42.      )
  43.     ) ;_ end of cond
  44.   ) ;_ end of vlax-for
  45.   )
  46.      ) ;_ end of if
  47.    ) ;_ end of vlax-for
  48. (if lock (foreach x lock (vla-put-lock x :vlax-true)))
  49. (vla-regen adoc acallviewports)
  50. (vla-endundomark adoc)(vl-cmdf "_.Redraw")
  51. (princ (strcat  "\nModyfied " (itoa cnt) " blocks"))
  52. (princ)
  53. ) ;_ end of defun

 
它工作得很好,但我想添加选择我想要在哪些块上使用lisp的功能。谁能帮我一下吗?
 
谢谢
回复

使用道具 举报

8

主题

45

帖子

37

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 07:59:32 | 显示全部楼层
任何人顺便问一下,我说的有意义吗?
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 08:07:09 | 显示全部楼层
下面只是一个猜测变化。您需要添加myblockname请求。
 
  1. (if   (not (wcmatch (strcase (vla-get-name block) t) "*_space*"))
  2. to
  3. (if   (= (wcmatch (strcase (vla-get-name block) t) myblockname))
回复

使用道具 举报

8

主题

45

帖子

37

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 08:14:39 | 显示全部楼层
我使用它时会出错
 
“错误的参数类型:VLA-OBJECT nil”
 
我只想修改lisp,以便能够手动选择阻碍lisp效果的因素。目前,它会处理图形中的每个块,我希望能够选择要更改的块。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 08:26:20 | 显示全部楼层
您对myblockname做了什么?是“partasdf”还是使用setq设置为变量
 
这是一个字符串“*\u space*”任何名称中带有\u space的块如果是这样,请不要更改,您可以执行“partasdf”
回复

使用道具 举报

8

主题

45

帖子

37

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 08:47:11 | 显示全部楼层
对不起,我不知道你的意思。这能让我选择用光标手动更改哪些块吗?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 05:01 , Processed in 0.371552 second(s), 64 queries .

© 2020-2025 乐筑天下

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