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 |
최근댓글