В продолжение “почти прокси”
В продолжение темы "Почти прокси-объекты в AutoCAD" решил написать и этот пост. Предупреждаю сразу: все, что ниже, касается только AutoCAD, вертикальные решения не затрагиваю.
Широко известные (и достаточно часто используемые) ExpressTools могут создавать собственные типы объектов в AutoCAD. Попробую собрать здесь список соответствия arx-файлов и обрабатываемых ими объектов.
ARX | Команда ExpressTools | ||||||
ctextapp.arx | _arctext : текст по дуге | ||||||
acismobjXX.dbx acismui.arx acismui.crx |
_wipeout : маскировка. По крайней мере именно эти arx были загружены в AutoCAD после команды _.wipeout. Под символами XX подразумевается главная версия AutoCAD:
Добавлено: В AutoCAD 2009 дополнительно загружается файл acwipeoutobj17.dbx. В AutoCAD 2013-2014 аналогичный .dbx уже не обнаружен. |
||||||
rtext.arx" | _rtext |
P.S. По мере возможности и необходимости буду пополнять и править список, если это кому-то надо
Алексей, в блоке, что справа "Форум dwg.ru" все ссылки отображаются со знаками вопроса.
Я видел, но сейчас нет времени разбираться.
Пока плюнул разбираться, rss снес
В продолжение...
Задумал я тут внимательнее посмотреть, где и как хранятся модули, отвечающие за маскировку. Нарисовал код
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
(defun get-wipeout-loader (/ res key)
(foreach reghive
(setq res '(("HKEY_LOCAL_MACHINE") ("HKEY_CURRENT_USER")))
(foreach item
(cond
((vl-remove-if-not
(function
(lambda (x) (wcmatch (strcase x) "*WIPEOUT*"))
)
(vl-registry-descendents
(strcat (car reghive)
"\"
(vlax-product-key)
"\\Applications"
)
nil
)
) ;_ end of vl-remove-if-not
)
(t
(vl-remove-if-not
(function
(lambda (x) (wcmatch (strcase x) "*WIPEOUT*"))
)
(vl-registry-descendents
(strcat
(car reghive)
"\"
(substr (vlax-product-key)
1
(vl-string-search ":" (vlax-product-key))
)
"\\Applications"
) ;_ end of strcat
nil
) ;_ end of vl-registry-descendents
) ;_ end of vl-remove-if-not
)
) ;_ end of vl-remove-if-not
(if (or
(setq key (vl-registry-read
(strcat (car reghive)
"\"
(vlax-product-key)
"\\Applications\"
item
)
"LOADER"
) ;_ end of vl-registry-read
) ;_ end of setq
(setq
key (vl-registry-read
(strcat
(car reghive)
"\"
(substr (vlax-product-key)
1
(vl-string-search ":" (vlax-product-key))
)
"\\Applications\"
item
) ;_ end of strcat
"LOADER"
) ;_ end of vl-registry-read
) ;_ end of setq
) ;_ end of or
(setq res
(subst
(cons
(car reghive)
(cons (cons item key) (cdr (assoc (car reghive) res)))
)
(assoc (car reghive) res)
res
) ;_ end of subst
) ;_ end of setq
) ;_ end of if
) ;_ end of foreach
) ;_ end of foreach
res
) ;_ end of defun
И в результате получил:
2
3
4
5
6
("AcWipeoutUI" . "C:\\Program Files\\AutoCAD Architecture 2009\\AcWipeout.arx")
("WipeOut" . "AcWipeoutObj17.dbx")
)
("HKEY_CURRENT_USER")
)
2
3
("HKEY_CURRENT_USER")
)
2
3
("HKEY_CURRENT_USER")
)
2
3
("HKEY_CURRENT_USER")
)
Получается, что можно аналогичным образом получить каждый dbx/arx и его загружать, что ли?
Благодаря сообщению VVA выяснилось, что (цитирую):
"Начиная с 2013 версии вместо acwipeout.arx нужно грузить acismui.arx "