Здравствуйте!
У меня не получилось напрямую передать vla-объект в лисп-функцию. Это логично - объект такого типа не имеет аналога в DXF. Как тогда можно обойти эту проблему?
Я рассматривал вариант передачи Handle или ObjectID объекта. Но чтобы потом получить ObjectId, надо иметь ссылку на базу данных, из которой получен объект. Каким образом передавать данные о БД? У неё, вроде как, нет какого-то уникального идентификатора. Пока что-то ничего придумать не могу. Может быть, у вас есть идеи на этот счёт?
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Runtime;
namespace ActiveXToDotNet
{
public class LispFunctions
{
[LispFunction("ActiveXToDotNet")]
public static void ActiveXToDotNetFunc(ResultBuffer rb)
{
}
}
}
(setq vla-obj (vlax-ename->vla-object (car (entsel "\nSelect object:"))))
;; (ActiveXToDotNet vla-obj) <- так не работает
(ActiveXToDotNet (vla-get-Handle vla-obj)) ;; Это работает, но что потом с этим хендлом делать в .NET?