轻微测试,仅在行下方拾取文本点
- (defun c:cc (/ ang c center ent la lb obj obj2 p1 p2 p3 p4 p5 pp r rot)
- (vl-load-com)
- (if (setq ent (entsel "\nSelecione o ARCO: "))
- (progn
- (setq obj (vlax-ename->vla-object (car ent)))
- (setq r (vla-get-radius obj)
- la (vla-get-arclength obj)
- c (vla-get-center obj)
- )
- (setq center (vlax-safearray->list
- (vlax-variant-value c)))
- )
- )
- (setq p1 (getpoint "\nSelecione ponto de insercao para o texto: "))
- (setq lb (entsel "\nSelecione Linha de alinhamento de texto: "))
- (setq obj2 (vlax-ename->vla-object (car lb)))
- (setq pp (vlax-curve-getclosestpointto obj2 p1))
- (setq ang (angle p1 pp)
- rot (+ ang (/ pi 2))
- ang (+ pi ang)
- )
- (if (and (> rot (* 0.5 pi))
- (< rot (* 1.5 pi))
- )
- (setq rot (+ rot pi))
- )
- (setq p2 (polar p1 ang 2.5))
- (setq p3 (polar p2 ang 2.5))
- (setq p4 (polar p3 ang 2.5))
- (setq p5 (polar p4 ang 2.5))
- ;;set all text alignment to left:
- (entmake
- (list
- (cons 0 "TEXT")
- (cons 1 "CC")
- (cons 71 0)
- (cons 72 0)
- (cons 73 0)
- (cons 50 rot)
- (cons 40 2.0)
- (cons 10 p1)
- (cons 11 (list 0 0 0))
- )
- )
- (entmake
- (list
- (cons 0 "TEXT")
- (cons 1 (strcat "N= " (rtos (car center) 2 3)))
- (cons 71 0)
- (cons 72 0)
- (cons 73 0)
- (cons 40 2.0)
- (cons 50 rot)
- (cons 10 p2)
- (cons 11 (list 0 0 0)))
- )
- (entmake
- (list
- (cons 0 "TEXT")
- (cons 1 (strcat "E= " (rtos (cadr center) 2 3)))
- (cons 71 0)
- (cons 72 0)
- (cons 73 0)
- (cons 40 2.0)
- (cons 50 rot)
- (cons 10 p3)
- (cons 11 (list 0 0 0)))
- )
- (entmake
- (list
- (cons 0 "TEXT")
- (cons 1 (strcat "R= " (rtos r)))
- (cons 71 0)
- (cons 72 0)
- (cons 73 0)
- (cons 40 2.0)
- (cons 50 rot)
- (cons 10 p4)
- (cons 11 (list 0 0 0)))
- )
- (entmake
- (list
- (cons 0 "TEXT")
- (cons 1 (strcat "D= " (rtos la 2 3)))
- (cons 71 0)
- (cons 72 0)
- (cons 73 0)
- (cons 40 2.0)
- (cons 50 rot)
- (cons 10 p5)
- (cons 11 (list 0 0 0)))
- )
- (princ)
- )
HTH公司
~'J'~ |