乐筑天下

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

[编程交流] Lisp显示可见性st

[复制链接]

4

主题

15

帖子

11

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 15:43:04 | 显示全部楼层 |阅读模式
大家好,
 
已经有一段时间了。
 
是否有人使用lisp在引线上显示动态块的可见性状态?
 
干杯
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 16:05:46 | 显示全部楼层
只需快速剪切粘贴在一起的副本:
 
 
  1. ; modified / supplemented lsp found on : [url]http://www.cadtutor.net/forum/showthread.php?39301-Block-into-multileader-text/page2&highlight=leader[/url]
  2. (defun c:VisLabel (/ blk entl obj)
  3. (vl-load-com)
  4. (cond ((not (setq blk (car (entsel "\nSelect block: ")))))
  5.        ((not (eq (cdr (assoc 0 (entget blk))) "INSERT")) (princ "\nInvalid object!"))
  6.        ((setq pt (getpoint "\nSpecify first point: "))
  7.         (setq entl (entlast))
  8.         (vl-cmdf "_.mleader" "_non" pt "\")
  9.         (while (eq (logand 1 (getvar 'CMDACTIVE)) 1) (vl-cmdf ""))
  10.         (if (and (not (equal entl (setq entl (entlast)))) (setq entl (vlax-ename->vla-object entl)))
  11.            (if (not (setq visname (GetBVis (vlax-ename->vla-object blk))))
  12.              (vla-put-textstring  entl "No visibility")   (vla-put-textstring  entl visname)
  13.           )
  14.         )
  15.        )
  16. )
  17. (princ)
  18. )
  19. ; just some ccp (cut copy paste) from my RlxBlk.lsp
  20. ; (GetBVis (vlax-ename->vla-object (car (entsel))))
  21. ; get current visibility name block object
  22. (defun GetBVis ( %blk / blk dic bvp bvn)
  23. (if (and (vl-every
  24.      '(lambda (p)(vlax-property-available-p %blk p)) '(isdynamicblock hasextensiondictionary effectivename))
  25.    (setq blk (vla-item (vla-get-blocks (vla-get-document %blk)) (vla-get-effectivename %blk)))
  26.    (setq dic (dictsearch (vlax-vla-object->ename (vla-getextensiondictionary blk)) "ACAD_ENHANCEDBLOCK"))
  27.    (setq bvp (findaso "BLOCKVISIBILITYPARAMETER" (massoc 360 dic)))
  28.    (setq bvn (cdr (assoc 301 bvp))))
  29.    (vl-some '(lambda (p) (if (= (vla-get-PropertyName p) bvn) (vlax-get p 'Value)))
  30.      (vlax-invoke %blk 'getDynamicBlockProperties))))
  31. (defun massoc ($i $l / a l)(while (setq a (assoc $i $l))(setq l (cons (cdr a) l) $l (cdr (member a $l))) l))
  32. (defun FindAso ($v %l) (vl-some (function (lambda(x) (if (= $v (cdr (assoc 0 (setq e (entget x))))) e nil))) %l))
gr.Rlx
回复

使用道具 举报

4

主题

15

帖子

11

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 16:15:39 | 显示全部楼层
谢谢,成功了。
 
我试着改变你写的行(vla put textstring entl“No visibility”)来显示当没有可见性模式来显示块名时,我试过(vla put textstring entl effectivename),但没有成功。
你能再帮我一次吗?
 
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 16:37:46 | 显示全部楼层
当然:
 
 
  1. ; modified lsp found on : [url]http://www.cadtutor.net/forum/showthread.php?39301-Block-into-multileader-text/page2&highlight=leader[/url]
  2. (defun c:VisLabel (/ blk entl pt visname)
  3. (cond ((not (setq blk (car (entsel "\nSelect block: ")))))
  4.        ((not (eq (cdr (assoc 0 (entget blk))) "INSERT")) (princ "\nInvalid object!"))
  5.        ((setq pt (getpoint "\nSpecify first point: "))
  6.         (setq entl (entlast) blk (vlax-ename->vla-object blk))
  7.         (vl-cmdf "_.mleader" "_non" pt "\")
  8.         (while (eq (logand 1 (getvar 'CMDACTIVE)) 1) (vl-cmdf ""))
  9.         (if (and (not (equal entl (setq entl (entlast)))) (setq entl (vlax-ename->vla-object entl)))
  10.    (if (setq visname (GetBVis blk))
  11.      (vla-put-textstring  entl visname)
  12.      (vla-put-textstring  entl
  13.        (vlax-get-property  blk
  14.   (if (vlax-property-available-p blk 'EffectiveName) 'EffectiveName 'Name))))))
  15. )
  16. (princ)
  17. )
  18. ; just some ccp (cut copy paste) from my RlxBlk.lsp
  19. ; (GetBVis (vlax-ename->vla-object (car (entsel))))
  20. ; get current visibility name block object
  21. (defun GetBVis ( %blk / blk dic bvp bvn)
  22. (if (and (vl-every '(lambda (p)(vlax-property-available-p %blk p)) '(isdynamicblock hasextensiondictionary effectivename))
  23.    (setq blk (vla-item (vla-get-blocks (vla-get-document %blk)) (vla-get-effectivename %blk)))
  24.    (setq dic (dictsearch (vlax-vla-object->ename (vla-getextensiondictionary blk)) "ACAD_ENHANCEDBLOCK"))
  25.    (setq bvp (findaso "BLOCKVISIBILITYPARAMETER" (massoc 360 dic)))
  26.    (setq bvn (cdr (assoc 301 bvp))))
  27.    (vl-some '(lambda (p) (if (= (vla-get-PropertyName p) bvn) (vlax-get p 'Value)))
  28.      (vlax-invoke %blk 'getDynamicBlockProperties))))
  29. (defun massoc ($i $l / a l)(while (setq a (assoc $i $l))(setq l (cons (cdr a) l) $l (cdr (member a $l))) l))
  30. (defun FindAso ($v %l) (vl-some (function (lambda(x) (if (= $v (cdr (assoc 0 (setq e (entget x))))) e nil))) %l))

 
 
gr.Rlx
回复

使用道具 举报

4

主题

15

帖子

11

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 16:50:36 | 显示全部楼层
谢谢你的好意
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 13:06 , Processed in 1.804420 second(s), 62 queries .

© 2020-2025 乐筑天下

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