乐筑天下

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

[编程交流] 靠近文本实体的点绘制

[复制链接]

57

主题

243

帖子

190

银币

后起之秀

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

铜币
285
发表于 2022-7-5 22:59:02 | 显示全部楼层 |阅读模式
我寻找一个可以解决以下任务的例程:
 
1-我选择一组文本实体(在本例中为数字)
2-然后在1的位置附近画一个点
3-最后,例程必须能够复制其他文本字符串中的点,保持步骤2中定义的相同密切关系
 
附上一张图纸以便更好地理解
坦克求救!
cadtutor\u测试点。图纸
回复

使用道具 举报

6

主题

31

帖子

25

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-5 23:03:50 | 显示全部楼层
试试这个
  1. (defun c:txtpt (/ txt1 txtpt pt ss i ptsz ang dist ip pt1 pt2 pt3 pt4)
  2. (setq    txt1  (progn (princ "Pick First M/Text Object")
  3.             (ssget "_+.:E:S" '((0 . "*TEXT")))
  4.          )
  5.    txtpt (cdr (assoc 10 (entget (ssname txt1 0))))
  6.    pt    (getpoint txtpt "\nSelect loction of point")
  7.    ss    (progn (princ "Select All M/Text Objects")
  8.             (ssget '((0 . "*TEXT")))
  9.          )
  10.    i     0
  11.    ptsz  (getreal "\nHow large should the point be?")
  12.    ang
  13.          (angle txtpt pt)
  14.    dist
  15.          (distance txtpt pt)
  16. )
  17. (while (< i (sslength ss))
  18.    (setq ip  (polar
  19.        (cdr (assoc 10 (entget (ssname ss i))))
  20.        ang
  21.        dist
  22.          )
  23.      pt1 (polar ip (/ pi 2) (/ ptsz 2))
  24.      pt2 (polar ip (* pi 1.5) (/ ptsz 2))
  25.      pt3 (polar ip 0 (/ ptsz 2))
  26.      pt4 (polar ip pi (/ ptsz 2))
  27.    )
  28.    (command "line" pt1 pt2 "")
  29.    (command "line" pt3 pt4 "")
  30.    (command "circle" ip (/ ptsz 4))
  31.    (setq i (1+ i))
  32. )
  33. )
回复

使用道具 举报

57

主题

243

帖子

190

银币

后起之秀

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

铜币
285
发表于 2022-7-5 23:11:06 | 显示全部楼层
就是这样。但是,没有必要像我的示例中那样绘制符号。我的意图是将其解释为一个观点。我只想画一个简单的点实体。
 
我感谢你的更新。
回复

使用道具 举报

57

主题

243

帖子

190

银币

后起之秀

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

铜币
285
发表于 2022-7-5 23:15:42 | 显示全部楼层
我认为这种方式解决了我想要的。
 
  1. (defun c:txtpt (/ txt1 txtpt pt ss i ptsz ang dist ip)
  2. (setq    txt1  (progn (princ "Pick First M/Text Object")
  3.             (ssget "_+.:E:S" '((0 . "*TEXT")))
  4.          )
  5.    txtpt (cdr (assoc 10 (entget (ssname txt1 0))))
  6.    pt    (getpoint txtpt "\nSelect loction of point")
  7.    ss    (progn (princ "Select All M/Text Objects")
  8.             (ssget '((0 . "*TEXT")))
  9.          )
  10.    i     0
  11.    ang
  12.          (angle txtpt pt)
  13.    dist
  14.          (distance txtpt pt)
  15. )
  16. (while (< i (sslength ss))
  17.    (setq ip  (polar
  18.        (cdr (assoc 10 (entget (ssname ss i))))
  19.        ang
  20.        dist
  21.          )
  22.    )
  23.    (command "point" ip)
  24.    (setq i (1+ i))
  25. )
  26. )
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-5 23:19:03 | 显示全部楼层
  1. (command "point" [b]"_non"[/b] ip)
回复

使用道具 举报

57

主题

243

帖子

190

银币

后起之秀

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

铜币
285
发表于 2022-7-5 23:22:40 | 显示全部楼层
pBe,
坦克!
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 23:26:20 | 显示全部楼层
尝试
 
  1. (defun c:Test (/ *error* c s n sn e aa ab ac)
  2. ;;    Tharwat 23.05.2014        ;;
  3. (defun *error* (msg)
  4.    (command "_.ucs" "_w")
  5.    (if c (setvar 'cmdecho c))
  6.    (if (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*EXIT*")
  7.      (princ msg)
  8.      (princ (strcat "Error : < ** " msg " ** >"))
  9.    )
  10. )
  11. (if (zerop (getvar 'PDMODE))
  12.    (setvar 'PDMODE 34)
  13. )
  14. (setq c (getvar 'cmdecho))
  15. (setvar 'cmdecho 0)
  16. (if (setq s (ssget '((0 . "TEXT"))))
  17.    (repeat (setq n (sslength s))
  18.      (setq sn (ssname s (setq n (1- n))))
  19.      (setq e (textbox (list
  20.                         (cons -1 sn)
  21.                       )
  22.              )
  23.      )
  24.      (command "_.ucs" "Object" sn)
  25.      (setq aa (car e)
  26.            ab (cadr e)
  27.            ac (list (car ab) (cadr aa))
  28.      )
  29.      (command "_.point"
  30.               "_non"
  31.               (list (car ac)
  32.                     (- (cadr ac) (/ (cdr (assoc 40 (entget sn))) 2.))
  33.               )
  34.      )
  35.    )
  36. )
  37. (command "_.ucs" "_w")
  38. (setvar 'cmdecho c)
  39. (princ)
  40. )
回复

使用道具 举报

57

主题

243

帖子

190

银币

后起之秀

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

铜币
285
发表于 2022-7-5 23:31:04 | 显示全部楼层
塔尔瓦特,
坦克!
 
我很欣赏这项工作。一如既往,完美。
这是一个有趣的选择,也解决了我的需要。
然而,我更喜欢这个线程中已经提供的解决方案,因为它允许每个文本字符串的设置点位置。
我所附的图纸中显示的点的位置只是一个示例。
其主要思想是可以预定义点相对于文本字符串的位置。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 23:34:13 | 显示全部楼层
 
很高兴听到这个消息。
 
没问题,我只是想让生活尽可能地轻松。
 
祝你好运
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 23:38:24 | 显示全部楼层
以下是完成任务的另一种方法:
上述内容将说明选择中每个文本对象的不同位置、旋转、宽度、高度和方向,并在所有UCS和视图设置下正确执行。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 03:02 , Processed in 0.672624 second(s), 72 queries .

© 2020-2025 乐筑天下

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