Vlax-Curve 함수

리습 2017. 11. 5. 12:05

Vlisp에 있는 아주 획기적인 방법인데, 

Vlax-Curve 라는 함수가 있는데,

라인류에 대한것은 Lwpolyline,(2D,3D)Polyline,Line,Arc,Ellipse,Circle,Ray 등의

Object(Vlax-Ename->Vla-Object Ename)의 여러가지를 지원해줍니다..

Arx와 아주 흡사한데요..

함수들을 나열하면

Vlax-Curve-GetArea                          ;;; 선의 면적

Vlax-Curve-GetClosestPointTo                ;;; 선상의 가장가까운점 

Vlax-Curve-GetClosestPointToProjection      ;;; 프로젝션별 선상의 가장가까운점 

Vlax-Curve-GetDistAtParam                   ;;; 해당 Parameter 별 거리

Vlax-Curve-GetDistAtPoint                   ;;; 선상점의 거리

Vlax-Curve-GetEndParam                      ;;; 선의 종점의 파라미터

Vlax-Curve-GetEndPoint                      ;;; 선의 종점

Vlax-Curve-GetFirstDeriv                    ;;; 해당 Parameter의 미분 Vector(X Y Z)

Vlax-Curve-GetParamAtDist                   ;;; 선상 거리의 Parameter구하기

Vlax-Curve-GetParamAtPoint                  ;;; 선상 점의 Parameter구하기

Vlax-Curve-GetPointAtDist                   ;;; 선상 거리의 점 구하기

Vlax-Curve-GetPointAtParam                  ;;; 선상 Parameter의 점구하기

Vlax-Curve-GetSecondDeriv                   ;;; 곡선일때 해당 Parameter의 곡선의 원중심까지의 Vector(X Y Z)

Vlax-Curve-GetStartParam                    ;;; 선의 시점의 파라미터

Vlax-Curve-GetStartPoint                    ;;; 선의 시점

Vlax-Curve-IsClosed                         ;;; 선이 페합되었는지 여부(Close여부),시점과 종점이 같은것과 다름

Vlax-Curve-IsPeriodic                       ;;; 선의 시점과 종점이 같은지 여부(Closed포함)

Vlax-Curve-IsPlanar                         ;;; 선이 정점들이 같음 평면상에 존재하는지 여부


여기서 Parameter(파라미터)가 생소한 단어입니다. 저두 알아볼려고 많이 허우적거렸습니다.

파라미터는 Entity별로 다른값을 나타내는데

Lwpolyline,(2D,3D)Polyline,Slpine에서는 선상 정점(Vertex)과 관계있고,

예) (Vlax-Curve-GetPointAtParam Obj 0.5) -> 첫점과 둘째점의 중점(0.5),

예) (Vlax-Curve-GetPointAtParam Obj (* (+ (Vlax-Curve-GetStartParam Obj) (Vlax-Curve-GetEndParam Obj)) 0.5)) -> 선의 중간점

Arc,Circle,Ellipse에서는 선의 시점각도와 종점각도와 관계있고,

예) (Vlax-Curve-GetStartParam Obj) -> 시작각도

Line은 거리에 관계있습니다.

예) (Vlax-Curve-GetEndParam Obj) -> 시종점간 거리


이 함수들을 쓰면 좋은 유틸을 만들 수 있습니다.

예)Bulge(배불림)있는 Lwpolyline의 아크부분에 1/3거리에서의 진행 각도를 구하라.

(단 Bulge는 두번째와 세번째 정점사이에 있음)

참고) 각도 구하는 함수 (Atan Y X) -> Radian각도

-> (apply 'Atan (cdr (reverse (vlax-Curve-GetFirstDeriv Obj (+ 1 (/ 1 3))))))

간단하죠?

이외에 응용분야가 참 많습니다.


[공유] Vlax-Curve 함수 사용법   autolisp  


전용뷰어 보기

 출처 카페 > AutoLisp 개발자를 위.. | 라이거

원문 http://cafe.naver.com/opengis/219

(setq en (car (entsel "객체선택"))

        ent (entget en)

        Projection (cdr (assoc 210 ent))

        Obj (Vlax-Ename->Vla-Object en)

        XY (getpoint " 임의의 점")

)

 

 

(setq Area (Vlax-Curve-GetArea Obj)                                            ;;; 선의 면적  -Real

        NearPt (Vlax-Curve-GetClosestPointTo Obj xy)                       ;;; 선상의 가장가까운점 -Point

        3dPt (Vlax-Curve-GetClosestPointToProjection Obj xy Projection) ;;; 프로젝션별 선상의 가장가까운점 -Point

        PaDist (Vlax-Curve-GetDistAtParam Obj 0.5)                              ;;; 해당 Parameter 별 거리 -Real

        PtDist (Vlax-Curve-GetDistAtPoint Obj NearPt)                           ;;; 선상점의 거리  -Real

        EndParam (Vlax-Curve-GetEndParam Obj)                                ;;; 선의 종점의 파라미터 -Real

        EndPoint (Vlax-Curve-GetEndPoint Obj)                                   ;;; 선의 종점 -Point

        NextVector (Vlax-Curve-GetFirstDeriv Obj 0.5)                           ;;; 해당 Parameter의 진행 Vector-(list Real Real Real)

        DiParam (Vlax-Curve-GetParamAtDist Obj Ptdist)                       ;;; 선상 거리의 Parameter구하기  -Real

        PtParam (Vlax-Curve-GetParamAtPoint Obj NearPt)                    ;;; 선상 점의 Parameter구하기 -Real

        DiPoint (Vlax-Curve-GetPointAtDist Obj PtDist)                          ;;; 선상 거리의 점 구하기 -Point

        PaPoint (Vlax-Curve-GetPointAtParam Obj DiParam)                ;;; 선상 Parameter의 점구하기 -Point

        CenterVector (Vlax-Curve-GetSecondDeriv Obj 0.5)                 ;;; 곡선일때 해당 Parameter의 곡선의 원중심까지의 Vector

        StartParam (Vlax-Curve-GetStartParam Obj)                            ;;; 선의 시점의 파라미터 -Real

        StartPoint (Vlax-Curve-GetStartPoint Obj)                               ;;; 선의 시점 -Point

        IsClosed (Vlax-Curve-IsClosed Obj)                                     ;;; 선의 페합 여부(Close여부),IsPeriodic과 다름 -T or Nil

        IsPeriodic (Vlax-Curve-IsPeriodic Obj)                                  ;;; 선의 시점과 종점이 같은지 여부(Closed포함) -T or Nil 

        isPlanar (Vlax-Curve-IsPlanar Obj)                                       ;;; 선이 정점들이 같은 평면상에 존재하는지 여부 -T ot Nil

)

 

[출처] [본문스크랩] Vlax-Curve 함수 사용법|작성자 쿤타맨

 

[출처] [본문스크랩] Vlax-Curve 함수..|작성자 쿤타맨

'리습' 카테고리의 다른 글

line 이동하거나 신설하기  (0) 2018.01.03
리액터  (0) 2017.03.30
AREA  (0) 2017.03.30
++_사칙연산연동2017 (reactor)  (0) 2017.03.30
LISP  (0) 2016.12.15