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


Хранение информации с реакторами - часть 2


(list pline polyPoints)

Для добавления в программу кода для сохранения точек периметра полилинии

  1. Измените функцию gp:drawOutline. Изменения показаны полужирным шрифтом (не пропустите описание локальной переменной polyPoints в выражении defun):
  2. (defun gp:drawOutline (BoundaryData / PathAngle

    Width HalfWidth StartPt PathLength

    angm90 angp90 p1 p2

    p3 p4 poly2Dpoints

    poly3Dpoints plineStyle pline

    polyPoints

    )

    ;; extract the values from the list BoundaryData.

    (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)))

    ;; Add polyline to the model space using ActiveX automation.

    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 a regular polyline.

    (vla-addPolyline

    *ModelSpace*

    (gp:list->variantArray poly3Dpoints)

    ;data conversion

    ) ;_ end of vla-addPolyline

    ) ;_ end of if

    polyPoints (список

    (cons 12 p1)

    (cons 13 p2)

    (cons 14 p3)

    (cons 15 p4)

    )

    ) ;_ end of setq

    (vla-put-closed pline T)

    (list pline polyPoints)

    ) ;_ end of defun

  3. Измените функцию C:GPath (файл gpmain.lsp). Найдите строку кода, которая сейчас выглядит так:
  4. (setq PolylineName (gp:drawOutline gp_PathData))

    Измените ее следующим образом:

    (setq PolylineList (gp:drawOutline gp_PathData)

    PolylineName (car PolylineList)

    gp_pathData (append gp_pathData (cadr PolylineList))

    ) ;_ end of setq

    Переменная gp_PathData теперь содержит всю необходимую для функции реактора информацию.

  5. Добавьте PolylineList в раздел описаний локальных переменных функции C:GPath.

 




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



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