帮助我对齐文本
嗨,朋友们,我需要文本自动对齐到线条角度,如所示
随附样本1。dwg、文本1应始终位于行的顶部,其余(文本2、文本3等)均应位于该行的下方。请帮帮我。
提前谢谢。
样本1。图纸 答案并不完全正确,但看看大量的多行文字
应用(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
多行文字或文字具有高度,左上角为已知间距
接下来读取字符串并获得第一行的字符数,这样就可以计算出一个新的插入点
放置多行文字并旋转
; this can be done in a couple of ways is step 1.
; done purposely as pick two points not a line
(defun C:T2pts ( / pt1 pt2 ang tobj vlobj)
(SETQ PT1 (GETPOINT "\nPick 1st pt" ))
(SETQ PT2 (GETPOINT "\nPick 2nd pt" ))
(setq ang (angle pt1 pt2))
(SETQ TOBJ (ENTSEL "\nPick Text"))
(setq vlobj (vlax-ename->vla-object (car tobj)))
(vlax-put-property vlobj "Rotation" ang)
)
(C:T2pts)
step 2 have to have a think about that.
也许研究李的方法会对你的目标有更多的帮助。
http://www.lee-mac.com/dtcurve.html
谢谢李! 很好的一个Dadgad添加李的代码,以预先对齐的文本要求将是非常强大的。在放置多行文字时,除了标准9和第1行的中间,可能值得考虑一些选项。再加上一些更像底线的东西。需要一些时间来试一试。思考Grrr的矩阵dcl。 时间
(defun c:演示(/\u theAngle ent\u str ent\u line M&L Topoint MT\u data ang prop);;pBe 2018年2月;;CADTutor;;(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(\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))( 非常感谢pBE,它的工作就像一个魅力真棒的工作。
欢迎光临amb2301。享受编码的乐趣。
页:
[1]