Группы пользователей Autodesk

         

Вызов функций ActiveX из функции gp:drawOutline


Построение границы дорожки

 

Построение границы дорожки 
 

Вызов функций ActiveX из функции gp:drawOutline



Функция gp:drawOutline обращается к ActiveX для отображения полилинии границ дорожки в AutoCAD. Следующий фрагмент кода использует ActiveX для создания границы:

;; Добавление полинии к пространству модели автоматически с использованием ActiveX.

(setq pline (vla-addLightweightPolyline

*ModelSpace*; Global Definition for Model Space

VLADataPts; vertices of path boundary

) ;_ end of vla-addLightweightPolyline

) ;_ end of setq

(vla-put-closed pline T)

Что означает этот фрагмент кода? Ценным источником информации для его понимания служит электронный документ ActiveX and VBA Reference. В нем описываются методы и свойства, доступные клиентам ActiveX, каковым и является наше приложение, строящее парковую дорожку. В разделе "Working with ActiveX" документа AutoLISP Developer’s Guide описывается, как переводить синтаксис VBA™, изложенный в документе ActiveX and VBA Reference, в вызовы ActiveX из AutoLISP.

На текущем этапе начальное представление о работе этого фрагмента программы можно получить, внимательно изучив в нем структуру двух вызовов функций vla-. Имена всех функций AutoLISP ActiveX, работающих с объектами AutoCAD, начинаются с vla-. Например, если метод ActiveX имеет имя addLightweightPolyline, то vla-addLightweightPolyline это функция, обращающаяся к этому методу. Вызов vla-put-closed служит для обновления свойства замкнутости объекта pline (плиния), нарисованного с помощью vla-addLightweightPolyline.

Имеется несколько стандартных правил, которым подчиняются вызовы ActiveX из AutoLISP:

  • Первым аргументом вызовов методов vla-put, vla-get, и vla- является изменяемый или искомый объект, например, *ModelSpace* в первом вызове или pline во втором.
  • Вызов метода vla- возвращает VLA-объект, который может быть использован для последующих вызовов. Например, vla-addLightweightPolyline выдает объект pline (плинию), который модифицируется следующим вызовом ActiveX.
  • Объектная модель ActiveX имеет иерархическую структуру. Объекты обрабатываются, начиная от самого верхнего уровня приложения до отдельных графических объектов — например, полилиний и кругов. Таким образом, на данном этапе разработка функции gp:drawOutline еще не закончена, так как доступ к ActiveX-объекту *ModelSpace* должен осуществляться только через главный объект приложение.
  •  



    Содержание раздела