本帖最后由 kucha007 于 2023-4-15 23:51 编辑
最近可能会用到,就做了点改动。
01-获取首尾端点坐标,判断那个才是右侧端点。
02-文字高度改为GetDist输入。
03-命令编组方便撤回
- (defun C:TT (/ DOC SS i en LayNam StaPt EndPt TgtPt Hight)
- (vl-load-com)
- (setq DOC (vla-get-ActiveDOCument (vlax-get-acad-object)))
- (vla-startundomark DOC)
- (if (setq SS (ssget '((0 . "*POLYLINE,LINE"))))
- (progn
- (initget (+ 1 2 4)) ;非空非零非负值
- (setq Hight (getdist "→请输入或量取文字高度:"))
- (repeat (setq i (sslength SS))
- (setq en (ssname SS (setq i (1- i))))
- (setq LayNam (cdr (assoc 8 (entget en))))
- (setq StaPt (vlax-curve-getstartPoint (vlax-ename->vla-object en))) ; 起点坐标
- (setq EndPt (vlax-curve-getendPoint (vlax-ename->vla-object en))) ; 终点坐标
- (setq TgtPt (if (>= (car StaPt) (car EndPt)) StaPt EndPt))
- (setq TgtPt (mapcar
- '(lambda (x y) (+ x y))
- TgtPt
- (list (* 0.5 Hight) (* -0.3 Hight) 0)
- )
- )
- (entmake
- (list
- '(0 . "TEXT")
- (cons 1 LayNam) ;文字内容
- (cons 8 LayNam) ;图层名称
- (cons 10 TgtPt) ;插入点
- (cons 40 Hight) ;文字高度
- )
- )
- )
- )
- )
- (vla-endundomark DOC)
- (princ)
- )
|