乐筑天下

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

[编程交流] 标记对象#039;s层使用

[复制链接]

30

主题

96

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
150
发表于 2022-7-6 07:39:28 | 显示全部楼层 |阅读模式
我想在绘图中标记一些元素的图层。我想过使用MLeader来实现这一点。我用lisp编写了一些代码,但不起作用。我做错了什么?
 
  1. (defun c:ObjLayer(/ pnt1 pnt2 n obj dxf LayerName newdxf)
  2. (setq n 1)
  3. (while (> n 0)
  4.    (setq pnt1 (getpoint "\nPick first point:"))
  5.    (setq pnt2 (getpoint pnt1 "\nPick next point:"))
  6.    (setq obj (car (entsel "\nPick Entity:")))
  7.    (setq dxf (entget obj))
  8.    (setq LayerName (cdr (assoc 8 dxf)))
  9.    (setq newdxf '((0 . "MULTILEADER")
  10.              (cons 110 (car pnt1)(cadr pnt1)(caddr pnt1))
  11.              (cons 10 (car pnt2)(cadr pnt2)(caddr pnt2))
  12.              (cons 304 LayerName)
  13.              (cons 8 "A-ANNO-DIMS")
  14.              ))
  15.    (entmake newdxf)
  16.    (setq n (1+ n))
  17. )
  18. )
回复

使用道具 举报

5

主题

1074

帖子

1088

银币

初来乍到

Rank: 1

铜币
9
发表于 2022-7-6 07:44:54 | 显示全部楼层
这远不如您所追求的lisp解决方案那么性感,而且看起来您正在接近您所追求的。毫无疑问,有人会跳进来整理你的Lisp程序,但除此之外,我已经建立了一个多引线样式,其中的文本包括一个字段。如果使用它,需要双击字段,这将打开字段定义框,如图所示。到达后,您可以按下按钮提示选择对象。
083932cowlycamdcyvmwow.jpg
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 07:51:14 | 显示全部楼层
我的老朋友。。。
 
  1. (defun c:Test (/ spc p1 p2 str lead)
  2. (vl-load-com)
  3. ;; Tharwat 08. 07. 2011
  4. (cond ((not acdoc)
  5.         (setq acdoc (vla-get-activedocument (vlax-get-acad-object)))
  6.        )
  7. )
  8. (setq spc (if (> (vla-get-activespace acdoc) 0)
  9.              (vla-get-modelspace acdoc)
  10.              (vla-get-paperspace acdoc)
  11.            )
  12. )
  13. (while
  14.    (and
  15.      (setq p1 (getpoint "\n specify First Point :"))
  16.      (setq p2 (getpoint p1 "\n Specify Second point :"))
  17.      (setq str
  18.             (car (entsel "\n Specify any entity to get its Layer name :"))
  19.      )
  20.    )
  21.     (progn
  22.       (setq lead (vla-addmleader
  23.                    spc
  24.                    (vlax-make-variant
  25.                      (vlax-safearray-fill
  26.                        (safearray vlax-vbdouble '(0 . 5))
  27.                        (apply 'append (list p1 p2))
  28.                      )
  29.                    )
  30.                    0
  31.                  )
  32.       )
  33.       (vla-put-textstring lead (cdr (assoc 8 (entget str))))
  34.     )
  35. )
  36. (princ)
  37. )
回复

使用道具 举报

30

主题

96

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
150
发表于 2022-7-6 07:57:40 | 显示全部楼层
杰出的塔尔瓦特。。。,正是我想要的。。。!!!!谢谢。。。!!!
回复

使用道具 举报

30

主题

96

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
150
发表于 2022-7-6 07:58:49 | 显示全部楼层
我知道这种使用field的方法。但我不想每次都去编辑文本。好吧,谢谢你的支持,爸爸。。。
回复

使用道具 举报

30

主题

96

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
150
发表于 2022-7-6 08:05:41 | 显示全部楼层
Tharwat,有没有办法控制“着陆距离”属性?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:09:19 | 显示全部楼层
 
  1. (apply 'append (list '(a b c) '(d e f)))  =  (a b c d e f)  =  (append '(a b c) '(d e f))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:13:27 | 显示全部楼层
另一个,使用字段:
 
  1. [color=GREEN];; Object Layer in MLeader Field  -  Lee Mac  -  www.lee-mac.com[/color]
  2. ([color=BLUE]defun[/color] c:layerleader ( [color=BLUE]/[/color] _getpoints _objectid acdoc e l )
  3.    ([color=BLUE]setq[/color] acdoc ([color=BLUE]vla-get-activedocument[/color] ([color=BLUE]vlax-get-acad-object[/color])))
  4.    ([color=BLUE]setq[/color] _getpoints
  5.        ([color=BLUE]lambda[/color] ( [color=BLUE]/[/color] l p )
  6.            ([color=BLUE]if[/color] ([color=BLUE]car[/color] ([color=BLUE]setq[/color] l ([color=BLUE]list[/color] ([color=BLUE]getpoint[/color] [color=MAROON]"\nFirst Point: "[/color]))))
  7.                ([color=BLUE]while[/color] ([color=BLUE]setq[/color] p ([color=BLUE]getpoint[/color] [color=MAROON]"\nNext Point <Done>: "[/color] ([color=BLUE]car[/color] l)))
  8.                    ([color=BLUE]mapcar[/color]
  9.                       '([color=BLUE]lambda[/color] ( a b ) ([color=BLUE]grdraw[/color] a b 3 1))
  10.                        ([color=BLUE]setq[/color] l ([color=BLUE]cons[/color] p l))
  11.                        ([color=BLUE]cdr[/color] l)
  12.                    )
  13.                )
  14.            )
  15.            ([color=BLUE]redraw[/color]) ([color=BLUE]reverse[/color] l)
  16.        )
  17.    )
  18.    ([color=BLUE]setq[/color] _objectid
  19.        ([color=BLUE]eval[/color]
  20.            ([color=BLUE]list[/color] '[color=BLUE]lambda[/color] '( obj )
  21.                ([color=BLUE]if[/color]
  22.                    ([color=BLUE]and[/color]
  23.                        ([color=BLUE]vl-string-search[/color] [color=MAROON]"64"[/color] ([color=BLUE]getenv[/color] [color=MAROON]"PROCESSOR_ARCHITECTURE"[/color]))
  24.                        ([color=BLUE]vlax-method-applicable-p[/color] ([color=BLUE]vla-get-utility[/color] acdoc) 'getobjectidstring)
  25.                    )
  26.                    ([color=BLUE]list[/color] '[color=BLUE]vla-getobjectidstring[/color] ([color=BLUE]vla-get-utility[/color] acdoc) 'obj '[color=BLUE]:vlax-false[/color])
  27.                   '([color=BLUE]itoa[/color] ([color=BLUE]vla-get-objectid[/color] obj))
  28.                )
  29.            )
  30.        )
  31.    )
  32.    ([color=BLUE]if[/color]
  33.        ([color=BLUE]and[/color]
  34.            ([color=BLUE]setq[/color] e ([color=BLUE]car[/color] ([color=BLUE]entsel[/color])))
  35.            ([color=BLUE]<[/color] 1 ([color=BLUE]length[/color] ([color=BLUE]setq[/color] l (_getpoints))))
  36.        )
  37.        ([color=BLUE]vla-put-textstring[/color]
  38.            ([color=BLUE]vlax-invoke[/color]
  39.                ([color=BLUE]vlax-get-property[/color] acdoc ([color=BLUE]if[/color] ([color=BLUE]=[/color] 1 ([color=BLUE]getvar[/color] 'CVPORT)) 'paperspace 'modelspace))
  40.                'addmleader
  41.                ([color=BLUE]apply[/color] '[color=BLUE]append[/color] l) 0
  42.            )
  43.            ([color=BLUE]strcat[/color] [color=MAROON]"%<\\AcObjProp Object(%<\\_ObjId "[/color] (_objectid ([color=BLUE]vlax-ename->vla-object[/color] e)) [color=MAROON]">%).Layer>%"[/color])
  44.        )
  45.    )
  46.    ([color=BLUE]vla-regen[/color] acdoc [color=BLUE]acactiveviewport[/color])
  47.    ([color=BLUE]princ[/color])
  48. )
  49. ([color=BLUE]vl-load-com[/color]) ([color=BLUE]princ[/color])
回复

使用道具 举报

1

主题

23

帖子

22

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 08:17:05 | 显示全部楼层
嘿Tharwat
 
谢谢你的快速回放。。。
只有我仍然只能选择一个对象。。我做错什么了吗?
格里茨·约翰
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:25:19 | 显示全部楼层
 
您的意思是要获取选定对象的数量吗?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 05:11 , Processed in 0.543954 second(s), 74 queries .

© 2020-2025 乐筑天下

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