Выбор типа линий для границы дорожки
Создание проекта и добавление элементов интерфейса
|
| ||||
Выбор типа линий для границы дорожки |
| ||||
При построении границы парковой дорожки приложение должно позволять пользователю выбирать между компактной и обычной полилинией. В первой версии функции gp:drawOutline граница всегда представляла собой компактную полилинию. Теперь, когда готово диалоговое окно, можно создать процедуру и для построения обычной полилинии. Для этого функция gp:drawOutline должна перед рисованием границы определять, какой тип полилинии необходимо использовать.
Необходимые изменения функции gp:drawOutline включены в следующий фрагмент кода. Изменения в файле gpdraw.lsp обозначены полужирным шрифтом. (setq PathAngle (cdr (assoc 50 BoundaryData)) Width (cdr (assoc 40 BoundaryData)) HalfWidth (/ Width 2.00) StartPt (cdr (assoc 10 BoundaryData)) PathLength (cdr (assoc 41 BoundaryData)) angp90 (+ PathAngle (Degrees->Radians 90)) angm90 (- PathAngle (Degrees->Radians 90)) p1 (polar StartPt angm90 HalfWidth) p2 (polar p1 PathAngle PathLength) p3 (polar p2 angp90 Width) p4 (polar p3 (+ PathAngle (Degrees->Radians 180)) PathLength) poly2Dpoints (apply 'append (mapcar '3dPoint->2dPoint (list p1 p2 p3 p4)) ) poly3Dpoints (mapcar 'float (append p1 p2 p3 p4)) ;; get the polyline style plineStyle (strcase (cdr (assoc 4 BoundaryData))) ) ;_ end of setq ;; Add polyline to the model space using ActiveX automation (setq pline (if (= plineStyle "LIGHT") ;; create a lightweight polyline (vla-addLightweightPolyline *ModelSpace* ; Global Definition for Model Space (gp:list->variantArray poly2Dpoints) ;data conversion ) ;_ end of vla-addLightweightPolyline ;; or create an old-style polyline (vla-addPolyline *ModelSpace* (gp:list->variantArray poly3Dpoints) ;data conversion ) ;_ end of vla-addPolyline ) ;_ end of if ) ;_ end of setq При вводе кода вручную следует быть очень внимательным, так как здесь приходится не только добавлять код, но также удалять и переставлять строки. Рекомендуется просто скопировать код из электронного учебного пособия и вставить его в файл.
|