Chào các anh!
Em có cái lisp dãn text, có lẽ tải trên CV, hay dùng dãn text trên trắc ngang.
Với CAD 2025 trở về trước thì dùng bình thường, mà CAD 2026 lại báo lỗi:
error: no function definition: ACET-SS-TO-LIST
Nhờ các anh xem và chỉnh sửa giúp em ạ.
Cảm ơn các anh nhiều!
(vl-load-com)
(defun c:DAT (/ kcach1 lt0 lt lt1 slv n0 ll k n) (PROMPT"\nSelect texts ")
(defun tach(l / n l1 l2)
(setq n 0 l2 nil)
(repeat (1- (length l))
(if (not l1) (setq l1 (list (nth n l))))
(if (< (width (acet-geom-ss-extents (acet-list-to-ss
(mapcar 'cadr (append l1 (list (nth (setq n (1+ n)) l) )))) nil)) (* kcach (1+ (length l1))))
(setq l1 (append l1 (list (nth n l))))
(progn (if (> (length l1) 1) (setq l2 (append l2 (list l1)))) (setq l1 nil))
)
)
(if (> (length l1) 1) (setq l2 (append l2 (list l1))))
l2
)
(defun width(l) (distance (car l) (list (caadr l) (cadar l) )))
(defun doi(b kc)
(vla-put-TextAlignmentPoint (vlax-ename->vla-object b)
(vlax-3d-point (polar ll 0 kc))))
(defun getIP(v)
(vlax-safearray->list (vlax-variant-value
(vla-get-TextAlignmentPoint (vlax-ename->vla-object v))))
)
;;======;;
(vl-load-com)
(setvar 'dimzin 8)
(setq kcach1 3)
(if kcach1 (setq kcach kcach1))
(prompt "\nSelect texts")
(setq lt0 (vl-remove-if-not '(lambda(x) (equal (* 0.5 pi)
(vla-get-rotation (vlax-ename->vla-object x )) 0.001))
(acet-ss-to-list (ssget '((0 . "text")))))
)
(acet-tjust (setq ss (acet-list-to-ss lt0)) (acet-tjust-keyword (entget (ssname ss 0))))
(command "undo" "be")
(repeat 2
(setq lt (vl-sort (mapcar '(lambda(x) (list (getIP x) x)) lt0)
'(lambda (x y) (>= (cadar x) (cadar y)))))
(while lt
(setq lt1 (vl-sort (vl-remove-if-not '(lambda(x) (equal (cadar x) (cadar (car lt)) kcach)) lt)
'(lambda (x y) (< (caar x) (caar y))))
lt (vl-remove-if '(lambda(x) (equal (cadar x) (cadar (car lt)) kcach)) lt)
lt1 (tach lt1))
(foreach lv lt1
(setq slv (mapcar 'cadr lv)
n0 (fix (* 0.5 (length slv)))
ll (getIP (nth n0 slv))
k 0)
(while (>= (setq n (- n0 (setq k (1+ k)))) 0)
(doi (nth n slv) (* k (- kcach))))
(setq k 0)
(while (< (setq n (+ n0 (setq k (1+ k)))) (length slv))
(doi (nth n slv) (* k kcach)))
)
)
)
(command "undo" "e")
(princ)
)