1. (defun C:DTBox(/ b bname diment ent enx h i j l lst n o r ss w)
    2. (if (setq i -1 ss (ssget '((0 . "DIMENSION"))))
    3. (while (setq diment (ssname ss (setq i (1+ i))))
    4. (setq bname (cdr (assoc 2 (entget diment))))
    5. (setq ent (tblobjname "Block" bname))
    6. (while ent
    7. (setq enx (entget ent))
    8. (if (equal (assoc 0 enx) '(0 . "MTEXT"))
    9. (setq ent nil)
    10. (setq ent (entnext ent))
    11. )
    12. )
    13. (setq
    14. n (cdr (assoc 210 enx))
    15. b (trans (cdr (assoc 10 enx)) 0 n)
    16. r (angle '(0.0 0.0 0.0) (trans (cdr (assoc 11 enx)) 0 n))
    17. w (cdr (assoc 42 enx))
    18. h (cdr (assoc 43 enx))
    19. j (cdr (assoc 71 enx))
    20. o (list
    21. (cond
    22. ((member j '(2 5 8)) (/ w -2.0))
    23. ((member j '(3 6 9)) (- w))
    24. (0.0)
    25. )
    26. (cond
    27. ((member j '(1 2 3)) (- h))
    28. ((member j '(4 5 6)) (/ h -2.0))
    29. (0.0)
    30. )
    31. )
    32. l ((lambda (m)
    33. (mapcar '(lambda (p) (mapcar '+ (mapcar '(lambda (r) (apply '+ (mapcar '* r p))) m) b))
    34. (list
    35. (list (car o) (cadr o))
    36. (list (+ (car o) w) (cadr o))
    37. (list (+ (car o) w) (+ (cadr o) h))
    38. (list (car o) (+ (cadr o) h))
    39. )
    40. )
    41. )
    42. (list
    43. (list (cos r) (sin (- r)) 0.0)
    44. (list (sin r) (cos r) 0.0)
    45. '(0.0 0.0 1.0)
    46. )
    47. )
    48. lst (mapcar '(lambda (x) (trans x n 0)) l)
    49. )
    50. (entmake (append (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") (cons 90 (length lst)) (cons 70 1)) (mapcar '(lambda(pt) (cons 10 pt)) lst)))
    51. )
    52. )
    53. (prin1)
    54. )
    55. (defun c:fk(/ flg i s ss vs)
    56. (princ "\n【添加或删除尺寸的方框】")
    57. (setq i (getvar "dimscale"))
    58. (setvar "regenmode" 1)
    59. (setvar "cmdecho" 0)
    60. (while (setq s (entsel))
    61. (setq s (car s))
    62. (if (= "DIMENSION" (cdr (assoc '0 (setq ss (entget s)))))
    63. (progn
    64. (setq vs (vlax-ename->vla-object s))
    65. (setq flg (vla-get-TextGap vs))
    66. (if (< flg 0)
    67. (vla-put-TextGap vs (abs flg))
    68. (vla-put-TextGap vs (- 0 flg))
    69. )
    70. )
    71. )
    72. )
    73. (princ)
    74. )