В продолжение “почти прокси”

В продолжение темы "Почти прокси-объекты в AutoCAD" решил написать и этот пост. Предупреждаю сразу: все, что ниже, касается только AutoCAD, вертикальные решения не затрагиваю.

Широко известные (и достаточно часто используемые) ExpressTools могут создавать собственные типы объектов в AutoCAD. Попробую собрать здесь список соответствия arx-файлов и обрабатываемых ими объектов.

ARX Команда ExpressTools
ctextapp.arx _arctext : текст по дуге
acismobjXX.dbx
acismui.arx
acismui.crx
_wipeout : маскировка. По крайней мере именно эти arx были загружены в AutoCAD после команды _.wipeout. Под символами XX подразумевается главная версия AutoCAD:

AutoCAD 2007-2009 17
AutoCAD 2010-2012 18
AutoCAD 2013-2014 19

Добавлено: В AutoCAD 2009 дополнительно загружается файл acwipeoutobj17.dbx. В AutoCAD 2013-2014 аналогичный .dbx уже не обнаружен.

rtext.arx" _rtext

P.S. По мере возможности и необходимости буду пополнять и править список, если это кому-то надо ;)



Комментарии

Есть 5 коммент. к “В продолжение “почти прокси””
  1. Георгий пишет:

    Алексей, в блоке, что справа "Форум dwg.ru" все ссылки отображаются со знаками вопроса.

  2. Кулик Алексей aka kpblc пишет:

    Я видел, но сейчас нет времени разбираться.

  3. Кулик Алексей aka kpblc пишет:

    Пока плюнул разбираться, rss снес

  4. Кулик Алексей aka kpblc пишет:

    В продолжение...
    Задумал я тут внимательнее посмотреть, где и как хранятся модули, отвечающие за маскировку. Нарисовал код

    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
    (vl-load-com)

    (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

    И в результате получил:

    Версия AutoCAD Результат выполнения (get-wipeout-loader)
    2009
    1
    2
    3
    4
    5
    6
    '(("HKEY_LOCAL_MACHINE"
       ("AcWipeoutUI" . "C:\\Program Files\\AutoCAD Architecture 2009\\AcWipeout.arx")
       ("WipeOut" . "AcWipeoutObj17.dbx")
       )
      ("HKEY_CURRENT_USER")
      )
    2013
    1
    2
    3
    '(("HKEY_LOCAL_MACHINE" ("WipeOut" . "acismobj19.dbx"))
      ("HKEY_CURRENT_USER")
      )
    2014
    1
    2
    3
    '(("HKEY_LOCAL_MACHINE" ("WipeOut" . "acismobj19.dbx"))
      ("HKEY_CURRENT_USER")
      )
    2015
    1
    2
    3
    '(("HKEY_LOCAL_MACHINE" ("WipeOut" . "acismobj20.dbx"))
      ("HKEY_CURRENT_USER")
     )

    Получается, что можно аналогичным образом получить каждый dbx/arx и его загружать, что ли?

  5. Кулик Алексей aka kpblc пишет:

    Благодаря сообщению VVA выяснилось, что (цитирую):
    "Начиная с 2013 версии вместо acwipeout.arx нужно грузить acismui.arx "

Поделитесь своим мнением


Я не робот.