ARX119의 BIM/CAD 연구소

arx119.egloos.com

포토로그 방명록 업그레이드/기능 요청



SHAPE 구조 Shape 구조


지정 바이트는 벡터를 정의하는 것 외에도 다음과 같은 특수 코드를 사용하여 추가 양식을 작성하고 특정 동작을 지정할 수 있습니다. 특수 코드를 사용하려면 3자의 문자열에서 두번째 문자(벡터 길이 지정)가 0이어야 합니다. 그렇지 않으면 코드 번호만 지정할 수 있습니다. 예를 들어, 008과 8은 모두 유효한 지정입니다.

코드    |     설명
000     |     쉐이프 정의의 끝
001     |     그리기 모드 활성화(펜 다운)
002     |     그리기 모드 비활성화(펜 업)
003     |     다음 바이트로 벡터 길이 나누기
004     |     벡터 길이에 다음 바이트 곱하기
005     |     현재 위치를 스택에 넣기
006     |     스택에서 현재 위치 꺼내기
007     |     다음 바이트로 제공되는 번호의 부 쉐이프 그리기
008     |     다음 다섯 바이트로 제공되는 X-Y 변위
009     |     (0,0) 으로 종료되는 다중 X-Y 변위
00A    |     다음 두 바이트로 정의되는 8분원 호 
00B    |     다음 다섯 바이트로 정의되는 분수 호
00C    |     X-Y 변위와 도출로 정의되는 호
00D    |     다중 돌출 지정호
00E    |     세로 문자인 경우에만 다음 명령 처리


코드 0  : 쉐이프의 끝
코드 0은 쉐이프 정의의 끝을 표시합니다.

코드 1 과 2 : 그리기 모드 제어
코드 1과 2는 그리기 모드를 제어합니다. 그리기는 각 쉐이프가 시작될 때 활성화됩니다. 그리기 모드가 커지면 벡터가 선을 그립니다. 그리기 모드가 꺼지면 벡터가 도면 없는 새로운 위치로 이동합니다.

코드 3과 4 : 크기의 제어
코드 3과 4는 각 벡터의 상대 크기를 제어합니다. SHAPE 명령으로 지정된 높이는 처음에는 단일 직교 벡터 (방향 0 , 4, 8 또는 C)의 길이로 간주됩니다. 코드 3과 4뒤에는 정수 축척 비율(1-255) 이 포함된 지정 바이트가 옵니다. 쉐이프 높이로 전체 쉐이프 크기를 지정하고 10벡터 길이를 사용해서 쉐이프를 그리려는 경우 3,10을 사용하여 높이 지정을 축척할 수 있습니다. 쉐이프 내에서 축척 비율은 누적됩니다. 즉, 2를 곱하고 다시 6을 곱하면 축척 비율이 12가 됩니다. 보통 쉐이프 끝에서 축척 비율의 효과를 되돌려야 합니다. (특히, 부 세이프와 문자 글꼴 쉐이프의 경우) AutoCAD는 축척 비율을 재설정하지 않습니다.

코드 5와 6 : 위치 저장/복원
코드 5와 6은 이후의 쉐이프 점에서 복귀할 수 있도록, 쉐이프를 그리는 동안 현재의 좌표 위치를 넣었다가(저장) 꺼냅니다(복원). 넣는 것은 모두 꺼내야 합니다. 위치 스택의 깊이는 4 위치에 불과 합니다. 너무 많이 넣고나서 꺼내기 작업을 많이 하지 않으면 스택 오버프로로우가 발생하여, 쉐이프가 그려질 때 다음 메시지가 표시 됩니다.

Position stack overflow in shape nnn

마찬가지로, 스택에 넣는 것보다 더 많은 위치를 꺼내려고 하면 쉐이프가 그려질 때 다음 메시지가 표시됩니다.

Position stack underflow inshape nnn

코드 7 : 부 쉐이프

코드 7은 부 쉐이프 참조입니다. 비 유니코드 글꼴의 경우 코드 7 뒤의 지정 바이트는 1과 256 사이의 쉐이프 번호입니다. 유니코드 글꼴의 경우에는 코드 7 뒤에 1과 65535 사이의 유니코드 쉐이프 번호가 옵니다. 유니코드 쉐이프 번호는 2바이트로 계산됩니다. (유니코드와 비 유니코드 글꼴의 차이점에 대한 정보는 유니코드 쉐이프 정의 파일의 형식 참고) 이 때 같은 쉐이프 파일에서 해당 번호를 갖는 쉐이프가 그려집니다. 새 쉐이프의 경우에는 그리기 모드가 재 설정되지 않습니다. 부 쉐이프가 완료되면 현재 쉐이프 그리기가 재개됩니다.

코드 8과 9 : X-Y 변위

법선 벡터 지정 바이트는 사전에 정의된 16개의 방향으로만 그려지며 가장 긴 길이는 15입니다. 이러한 제한으로 쉐이프를 효율적으로 정의할 수 있지만, 간혹 그러한 효율성에도 한계가 있습니다.코드 8과 9를 사용하면 X-Y 변위를 사용하여 비 표준 벡터를 그릴 수 있습니다. 코드 8 뒤에는 다음 형식의 2개의 지정 바이트가 와야 합니다.

8, x-displacement, Y-displacement
X-Y 변위의 범위는 -128에서 +127까지입니다. 앞에오는 +는 생략이 가능하며 일기 쉽도록 괄호를 사용할 수 있습니다. 다음보기에서는 외쪽에 10단위, 위쪽에 3 단위를 그리는 (또는 이동하는) 벡터를 만듭니다.

8, (-10,3)

2 변위 지정 바이트 후에 쉐이프는 법선 벡터 모드로 복귀합니다.

코드 9를 사용하여  비 표준 벡터 순서를 그릴 수 있습니다. 임의의  수의 X-Y변위 쌍으로 이 작업을 따르십시오. 코드 순서는 (0,0) 쌍에 의해 종료됩니다. 다음 보기에서는 3개의 비 표준 벡터를 그리고 법선 벡터 모드로 복귀합니다.

9, (3,1), (3,2), (2,-3), (0,0)

AutoCAD가 법선 벡터 또는 그 위에 오는 특수 코드를 인식할 수 있도록 X-Y변위 쌍 순서는 (0,0)쌍으로 종료해야 합니다.

코드 00A : 8분원 호
특수 코드 00A(또는 10)는 다음에 오는 2개의 지정 바이트를 사용하여 호를 정의 합니다. 하나 이상의 45도 8분원에 걸쳐 있으며, 8분원 경계에서 시작되고 끝나기 때문에 이를 8분원 호라고 합니다. 8분원은 다음 그림과 같이 3시 방향으로 번호가 매겨집니다.

<그림2>

호 지정은 다음과 같습니다.

10,radius, (-)0SC

반지름은 1에서 255까지의 값을 가질 수 있습니다. 두번째 지정 바이트는 호의 방향(양수이면 시계반대방향, 음수이면 시계방향)과 시작 8분원 (s, 0-7의 rkqt), 그리고 걸쳐있는 8분원의 수 (C00에서 7까지의 값으로 0은 8개의 8분원이나 전체 원과 같음)를 나타냅니다. 읽기 쉽도록 괄호를 사용할 수 있습니다. 예를 들어, 다음과 같은 쉐이프 정의 단편을 고려해 보십시오.
... 012, 10, (1,-032),01E,...

이 코드는 다음 그림처럼 오른쪽 위로 1단위벡터를 그리고, 8분원 3(두 8분원에 대해 1단위 반지름)에서 시계방향의 호를 그린 다음, 오른쪽 아래로 1단위 벡터를 그립니다.

<그림3 > 코드 00B 분수호
특수코드 00B(11)는 반드시 8분원 경계에서 시작되고 끝날 필요가 없는 호를 그립니다. 정의에서는 5개의 지정 바이트를 사용합니다.

11,start_offset,ent_offset,high_radius,radius,(-)0SC

start_offset 및  end_offset은 호가 시작되거나 끝나는 8분원 경계에서 얼마나 떨어져 있는지를 나타닙니다. high_radius는 반지름에서 가장 중요한 8개의 비트를 나타내고, radius가 255 단위 이상이 아닌 한 높은 반지름은 0이 됩니다.  high_radius값에 256을 곱하고 이 값을 radius 값에 더하면 255보다 큰 호 반지름을 만들 수 있습니다. radius와 종료 지정 바이튼느 8분원 호 지정(앞에서 설명한 코드 00A)의 경우와 동일합니다.

시작 8분원 경계(45도의 배수)와 호의 시작간 차이를 계산하여 start_offset을 결정하십시오. 그런 다음, 이 차이에 256을 곱하고 45로 나누십시오. 호가 8분원 경계에서 시작되면 시작 간격 띄우기 (start offset)sms 0dlqslek.

end offset도 비숫하게 계산되지만 호의 끝을 교차하는 마지막 8분원 경계를 기준으로 하는 각도를 사용하십시오. 호가 8분원 경계에서 끝나면 끝 간격띄우기(end offset)는 0 입니다.

11,(56,28,0,3,012)

다음은 그에 대한 설명입니다.

start_offset   = 56   // ((55-45) * 256 / 45 ) = 56
end_offset    = 28  //  ((95-90) * 256 / 45)  = 28
high_radius  = 0   //  (radius < 255)
radius          = 3 
starting octant = 1 // arc starts in the 45 degree octant
ending octant  = 2 // arc ends in the 90 degree octant

코드 00C 와 00D : 돌출 지정 호

특수코드 00C 와 00C(12와 13)은 쉐이프 설명에 호 세그먼트를 포함하는 또 다른 매커니즘을 제공합니다. 이러한 코드는 X-Y 변위를 지정하는 데 사용된다는 점에서 코드 8 및 9와 비슷합니다. 그러나 코드 00C와 00D를 사용하면 돌출 비율 (bulge factor)을 변위 벡터에 적응해서 호를 그릴 수 있습니다. 코드 00C는 하나의 호 세그먼트를 그리는 반면, 코드 00D는 (0,0) 변위로 종료될 때까지 다중 호 세그먼트 (polyarcs)를 그립니다.

코드 00C 뒤에는 호에 대한 설명하는 3 바이트가 와야 합니다.

0C, x-displacement, y-displacement, bulge

호의 곡률을 지정하는 X, Y 변위 및 돌출은 -127에서  +127까지 입니다. 변위에 의해 지정된 선 세그먼트의 길이가 D이고 세그먼트 중간점에서 수직거리의 길이가 H이면 돌출의 진폭은 ((2*H / D)*127)입니다. 현재 위치에서 새 위치까지 호가 시계 방향으로 그려진 경우 부호는 음수입니다.

<그림 4>

반원은 돌출이 127(또는 -127)이며, 이들 코드(큰 호에 2개의 연속 호 세그먼트 사용) 를 사용해서 단일 호 세그먼트로 표시할 수 있는 가장 큰 호입니다. 돌출 지정 0은 유효하며 직선 세그먼트를 나타냅니다. 그러나 직선 세그먼트에 코드 8을 사용하면 바이트가 쉐이프 설명에 저장된다는 점에 유의하십시오.

폴리호 코드 (00D 또는 13)뒤에는 0이 오며(추가로 3중 호 세그먼트가 사용될 수 있음) , (0,0) 변위로 종료됩니다. 마지막 변위 다음에는 돌출이 지정되지 않음에 유의하십시요, 예를 들어, 문자 S는 다음 순서로 정의될 수 있습니다.

13, (0, 5, 127), (0,5,-127),(0,0)

0 돌출 세그먼트는 폴리호 내에서 직선 세그먼트를 나타내는 데 유용하며, 폴리호를 종료하고 하나의 직선 세그먼트를 삽입한 다음 다른 폴리호를 시작하는 것보다 월씬 효과적입니다.

숫자 -128은 호 세그먼트와 폴리호 정의에는 사용할 수 없스빈다.

코드 00E: 플래그 세로 문자명령

특수 코드 00E(14)는 글꼴이 가로와 세로 방향 모두에서 사용되는 양방향 문자 글꼴 설명에만 사용됩니다. 이 특수 코드가 문자 정의에 사용되면 방향에 따라 그 다음 코드를 처리하거나 건너뜁니다. 세로 방향이면 다음 코드를 처리하고, 가로 방향이면 다음코드를 건너뜁니다.

가로 문자에서 각 문자의 시작점은 기준선의 외쪽 끝입니다. 세로 문자에서 시작점은 문자의 맨 위쪽 중심으로 간주합니다. 각 문자의 끝에는 보통 펜 업 세그먼트가 그려져서 그 다음 문자의 시작점을 지정합니다. 가로 문자에서 시작점은 오른쪽이고, 세로 문자에서는 아래쪽입니다. 특수코드 00E(14)는 주로 시작점과 끝점의 차이를 조절하는데 사용되며 동일한 문자 쉐이프 정의를 가로와 세로로 모두 사용할 수 있도록 해줍니다. 예를 들어 다음과 같은 대문자 D의 정의를 가로 또는 세로 문자에 사용할 수 있스빈다.

*68, 22, ucd
2, 14, 8, (-2, 6),1, 030,012,044,016,038,2,010,1,06c,2,050,14,8,(-4,-3),0






덧글

댓글 입력 영역



구글번역

통계 위젯 (화이트)

9728
492
598295

국가접속Flag

free counters