乐筑天下

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

[编程交流] 高亮显示选定内容

[复制链接]

16

主题

119

帖子

109

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
82
发表于 2022-7-6 08:14:08 | 显示全部楼层 |阅读模式
我有下面的Lisp程序。运行代码时,它首先要求选择维度,然后要求选择属性块以导入维度的值。
 
我的问题是:-如何修改代码以使选定尺寸高亮显示,如标准AutoCAD选择高亮显示?目前,选定的维度未高亮显示,因此很难知道它是否被选中。我希望这是一个简单的解决方案,有人可以帮助我。
 
这可能更复杂,但我想知道是否可以修改代码,使其能够将维度文本放置在任何指定的属性标记中。现在,它只将维度文本放置在具有多个标记的属性的第一行。
在这种特殊情况下,代码中指定了标记名“UTUNIT”,但仅当“UTUNIT”位于属性的第一行时才起作用。
 
 
  1. (defun C:dimatt (/ dim diminfo dimtext ss ent entinfo)
  2. (setq dim (entsel "\n Select Dimension: "))
  3. (setq diminfo (entget (car dim)))
  4. (if (= (cdr (assoc 1 diminfo)) "")
  5. (setq dimtext (rtos (cdr (assoc 42 diminfo))))
  6. (setq dimtext (cdr (assoc 1 entinfo)))
  7. )
  8. (setq ss (ssget))
  9. (setq ent (entnext (ssname ss 0)))
  10. (setq entinfo (entget ent))
  11. (while
  12. (and ent
  13. (= (cdr (assoc 0 entinfo)) "ATTRIB")
  14. )
  15. (if (= (cdr (assoc 2 entinfo)) (strcase "UTUNIT"))
  16. (progn
  17. (entmod (subst (cons 1 dimtext) (assoc 1 entinfo) entinfo))
  18. (entupd ent)
  19. (setq ent nil)
  20. )
  21. (setq ent (entnext ent))
  22. )
  23. )
  24. (princ)
  25. )

 
谢谢任何能帮忙的人。
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:20:00 | 显示全部楼层
解决方案是重画函数:
 
  1. (redraw ent 3)   ;highlight
  2. ...
  3. (redraw ent 4)   ;un-highlight

 
当做
米尔恰
回复

使用道具 举报

16

主题

119

帖子

109

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
82
发表于 2022-7-6 08:22:10 | 显示全部楼层
米尔恰,
 
谢谢你的回复。
 
请原谅我的无知和lisp知识的缺乏,但这将在代码中插入到哪里?
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:26:56 | 显示全部楼层
我最近刚刚用redraw函数写了一个
 
样品
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:27:54 | 显示全部楼层
您可以这样添加:
  1. (defun C:dimatt ( / dim diminfo dimtext ss ent entinfo)
  2. (setq dim (entsel "\n Select Dimension: "))
  3. [color=blue](redraw (car dim) 3)
  4. [/color](setq diminfo (entget (car dim)))
  5. (if (= (cdr (assoc 1 diminfo)) "")
  6. (setq dimtext (rtos (cdr (assoc 42 diminfo))))
  7. (setq dimtext (cdr (assoc 1 entinfo)))
  8. )
  9. [color=blue](prompt "\nSelect block to export value:")
  10. [/color](setq ss (ssget))
  11. (setq ent (entnext (ssname ss 0)))
  12. (setq entinfo (entget ent))
  13. (while
  14. (and ent
  15. (= (cdr (assoc 0 entinfo)) "ATTRIB")
  16. )
  17. (if (= (cdr (assoc 2 entinfo)) (strcase "UTUNIT"))
  18. (progn
  19. (entmod (subst (cons 1 dimtext) (assoc 1 entinfo) entinfo))
  20. (entupd ent)
  21. (setq ent nil)
  22. )
  23. (setq ent (entnext ent))
  24. )
  25. )
  26. [color=blue](redraw (car dim) 4)
  27. [/color](princ)
  28. )

 
当做
米尔恰
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:31:32 | 显示全部楼层
 
考虑一下[快速书写]
 
  1. (defun c:test  ( / atsel dim str atb e b)
  2. (vl-load-com)
  3.      (setq atsel (ssadd))
  4.      (if (and
  5.                (setq dim (ssget ":S:E" '((0 . "DIMENSION"))))
  6.                (setq str (rtos (vla-get-measurement
  7.                                      (setq e    (vlax-ename->vla-object
  8.                                                       (ssname dim
  9.                                                               0))))))
  10.                (not (vla-Highlight e :vlax-true))
  11.                )
  12.            (progn
  13.                  (while (setq atb  (nentselp
  14.                                          "\nSelect Attribute value to replace: "))
  15.                        (if (eq (cdr (assoc 0 (entget (setq at   (Car atb))))) "ATTRIB")
  16.                              (progn (ssadd at atsel)(redraw at 3))
  17.                              )
  18.                        )
  19.                  (repeat (Setq i (sslength atsel))
  20.                        (vla-put-textstring
  21.                              (vlax-ename->vla-object
  22.                                    (setq b (ssname atsel
  23.                                                    (setq i    (1- i)))))
  24.                              str)
  25.                        (redraw b 4)
  26.                        )
  27.                  (vla-Highlight e :vlax-false)
  28.                  )
  29.            )(princ)
  30.      )

 
HTH公司
回复

使用道具 举报

16

主题

119

帖子

109

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
82
发表于 2022-7-6 08:35:27 | 显示全部楼层
Mircea,非常感谢修改后的代码。我试过了,效果很好。我希望我能抽出时间学习推理。
我感谢你的时间和帮助。
 
pBe。。。。。。
我能说什么?你的代码远远优于我使用的原始代码。
你已经不是第一次把我要求的一切都给了我了。
衷心感谢。
 
如果你们在马尼拉,请联系我。啤酒我请客。
 
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:39:18 | 显示全部楼层
 
完全欢迎你!
 
当做
米尔恰
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:39:47 | 显示全部楼层
 
真的没什么,我只是做了个普通的
 
 
也许有一天我会接受你的提议
 
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:45:27 | 显示全部楼层
这是我的版本,使用一个字段:
 
  1. [color=GREEN];; Link Dimension to Attribute  -  Lee Mac[/color]
  2. [color=GREEN];; Prompts for selection of a Dimension and references the Dimension[/color]
  3. [color=GREEN];; value using a Field located in a selected block attribute.[/color]
  4. ([color=BLUE]defun[/color] c:Dim2Att ( [color=BLUE]/[/color] *error* ad at el en g1 g2 gr ms ob p1 st )
  5.    
  6.    ([color=BLUE]defun[/color] *error* ( msg )
  7.        ([color=BLUE]if[/color] en ([color=BLUE]redraw[/color] en 4))
  8.        ([color=BLUE]if[/color] ad ([color=BLUE]vla-endundomark[/color] ad))
  9.        ([color=BLUE]if[/color] ([color=BLUE]not[/color] ([color=BLUE]wcmatch[/color] ([color=BLUE]strcase[/color] msg) [color=MAROON]"*BREAK,*CANCEL*,*EXIT*"[/color]))
  10.            ([color=BLUE]princ[/color] ([color=BLUE]strcat[/color] [color=MAROON]"\nError: "[/color] msg))
  11.        )
  12.        ([color=BLUE]redraw[/color]) ([color=BLUE]princ[/color])
  13.    )
  14.    
  15.    ([color=BLUE]while[/color]
  16.        ([color=BLUE]progn[/color] ([color=BLUE]setvar[/color] 'ERRNO 0) ([color=BLUE]setq[/color] en ([color=BLUE]car[/color] ([color=BLUE]entsel[/color] [color=MAROON]"\nSelect Dimension to Link: "[/color])))
  17.            ([color=BLUE]cond[/color]
  18.                (   ([color=BLUE]=[/color] 7 ([color=BLUE]getvar[/color] 'ERRNO))
  19.                    ([color=BLUE]princ[/color] [color=MAROON]"\nMissed, try again."[/color])
  20.                )
  21.                (   ([color=BLUE]eq[/color] 'ENAME ([color=BLUE]type[/color] en))
  22.                    ([color=BLUE]if[/color] ([color=BLUE]not[/color] ([color=BLUE]wcmatch[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 0 ([color=BLUE]entget[/color] en))) [color=MAROON]"*DIMENSION"[/color]))
  23.                        ([color=BLUE]princ[/color] [color=MAROON]"\nObject is not a Dimension."[/color])
  24.                    )
  25.                )
  26.            )
  27.        )
  28.    )
  29.    ([color=BLUE]if[/color] en
  30.        ([color=BLUE]progn[/color]
  31.            ([color=BLUE]setq[/color] ad ([color=BLUE]vla-get-activedocument[/color] ([color=BLUE]vlax-get-acad-object[/color]))
  32.                  el ([color=BLUE]entget[/color] en)
  33.                  p1 ([color=BLUE]trans[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 11 el)) en 1)
  34.                  ob ([color=BLUE]vlax-ename->vla-object[/color] en)
  35.                  st ([color=BLUE]strcat[/color]
  36.                         [color=MAROON]"%<\\AcObjProp Object(%<\\_ObjId "[/color]
  37.                         ([color=BLUE]if[/color]
  38.                             ([color=BLUE]and[/color]
  39.                                 ([color=BLUE]vl-string-search[/color] [color=MAROON]"64"[/color] ([color=BLUE]getenv[/color] [color=MAROON]"PROCESSOR_ARCHITECTURE"[/color]))
  40.                                 ([color=BLUE]vlax-method-applicable-p[/color] ([color=BLUE]vla-get-utility[/color] ad) 'getobjectidstring)
  41.                             )
  42.                             ([color=BLUE]vla-getobjectidstring[/color] ([color=BLUE]vla-get-utility[/color] ad) ob [color=BLUE]:vlax-false[/color])
  43.                             ([color=BLUE]itoa[/color] ([color=BLUE]vla-get-objectid[/color] ob))
  44.                         )
  45.                         ([color=BLUE]if[/color] ([color=BLUE]eq[/color] [color=MAROON]""[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 1 el)))
  46.                             [color=MAROON]">%).Measurement \\f "%lu6">%"[/color]
  47.                             [color=MAROON]">%).TextOverride>%"[/color]
  48.                         )
  49.                     )
  50.            )
  51.            ([color=BLUE]vla-startundomark[/color] ad)
  52.            ([color=BLUE]redraw[/color] en 3)
  53.            ([color=BLUE]princ[/color] ([color=BLUE]setq[/color] ms [color=MAROON]"\nSelect Attribute to Link to Dimension: "[/color]))
  54.            ([color=BLUE]while[/color]
  55.                ([color=BLUE]progn[/color]
  56.                    ([color=BLUE]setq[/color] gr ([color=BLUE]grread[/color] [color=BLUE]t[/color] 13 2)
  57.                          g1 ([color=BLUE]car[/color]  gr)
  58.                          g2 ([color=BLUE]cadr[/color] gr)
  59.                    )
  60.                    ([color=BLUE]cond[/color]
  61.                        (   ([color=BLUE]=[/color] 5 g1)
  62.                            ([color=BLUE]redraw[/color])
  63.                            ([color=BLUE]grdraw[/color] p1 g2 3 1)
  64.                            [color=BLUE]t[/color]
  65.                        )
  66.                        (   ([color=BLUE]=[/color] 3 g1)
  67.                            ([color=BLUE]redraw[/color])
  68.                            ([color=BLUE]if[/color] ([color=BLUE]setq[/color] at ([color=BLUE]car[/color] ([color=BLUE]nentselp[/color] g2)))
  69.                                ([color=BLUE]if[/color] ([color=BLUE]eq[/color] [color=MAROON]"ATTRIB"[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 0 ([color=BLUE]entget[/color] at))))
  70.                                    ([color=BLUE]progn[/color]
  71.                                        ([color=BLUE]vla-put-textstring[/color] ([color=BLUE]vlax-ename->vla-object[/color] at) st)
  72.                                        ([color=BLUE]vl-cmdf[/color] [color=MAROON]"_.updatefield"[/color] at [color=MAROON]""[/color])
  73.                                        ([color=BLUE]princ[/color] ms)
  74.                                    )
  75.                                    ([color=BLUE]princ[/color] ([color=BLUE]strcat[/color] [color=MAROON]"\nObject is not an Attribute."[/color] ms))
  76.                                )
  77.                                ([color=BLUE]princ[/color] ([color=BLUE]strcat[/color] [color=MAROON]"\nMissed, try again."[/color] ms))
  78.                            )
  79.                            [color=BLUE]t[/color]
  80.                        )
  81.                    )
  82.                )
  83.            )
  84.            ([color=BLUE]redraw[/color] en 4)
  85.            ([color=BLUE]redraw[/color])
  86.            ([color=BLUE]vla-endundomark[/color] ad)
  87.        )
  88.    )
  89.    ([color=BLUE]princ[/color])
  90. )
  91. ([color=BLUE]vl-load-com[/color]) ([color=BLUE]princ[/color])
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 09:41 , Processed in 0.351311 second(s), 72 queries .

© 2020-2025 乐筑天下

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