如何在cad中排序?
你好如您所见(附)在代码(层“C-Road-Ctn-Title”)下,一个区域(层“Area Block”)是我想要的一个订单,以保持这些数字的组合。
样本文件(附件)
我该怎么做?
样本2.dwg 单独选择每列。
(defun c:Txtorder (/ ss i sn e l lst pts)
(vl-load-com)
(if (setq ss (ssget "_:L" '((0 . "*TEXT"))))
(progn (repeat (setq i (sslength ss))
(vla-put-alignment (vlax-ename->vla-object (setq sn (ssname ss (setq i (1- i))))) acAlignmentLeft)
(if (numberp (read (cdr (assoc 1 (setq e (entget sn))))))
(setq l (cons (list (cdr (assoc 1 e)) (cdr (assoc 10 e)) sn) l))
)
)
(setq lst (vl-sort l '(lambda (q p) (< (atof (car q)) (atof (car p))))))
(setq pts (vl-sort l '(lambda (q p) (> (cadr (cadr q)) (cadr (cadr p))))))
(repeat (length lst)
(entupd
(cdr
(assoc -1
(entmod (subst (cons 10 (cadr (car pts))) (cons 10 (cadr (car lst))) (entget (caddr (car lst)))))
)
)
)
(setq lst (vl-remove (car lst) lst))
(setq pts (vl-remove (car pts) pts))
)
)
)
(princ "\nWritten by Tharwat Al Shoufi")
(princ)
)
谢谢你的回答,但我不知道为什么我的“区域块”号码变了!!!!!!
我不喜欢我的数字改变;只是排序顺序,它意味着一行一行是“C-Road-Ctn-Title”,下一行是“
区域块“就这样!!
你是说他们的位置只是(垂直的)吗?
是,并将所有文本排序为垂直。 还有一个例程,用于在x轴上垂直排列所选文本。
(defun c:Test (/ x ss i e sn p l)
(vl-load-com)
(if (setqss (ssget '((0 . "TEXT"))))
(progn
(repeat (setq i (sslength ss))
(vla-put-alignment (vlax-ename->vla-object (setq sn (ssname ss (setq i (1- i))))) acAlignmentLeft)
(setq l (cons sn l))
(cond ((not x) (setq x (car (cdr (assoc 10 (setq e (entget sn)))))))
((if (> (setq p (car (cdr (assoc 10 (setq e (entget sn)))))) x)
(setq x p)
)
)
)
)
(foreach ent l
(entupd
(cdr
(assoc -1
(entmod
(subst (cons 10 (list x (cadr (cdr (assoc 10 (entget ent)))))) (assoc 10 (entget ent)) (entget ent))
)
)
)
)
)
)
(princ)
)
(princ "\nWritten by Tharwat Al Shoufi")
(princ)
)
谢谢,再提一个问题;如果可能,增加数字层“C-Road-Ctn-Title”和层“Area block”之间的距离!!?
试试这个。。。
(defun c:Test (/ ss d i e sn lst l p n ent)
(vl-load-com)
(if (and (setq ss (ssget '((0 . "TEXT")))) (setq d (getdist "\n Specify Distance between texts :")))
(progn (repeat (setq i (sslength ss))
(vla-put-alignment (vlax-ename->vla-object (setq sn (ssname ss (setq i (1- i))))) acAlignmentLeft)
(setq e (entget sn))
(setq lst (cons (list sn (cdr (assoc 10 e)) (cdr (assoc 40 e))) lst))
)
(setq l (vl-sort lst '(lambda (a b) (> (cadr (cadr a)) (cadr (cadr b))))))
(setq p (polar (cadr (car l)) (* pi 1.5) (+ (caddr (car l)) d)))
(setq n 0)
(repeat (1- (length l))
(setq ent (nth (setq n (1+ n)) l))
(entupd
(cdr (assoc -1 (entmod (subst (cons 10 p) (assoc 10 (entget (car ent))) (entget (car ent))))))
)
(setq p (polar p (* pi 1.5) (+ (caddr ent) d)))
)
)
(princ)
)
(princ "\nWritten by Tharwat Al Shoufi")
(princ)
)
再次非常感谢;解决了的
随时欢迎你。
页:
[1]