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


Построение рядов плиток


Создание плиток

 

Создание плиток  

Построение рядов плиток

Попробуем разобраться со следующей функцией. Для этого сравним ее с описанным алгоритмом и найдем упомянутые выше геометрические величины. Здесь может встретиться несколько новых функций AutoLISP. Подробнее об этих функциях см. электронный документ AutoLISP Reference. Теперь ознакомимся с кодом (но пока не надо добавлять его в файл).

(defun gp:Calculate-and-Draw-Tiles (BoundaryData / PathLength

TileSpace TileRadius SpaceFilled SpaceToFill

RowSpacing offsetFromCenter

rowStartPoint pathWidth pathAngle

ObjectCreationStyle TileList)

(setq PathLength (cdr (assoc 41 BoundaryData))

TileSpace (cdr (assoc 43 BoundaryData))

TileRadius (cdr (assoc 42 BoundaryData))

SpaceToFill (- PathLength TileRadius)

RowSpacing (* (+ TileSpace (* TileRadius 2.0))

(sin (Degrees->Radians 60))

) ;_ end of *

SpaceFilled RowSpacing

offsetFromCenter 0.0

offsetDistance (/ (+ (* TileRadius 2.0) TileSpace) 2.0)

rowStartPoint (cdr (assoc 10 BoundaryData))

pathWidth (cdr (assoc 40 BoundaryData))

pathAngle (cdr (assoc 50 BoundaryData))

ObjectCreationStyle (strcase (cdr (assoc 3 BoundaryData)))

) ;_ end of setq

;; Compensate for the first call to gp:calculate-Draw-tile Row

;; in the loop below.

(setq rowStartPoint

(polar rowStartPoint

(+ pathAngle pi)

(/ TileRadius 2.0)

) ;_ end of polar

) ;_ end of setq

;; Draw each row of tiles.

(while (<= SpaceFilled SpaceToFill)

;; Get the list of tiles created, adding them to our list.

(setq tileList (append tileList

(gp:calculate-Draw-TileRow

(setq rowStartPoint

(polar rowStartPoint

pathAngle

RowSpacing

) ;_ end of polar

) ;_ end of setq

TileRadius

TileSpace

pathWidth

pathAngle

offsetFromCenter

ObjectCreationStyle

) ;_ end of gp:calculate-Draw-TileRow

) ;_ end of append

;; Calculate the distance along the path for the next row.

SpaceFilled (+ SpaceFilled RowSpacing)

;; Alternate between a zero and a positive offset

;; (causes alternate rows to be indented).




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



Книжный магазин