乐筑天下

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

[编程交流] 在块内移动多行文字

[复制链接]

16

主题

40

帖子

24

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
80
发表于 2022-7-6 09:44:46 | 显示全部楼层 |阅读模式
你好
我想要这种Lisp程序
1.获取我不想移动的多行文字
2.获得相对x,y移动坐标。(如100150)
 
多行文字在区块中很深,所以我必须双击5次。
谢谢
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 09:49:38 | 显示全部楼层
看看这个,伙计。
 
  1. (defun c:Action (/ Block Obj)
  2. ;; Tharwat 27. 02. 2011
  3. (vl-load-com)
  4. (vlax-for block
  5.                  (vla-get-blocks
  6.                    (vla-get-activedocument
  7.                      (vlax-get-acad-object)
  8.                    )
  9.                  )
  10.    (if
  11.      (and
  12.        (eq :vlax-false (vla-get-isLayout block)) ; Lee Technique
  13.        (eq :vlax-false (vla-get-isXref block))   ; Lee Technique
  14.      )
  15.       (vlax-for obj block
  16.         (if (eq "AcDbMText" (vla-get-objectname obj))
  17.           (vla-move obj
  18.                     (vlax-3d-point '(0. 0. 0.))
  19.                     (vlax-3d-point '(100. 150. 0.))
  20.           )
  21.         )
  22.       )
  23.    )
  24. )
  25. (vla-regen (vla-get-ActiveDocument (vlax-get-acad-object))
  26.             acAllViewports
  27. )
  28. (princ)
  29. )

 
塔瓦特
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 09:55:34 | 显示全部楼层
或者:
 
  1.   (defun c:MovT (/ doc ent_ ent pt1 blk)
  2. (vl-load-com)
  3. (if (setq ent_ (nentsel "\nSelect MTEXT:"))
  4. (progn
  5. (setq doc (vla-get-ActiveDocument (vlax-get-acad-object))
  6.   ent (vlax-ename->vla-object (car ent_))
  7.   blk (vla-ObjectIdToObject doc (vla-get-OwnerID ent))
  8. )
  9.    (vla-Move ent (vlax-3d-point (setq pt1 (mapcar '+
  10.       (last (caddr ent_))(cdr (assoc 10 (entget (car ent_)))))))
  11.       (vlax-3d-point (getpoint pt1 "\nNew point:")))
  12.           (vla-get-Count blk)
  13.           (vla-update ent)
  14.           )
  15.    )
  16. (vla-regen (vla-get-ActiveDocument (vlax-get-acad-object))
  17.            acAllViewports)           
  18. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:57:50 | 显示全部楼层
修改块的子图元时,需要记住,块定义是在WCS平面中以单位比例和零旋转定义的。
 
因此,如果用户选择包含在具有块定义以外特性的块中的多行文字,则必须对位移矢量进行变换,以考虑法线/比例/旋转的变化(类似于此处实现的方法)。
 
这将考虑所有UCS/视图和所有块比例/旋转:
 
我相信以上可以通过使用nentselp选择返回的矩阵的逆来完成,但我不确定我上面使用的方法在性能上会有多大差异。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:04:12 | 显示全部楼层
我没有意识到RefEdit有这么多步骤。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 10:09:40 | 显示全部楼层
 
我想你是对的
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:12:14 | 显示全部楼层
 
我同意你的观点
 
更严重的是,我的代码更多的是出于学术目的(不管它值多少)——实际上,你永远不会走这条路,每种修改方法都需要一个单独的程序。。。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:15:16 | 显示全部楼层
可悲的是,这家伙正在使用RefEdit替换。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 10:20:09 | 显示全部楼层
 
RefEdit与线程有什么关系?
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:26:30 | 显示全部楼层
我猜李删除了他的贝迪特评论。看看RefEdit,你会发现它基本上就是完成这样的块修改所需要的。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 23:31 , Processed in 0.913774 second(s), 72 queries .

© 2020-2025 乐筑天下

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