乐筑天下

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

[编程交流] 帮助我对齐文本

[复制链接]

32

主题

131

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
160
发表于 2022-7-5 15:31:42 | 显示全部楼层 |阅读模式
嗨,朋友们,
我需要文本自动对齐到线条角度,如所示
随附样本1。dwg、文本1应始终位于行的顶部,其余(文本2、文本3等)均应位于该行的下方。请帮帮我。
 
提前谢谢。
样本1。图纸
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 15:50:17 | 显示全部楼层
答案并不完全正确,但看看大量的多行文字
应用(RO)=#
; 高度=30.0
; 层=“CABLE\u UNDERGROUND\u ANNO”
; 线间距=50.0
; 线间距因子=1.0
; 线间距样式=1
; 线型=“ByLayer”
; 线型比例=1.0
; 线宽=-1
; 正常=(0.0 0.0 1.0)
; ObjectName(RO)=“AcDbMText”
; PlotStyleName=“颜色1”
; 旋转=0.0
; StyleName=“标准”
; TextString=“24FIB SPSP DSLT\\P1356.00m\\PDXVL\U FT2:1-12\\PBD:13-24\\P”
; 宽度=0.0
多行文字或文字具有高度,左上角为已知间距
接下来读取字符串并获得第一行的字符数,这样就可以计算出一个新的插入点
放置多行文字并旋转
 
  1. ; this can be done in a couple of ways is step 1.
  2. ; done purposely as pick two points not a line
  3. (defun C:T2pts ( / pt1 pt2 ang tobj vlobj)
  4. (SETQ PT1 (GETPOINT "\nPick 1st pt" ))
  5. (SETQ PT2 (GETPOINT "\nPick 2nd pt" ))
  6. (setq ang (angle pt1 pt2))
  7. (SETQ TOBJ (ENTSEL "\nPick Text"))
  8. (setq vlobj (vlax-ename->vla-object (car tobj)))
  9. (vlax-put-property vlobj "Rotation" ang)
  10. )
  11. (C:T2pts)

 
  1. step 2 have to have a think about that.
回复

使用道具 举报

5

主题

1074

帖子

1088

银币

初来乍到

Rank: 1

铜币
9
发表于 2022-7-5 15:58:20 | 显示全部楼层
也许研究李的方法会对你的目标有更多的帮助。
 
http://www.lee-mac.com/dtcurve.html
 
谢谢李!
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:01:55 | 显示全部楼层
很好的一个Dadgad添加李的代码,以预先对齐的文本要求将是非常强大的。在放置多行文字时,除了标准9和第1行的中间,可能值得考虑一些选项。再加上一些更像底线的东西。需要一些时间来试一试。思考Grrr的矩阵dcl。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-5 16:16:54 | 显示全部楼层
时间
 
[code](defun c:演示(/\u theAngle ent\u str ent\u line M&L Topoint MT\u data ang prop);;pBe 2018年2月;;CADTutor;;[color=“blue”](defun _theAngle(en/param pts)(setq param(vlax curve getParamAtPoint(Car en)(vlax curve getclosestpointto(Car en)(trans(cadr en)1 0));_vlax曲线终点(getclosestpointto);_vlax曲线终点(getParamAtPoint);_setq结束(setq pts(mapcar’(λ(p)(trans(vlax curve getPointAtParam(Car en)p)1 0));_lambda结束(list(fix param)(1+(fix param)));_地图车结束);_setq结束(角度(car pts)(cadr pts))[/颜色];_defun结束(while(and(setq ent\u str(Car(entsel“\nSelect Mtext”)))(setq ent\u line(entsel“\nSelect LWPolyline/line”))(setq M&L(mapcar‘vlax ename->vla object(list ent\u str(Car ent\u line));\u地图车结束);_setq(vl every)(lambda(o p)(wcmatch(vla get objectname o)p));_λM&L的末尾(“AcDbMText”“AcDbLine,AcDbPolyline”);_vl结束每);_结束和(progn(setq Topoint(vlax curve GetClosestPoint to(car ent_线)(cadr ent_线));_vlax曲线终点(getclosestpointto);_setq结束(setq M&L(Car M&L)MT_数据(mapcar’(λ(p)(vlax get M&L p));_λ的末尾(“AttachmentPoint”“Height”“LineSpacingDistance”);_地图车结束);_setq结束(setq ang([color=“blue”]\u theAngleent\u line))(Foreach prop’(“Rotation”“AttachmentPoint”“InsertionPoint”)(应用“vlax put(vl list*M&L)(Assoc prop(list(“Rotation”)(setq ang(if(and(>ang(/pi 2))(
回复

使用道具 举报

32

主题

131

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
160
发表于 2022-7-5 16:26:29 | 显示全部楼层
非常感谢pBE,它的工作就像一个魅力真棒的工作。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-5 16:31:52 | 显示全部楼层
 
欢迎光临amb2301。享受编码的乐趣。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 21:05 , Processed in 0.561260 second(s), 66 queries .

© 2020-2025 乐筑天下

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