ObjectID, 32- и 64-разрядные AutoCAD’ы и AutoCAD 2015

В достаточно старой статье был показан метод получения указателя на объект по его ID. И все работало - пока я не запустил код на ACAD2015x64

Как выяснилось, ACAD2015 (даже 64-разрядный) "не знает" метода ObjectIDToObject32. Поэтому для универсальности кода пришлось поступить таким образом (заодно немного увеличил быстродействие кода):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
(defun _kpblc-objectidtoobject (obj id)
                               ;|
*    получение объекта по его ID
*    параметры вызова:
  obj    указатель на объект документа
  id    значение ID получаемого объекта
|;

  (if (and (> (vl-string-search "x64" (getvar "platform")) 0)
           (vlax-method-applicable-p obj 'objectidtoobject32)
           ) ;_ end of and
    (vla-objectidtoobject32 obj id)
    (vla-objectidtoobject obj id)
    ) ;_ end of if
  ) ;_ end of defun

Размещено в AutoCAD, Код LISP, Новости, Функции LISP · Метки: ,



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


Я не робот.