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


Изучение кода - часть 2


);_ end of while

;; Return the list of tiles.

tileList

) ;_ end of defun

Этот AutoLISP-код реализует описанный выше словесный алгоритм и имеет следующие дополнения:

(setq ObjectCreationFunction

(cond

((equal ObjectCreationStyle "ACTIVEX")

gp:Create_activeX_Circle

)

((equal ObjectCreationStyle "ENTMAKE")

gp:Create_entmake_Circle

)

((equal ObjectCreationStyle "COMMAND")

gp:Create_command_Circle

)

(T

(alert

(strcat

"ObjectCreationStyle in function gp:calculate-Draw-TileRow"

"\nis invalid. Contact the developer for assistance."

"\n ObjectCreationStyle set to ACTIVEX"

) ;_ end of strcat

) ;_ end of alert

(setq ObjectCreationStyle "ACTIVEX")

)

) ;_ end of cond

) ;_ end of setq

Вспомним, что плитки (круги) можно строить одним из трех способов: с помощью функций ActiveX, функции entmake и функции command. Переменной ObjectCreationFunction присваивается одна из этих трех функций, в зависимости от параметра ObjectCreationStyle (передаваемого из C:GPath через gp:Calculate-and-Draw-Tiles). Ниже приводятся три функции, как они должны выглядеть в файле gpdraw.lsp:

(defun gp:Create_activeX_Circle (center radius)

(vla-addCircle *ModelSpace*

(vlax-3d-point center) ; convert to ActiveX-compatible 3D point

радиус

)

) ;_ end of defun

(defun gp:Create_entmake_Circle(center radius)

(entmake

(list (cons 0 "CIRCLE") (cons 10 center) (cons 40 radius))

)

(vlax-ename->vla-object (entlast))

)

(defun gp:Create_command_Circle(center radius)

(command "_CIRCLE" center radius)

(vlax-ename->vla-object (entlast))

)

Первая функция строит круг с помощью функции ActiveX и возвращает объект ActiveX.

Вторая функция строит круг с помощью функции entmake. Она возвращает имя объекта, преобразованное в объект ActiveX.

Третья функция строит круг с помощью функции command. Она также возвращает имя объекта, преобразованное в объект ActiveX.

 




Начало  Назад  Вперед