求助:尺寸標註線 尾端切齊
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
求助:尺寸標註線 尾端切齊
像我們在畫線段時可以用trim把線切齊,但是在標註尺寸時抓點位置不同一直線時會出現尺寸標註線尾端參差不齊,我看過有外掛可以一刀切齊,請問諸位先進,不曉的有什麼方式能更方便做到,謝謝。
hueigo- 初級會員
- 文章總數 : 94
年齡 : 60
來自 : 台中
職業 : 建築設計師
愛好 : 圍棋
個性 : 平實
使用年資 : 15
使用版本 : 2013
積分 : 4
經驗值 : 4996
威望值 : 121
注冊日期 : 2012-10-01
找到解決方案了
hueigo 寫到:像我們在畫線段時可以用trim把線切齊,但是在標註尺寸時抓點位置不同一直線時會出現尺寸標註線尾端參差不齊,我看過有外掛可以一刀切齊,請問諸位先進,不曉的有什麼方式能更方便做到,謝謝。
上網查到了,寫一個LISP如下:
(defun c:TDE ( / new_pt x y n js ent_dim dxf_ent p1 p2 alpha p13 p14)
(initget 1)
(setq new_pt (trans (getpoint "\n新的尺寸端點位置: ") 1 0) x (car new_pt) y (cadr new_pt) n -1)
(princ "\n選取尺寸元件: ")
(while (null (setq js (ssget '((0 . "DIMENSION"))))))
(repeat (sslength js)
(setq ent_dim (ssname js (setq n (1+ n))))
(setq dxf_ent (entget ent_dim))
(cond
((or (zerop (rem (cdr (assoc 70 dxf_ent)) 32)) (eq (rem (cdr (assoc 70 dxf_ent)) 32) 1))
(setq p1 (cdr (assoc 13 dxf_ent)) p2 (cdr (assoc 14 dxf_ent)))
(cond
((or (eq (car p1) (car p2)) (and (zerop (rem (cdr (assoc 70 dxf_ent)) 32)) (zerop (rem (angle p2 (cdr (assoc 10 dxf_ent))) pi))))
(setq dxf_ent (subst (cons 13 (list x (cadr p1) (caddr p1))) (assoc 13 dxf_ent) dxf_ent))
(setq dxf_ent (subst (cons 14 (list x (cadr p2) (caddr p2))) (assoc 14 dxf_ent) dxf_ent))
)
((or (eq (cadr p1) (cadr p2)) (and (zerop (rem (cdr (assoc 70 dxf_ent)) 32)) (zerop (rem (angle p2 (cdr (assoc 10 dxf_ent))) (/ pi 2)))))
(setq dxf_ent (subst (cons 13 (list (car p1) y (caddr p1))) (assoc 13 dxf_ent) dxf_ent))
(setq dxf_ent (subst (cons 14 (list (car p2) y (caddr p2))) (assoc 14 dxf_ent) dxf_ent))
)
(T
(if (member '(100 . "AcDbRotatedDimension") dxf_ent)
(setq alpha (cdr (assoc 50 dxf_ent)))
(setq alpha (angle (list (car p1) (cadr p1)) (list (car p2) (cadr p2))))
)
(setq p13
(inters
(list x y)
(polar (list x y) alpha (cdr (assoc 42 dxf_ent)))
(list (car p1) (cadr p1))
(polar (list (car p1) (cadr p1)) (+ alpha (/ pi 2)) (cdr (assoc 42 dxf_ent)))
nil
)
)
(setq p14
(inters
(list x y)
(polar (list x y) alpha (cdr (assoc 42 dxf_ent)))
(list (car p2) (cadr p2))
(polar (list (car p2) (cadr p2)) (+ alpha (/ pi 2)) (cdr (assoc 42 dxf_ent)))
nil
)
)
(if (and p13 p14)
(setq
dxf_ent (subst (cons 13 (list (car p13) (cadr p13) (caddr p1))) (assoc 13 dxf_ent) dxf_ent)
dxf_ent (subst (cons 14 (list (car p14) (cadr p14) (caddr p2))) (assoc 14 dxf_ent) dxf_ent)
)
(princ "\nCan't redefine point, the new point haven't same Z")
)
)
)
(entmod dxf_ent)
)
(T
(princ "\nIsn't a dim aligned, rotated horizontal or vertical.")
)
)
)
(prin1)
)
hueigo- 初級會員
- 文章總數 : 94
年齡 : 60
來自 : 台中
職業 : 建築設計師
愛好 : 圍棋
個性 : 平實
使用年資 : 15
使用版本 : 2013
積分 : 4
經驗值 : 4996
威望值 : 121
注冊日期 : 2012-10-01
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章