kenken 发表于 2020-2-28 20:35:40

快速沿标注线移动标注文字,水平,倾斜

本帖最后由 kenken 于 2020-2-28 20:40 编辑

如题,本论坛的一段代码,非常好用

但是,我想实现在 (setq pt (trans (getpoint (cadr en) "\n新位置:") 1 0)) 这段功能变成,类似月offset的功能,即 测量值 和 输入值,偏移方向用鼠标点选,同时输入值能保存,下次直接使用,不需要重复输入。另外移动的基点,我想是文字的中心点。



(defun c:tttt( / att attpar p10 p11 p14 dxf70 pt dx dy)
      (defun cz(p1 p2 p3)(inters p1 p2 p3 (polar p3 (+ (angle p1 p2) (/ pi 2)) 5) nil))
      (defun npoint(pbase sx sy)
      (setq ex (+ (car pbase) sx))
      (setq ey (+ (cadr pbase) sy))
      (list ex ey 0))
      (setq att (car (setq en (entsel "\n选择标注:"))))

      (setq pt (trans (getpoint (cadr en) "\n新位置:") 1 0))

      (setq attpar (entget att))
      (setq p10 (cdr (assoc 10 attpar)))
      (setq p11 (cdr (assoc 11 attpar)))
      (setq p14 (cdr (assoc 14 attpar)))
      (setq p14 (polar p10 (+ (angle p10 p14) (/ pi 2)) 5))
      (setq dxf70 (cdr (assoc 70 attpar)))
      (if (< dxf70 128)
            (progn      (entmod (subst (cons 70 (+ dxf70 128)) (assoc 70 attpar) attpar))
                (setq attpar (entget att))
                (setq pp10 (cdr (assoc 10 attpar)))
                (setq pp11 (cdr (assoc 11 attpar)))
                (setq dx (- (car p10) (car pp10)) dy (- (cadr p10) (cadr pp10)))
            )
            (setq dx 0 dy 0 pp11 p11)
      )
      (setq p10 (cz p10 p14 pt) pp10 (cz p10 p14 p11))
      (setq dx (+ dx (- (car p10) (car pp10))) dy (+ dy (- (cadr p10) (cadr pp10))))
      (entmod (subst (cons 11 (npoint pp11 dx dy)) (assoc 11 attpar) attpar))
)



1993063 发表于 2020-5-8 09:00:58

(defun C:DTE (/ e)
(while (setq e (car (entsel "\n标注")))
    (vla-put-TextMovement (Vlax-Ename->Vla-Object e) 0)
    (Command "_.DIMTEDIT" e pause)
)
(princ)
)
页: [1]
查看完整版本: 快速沿标注线移动标注文字,水平,倾斜