乐筑天下

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

[编程交流] **Lisp例程移动文本或

[复制链接]

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:09:41 | 显示全部楼层
罗恩琼普
文本不一定已经在两点附近,因此交叉ssget将选择其他内容或可能什么都没有,将需要3个选择文本&p1 p2,就像您的带有边界框的中间想法将用作库例程一样。 
 
  1. ;; Ronjonp - 03.22.2018 mid pt of two pts
  2. (defun _mid (p1 p2) (polar p1 (angle p1 p2) (/ (distance p1 p2) 2.)))
  3. ; modified by Alan H basicly supports any object that can have a bounding box 03.23.2018
  4. (defun c:foo (/ e p p1 p2)
  5. (setq e (vlax-ename->vla-object (car (entsel "pick object"))))
  6. (vla-getboundingbox e 'll 'ur)
  7. (setq p (mapcar 'vlax-safearray->list (list ll ur)))
  8. (setq p1 (getpoint "pick 1st point"))
  9. (setq p2 (getpoint "pick 2nd point"))
  10. (vlax-invoke e 'move (_mid (car p) (cadr p)) (_mid p1 p2))
  11. (princ)
  12. )
  13. (vl-load-com)
  14. (c:foo)

 
在块、*文本、对象、线条等上测试
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:13:23 | 显示全部楼层
我的代码基于示例图形,因此应该可以工作。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:18:10 | 显示全部楼层
Ronjonp这个问题确实可以通过使用一个表来解决,这就是你所暗示的,中心文本在一个表中得到支持。我并没有看示例dwg,而是将其按面值移动到一个点。我相信它会有用的。
 
关于形状中的数字,你可以得到TTF,它可以做这类事情,我认为它的丁蝙蝠在一个圆圈中有0-9,但我有一个TTF,它允许数字10+它使它成为两部分文本7+5=75
 
再想一想重新采样dwg,1个拾取可能全部完成!
 
选取文字,做一个多边形,这样可以得到文字的角点。唯一的问题是文本选取点必须在矩形内。然后在文本框外执行bpoly-左下角一个分数?
 
如果我可以手动到达某个地方,那么就开始se
  1. (setq ent (entsel))
  2. (setq pt (cadr ent))
  3. (command "bpoly" pt "")
  4. (setq obj1 (vlax-ename->vla-object (entlast)))
  5. (vla-getboundingbox obj1 'll 'ur)
  6. (setq p (mapcar 'vlax-safearray->list (list ll ur)))
  7. (setq p3 (list ( - (car (nth 0 p)) 0.00001) (cadr (nth 0 p))))
  8. (command "bpoly" p3 "")
  9. (setq obj2 (vlax-ename->vla-object (entlast)))
  10. (vla-getboundingbox obj2 'll 'ur)
  11. (setq p2 (mapcar 'vlax-safearray->list (list ll ur)))
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:21:16 | 显示全部楼层
我确信可以编写代码来一次性清理表,但我现在没有时间。此外,我仍然觉得制作桌子的过程需要自动化,但那只是我(我非常不耐烦和懒惰)。
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 16:26:14 | 显示全部楼层
 
周末曾经是懒散的心情
谢谢好主意-BIGAL bpoly
打嗝:如果一个单元格中有两个以上的文本实体,则所有实体都重叠
 
请仅在外框处单击。。
  1. (vl-load-com)
  2. (defun c:m2cen (/ ss en i lp pl tx p obj box ll rr)
  3. ;hanhphuc 23.03.2018
  4. (and
  5.    (while (not ss)
  6.      (setq
  7. ss (ssget "_:S:E+."
  8.           '((0 . "LWPOLYLINE") (-4 . "&=") (70 . 1) (90 . 4))
  9.    )
  10.      )
  11.    )
  12.    (setq lp '((en)(mapcar 'cdr (vl-remove-if ''((x) (/= (car x) 10)) (entget en))))
  13.   en  (ssname ss 0)
  14.   pl (lp en)
  15.              tx (ssget "_WP" (mapcar ''((x)(trans x en 1)) pl) '((0 . "*TEXT"))))
  16.    (repeat (setq i (sslength tx))
  17.      (setq obj (vlax-ename->vla-object (ssname tx (setq i (1- i) )))
  18.     p         (vlax-get obj 'InsertionPoint))
  19.            (if (vlax-property-available-p obj 'AttachmentPoint)
  20.         (vla-put-AttachmentPoint obj 5)
  21.       )
  22.      (and
  23. (setq box (bpoly (trans p 0 1)))
  24. (setq pl (lp box)
  25.       mp
  26.          (reverse
  27.            (cons
  28.              0.0
  29.              (mapcar ''((f) (/ (apply '+ (mapcar 'f pl)) (length pl)))
  30.                      (list cadr car)
  31.              )
  32.            )
  33.          )
  34. )
  35. (entdel box)
  36. (progn
  37.   (vla-getboundingbox obj 'll 'ur)
  38.   (vlax-invoke
  39.     obj
  40.     'move
  41.     (apply 'mapcar
  42.            (cons ''((a b) (* (+ a b) 0.5))
  43.                  (mapcar 'vlax-safearray->list (list ll ur))
  44.            )
  45.     )         
  46.         mp
  47.   )
  48. )
  49.      )
  50.    )
  51. )
  52. (princ)
  53. )

 
为什么@OP不使用内置(命令:table)来填充数据?
我更喜欢activeX自动添加方法更简单、更灵活
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:30:30 | 显示全部楼层
Hanhpuc你的右边实际上忘记了我已经做过的一件事,那就是在pline中查找文本,所以只需在文本附近拾取,这使框成为一个多边形,并允许使用带两个点的“C”来查找txt,同样是一个单次拾取,如果txt位于左下角并且正好位于一行上方,这也解决了一个问题。关于两篇文章,你是对的,需要测试。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-15 00:44 , Processed in 1.859059 second(s), 62 queries .

© 2020-2025 乐筑天下

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