-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathattr2Text.lsp
88 lines (75 loc) · 2.12 KB
/
attr2Text.lsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
; Credit: https://www.cadtutor.net/forum/topic/62651-convert-quotattributes-valuequot-to-text/
; Converts attributes (attr. definitions, tags) to plain texts
(defun attr2TextConvert (ss silentChk / acDoc ssNew ssl i eNameSrc eNameNew entNew
grp grplst addg
)
(if ss
(progn
(vl-load-com)
(princ "\n")
(defun *error* (msg)
(if (not (member msg '("Function cancelled" "quit / exit abort" "函数已取消")))
(princ (strcat "Error: " msg "\n"))
)
(princ)
)
(setq acDoc (vla-get-activedocument (vlax-get-acad-object)))
(vla-startundomark acDoc)
(setq ssl (sslength ss)
i 0
)
(setq grplst (list 7 8 10 11 39 40 41 50 51 62 71 72 73))
(setq ssNew (ssadd))
(while (< i ssl)
(setq eNameSrc (ssname ss i))
(setq entSrc (entget eNameSrc))
(setq entNew '((0 . "TEXT")))
(setq entNew (append entNew (list (cons 1 (cdr (assoc 2 entSrc))))))
(foreach grp grplst
(setq addg (assoc grp entSrc))
(if (/= addg nil)
(setq entNew (append entNew (list (assoc grp entSrc))))
)
)
(if (entmake entNew)
(progn
(setq eNameNew (entlast))
(ssadd eNameNew ssNew)
(vla-put-truecolor
(vlax-ename->vla-object eNameNew)
(vla-get-truecolor
(vlax-ename->vla-object eNameSrc)
)
)
(entdel eNameSrc)
)
)
(setq i (1+ i))
)
(vla-endundomark acDoc)
(if (null silentChk)
(if (> ssl 1)
(progn (princ (strcat (rtos ssl 2 0) "个属性定义已被转换\n"))
(sssetfirst nil ssNew)
)
(princ "无属性定义可以转换\n")
)
)
)
)
ssNew
)
(defun C:attr2Text ()
(attr2TextConvert
(setq ss (ssget "_:L" '((0 . "ATTDEF"))))
nil
)
(princ)
)
(defun C:attr2TextAll ()
(attr2TextConvert
(setq ss (ssget "_X" '((0 . "ATTDEF"))))
nil
)
(princ)
)