乐筑天下

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

[编程交流] 标记对象点

[复制链接]

8

主题

20

帖子

12

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 10:07:06 | 显示全部楼层 |阅读模式
我找到了一个代码来标记拾取点,该代码有一些修改:
 
我想修改它以显示选定对象(例如3dpoly)的所有拾取点。
标记。lsp
回复

使用道具 举报

8

主题

20

帖子

12

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 10:24:30 | 显示全部楼层
对不起,这是代码
 
  1. (defun c:labeling (/  p1 p2 x y z ptcoord textloc)
  2. (while
  3.    (setq p1 (getpoint "\nPick Point: "))
  4.    (setq p2 (getpoint p1 "\nPick Point Direction: "))
  5.    (setq textloc (getpoint p2 "\nPick Label Location: "))
  6.    (setq x (rtos (car p1)))
  7.    (setq y (rtos (cadr p1)))
  8.    (setq z (rtos (caddr p1)))
  9.    (setq x (strcat "E " x))
  10.    (setq y (strcat "N " y))
  11.    (setq z (strcat "EL. " z))
  12.    (command "qleader" p1 p2 textloc "" x y z "")
  13. )
  14. )

 
我想修改它以显示选定对象(例如3dpoly)的所有点。
有人能帮我吗。。。。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 10:33:14 | 显示全部楼层
这里有很多关于查找多段线顶点的内容,然后您只需为“qleader”添加代码,唯一的区别是为标签答案设置一个角度,可能还有一个预定义的偏移量。
 
现在我想起来了,我确信李·麦克已经完成了对普林的搜索?
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 10:40:15 | 显示全部楼层
这是我找到的一个
 
http://www.cadtutor.net/forum/showthread.php?41117-Label-Point-Z-Value&高亮显示=标签
 
再搜索一点
回复

使用道具 举报

8

主题

20

帖子

12

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 10:53:08 | 显示全部楼层
谢谢Bigal,但您的参考仅选取像我的代码一样的点,而不使用箭头。
 
我需要的代码选择对象有超过1点(直线,多段线,三维多段线等…)然后显示点的所有坐标(xyz)。
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 11:02:05 | 显示全部楼层
 
根据需要更改所有设置:
  1. (defun C:demo(/ en  obj points ss tp xyz)
  2. (defun get3dverices (obj / coords  param pt)
  3. (cond ((eq (vla-get-objectname obj) "AcDbLine")
  4. (setq coords (list (vlax-curve-getstartpoint obj)(vlax-curve-getendpoint obj))))
  5. ((wcmatch (vla-get-objectname obj)
  6.        "AcDb2dPolyline,AcDb3dPolyline")
  7. (setq param
  8. (cond((eq (vlax-curve-isclosed obj) :vlax-true)
  9.     (fix (vlax-curve-getendparam obj)))
  10.      ((fix (1+ (vlax-curve-getendparam obj))))
  11.    )
  12. )
  13. (while (setq pt (vlax-curve-getpointatparam obj (setq param (1- param ))))
  14.    (setq coords (cons pt coords))
  15. ))
  16. ((eq (vla-get-objectname obj)
  17.        "AcDbPolyline")
  18. (setq param
  19. (cond((eq (vlax-curve-isclosed obj) :vlax-true)
  20.     (fix (vlax-curve-getendparam obj)))
  21.      ((fix (1+ (vlax-curve-getendparam obj))))
  22.    )
  23. )
  24. (while (setq pt (vlax-curve-getpointatparam obj (setq param (1- param ))))
  25.    (setq coords (cons pt coords))
  26. )
  27. (setq coords (mapcar (function (lambda(x)(list (car x)(cadr x)(vla-get-elevation obj)))) coords)))
  28. )
  29. )
  30. (if
  31. (setq ss (ssget ":L" (list (cons 0 "LINE,*POLYLINE"))))
  32.   (while (setq en (ssname ss 0))
  33.     (setq points (GET3DVERICES (vlax-ename->vla-object en)))
  34.     (foreach p  points
  35.       (setq xyz (strcat "E "
  36.    (rtos (car p) 2 3)
  37.    "[url="file://\\PN"]\\PN[/url] "
  38.    (rtos (cadr p) 2 3)
  39.    "[url="file://\\PEL"]\\PEL[/url]. "
  40.    (rtos (caddr p) 2 3)))
  41.       (command "._leader"
  42. "_non"
  43. p
  44. "_non"
  45. (setq tp (polar p (/ pi 4) (* 10 (getvar "textsize"))))
  46. "_non"
  47. (polar tp 0 (getvar "textsize"))
  48. ""
  49. xyz
  50. ""))
  51.     (ssdel en ss)))
  52. (princ)
  53. )

 
抱歉,几乎没有测试
回复

使用道具 举报

8

主题

20

帖子

12

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 11:13:05 | 显示全部楼层
谢谢Fixo,
别担心,你的代码做得很好。
如何将引线的大小设置为适合当前尺寸标注,因为在代码中只有箭头和更改的文本。
 
  1. (command "._leader"  "_non"  p  "_non"  (setq tp (polar p (/ pi 4) (* 10 (getvar "textsize"))))  "_non"  (polar tp 0 (getvar "textsize"))  ""  xyz  ""))
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 20:56 , Processed in 0.598531 second(s), 66 queries .

© 2020-2025 乐筑天下

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