乐筑天下

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

[编程交流] 多行文字长度

[复制链接]

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 10:27:02 | 显示全部楼层 |阅读模式
你好
 
我想知道为什么这个例程不适用于多个选定的MText!
 
它只能在一个多行文字上实现。
 
  1. (defun c:TESt (/ ss)
  2. (if (setq ss (ssget '((0 . "MTEXT"))))
  3.    ((lambda (i / e ins end ang dis)
  4.      (setq e (entget (ssname ss (setq i (1+ i)))))
  5.                      (setq ins (cdr (assoc 10 e)))
  6.                      (setq end (cdr (assoc 42 e)))
  7.                      (setq ang (cdr (assoc 50 e)))
  8.                      (setq dis (polar ins ang end))
  9.               (entmakex (list (cons 0 "LINE")
  10.               (cons 10 ins)
  11.               (cons 11 dis)
  12.                     )))
  13.                       -1
  14.        )
  15.    (alert "Nothing's Selected")
  16.    )
  17.    (command "_.erase" ss "")
  18. (princ)
  19. )

 
非常感谢。
塔瓦特
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:49:44 | 显示全部楼层
您没有单步执行选择集。
  1.     ((lambda (i / e ins end ang dis)
  2.      (setq e (entget (ssname ss (setq i (1+ i)))))
  3.                      (setq ins (cdr (assoc 10 e)))

 
你需要使用while或repeat。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:00:27 | 显示全部楼层
既然你基本上已经拥有了它,这里有一点需要仔细考虑。。。
 
  1. (defun c:Test (/ ss)
  2. (if (setq ss (ssget "_:L" '((0 . "MTEXT"))))
  3.    ((lambda (i / e l p)
  4.       (while (setq e (ssname ss (setq i (1+ i))))
  5.         (setq l (entget e))
  6.         (if (entmake (list '(0 . "LINE")
  7.                            (setq p (assoc 10 l))
  8.                            (cons 11 (polar (cdr p) (cdr (assoc 50 l)) (cdr (assoc 42 l))))
  9.                      )
  10.             )
  11.           (entdel e)
  12.         )
  13.       )
  14.     )
  15.      -1
  16.    )
  17. )
  18. (princ)
  19. )

 
要知道,这只适用于左对齐的多行文字。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 11:14:09 | 显示全部楼层
非常感谢Alanjt。
 
这真是太棒了。
 
在得到你的帮助后,这是我的。。。
 
  1. (defun c:TESt (/ ss)
  2. (if (setq ss (ssget '((0 . "MTEXT"))))
  3.    ((lambda (i / ent e ins end ang dis)
  4.      (while (setq ent (ssname ss (setq i (1+ i))))
  5. (setq e (entget ent))  
  6.                      (setq ins (cdr (assoc 10 e)))
  7.                      (setq end (cdr (assoc 42 e)))
  8.                      (setq ang (cdr (assoc 50 e)))
  9.                      (setq dis (polar ins ang end))
  10.              (entmakex (list (cons 0 "LINE")
  11.               (cons 10 ins)
  12.               (cons 11 dis)
  13.                     ))
  14. (entdel ent)))
  15.                       -1
  16.              )
  17.       )
  18. (princ)
  19.    )

 
我寻找DXF代码,它可以帮助我获得文本的长度,但没有结果。
 
那么,如何获得多行文字呢?
 
非常感谢
 
塔瓦特
回复

使用道具 举报

26

主题

149

帖子

127

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-6 11:25:20 | 显示全部楼层
一条非常相互连接的线。
 
Alanjt和Tharwat的精彩套路。
 
我也想知道如何获得文本的长度,因为在DXf代码中不包括文本的终点?
 
谢谢你。
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-6 11:38:55 | 显示全部楼层
*对于方框*
开发者帮助中的查找文本框
 
*如上所示*
插入点dxf 10
端点dxf 42
角度dxf 50
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 21:14 , Processed in 0.414997 second(s), 64 queries .

© 2020-2025 乐筑天下

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