오리진 포인트 (ORIGIN)-PDMS 강좌

PDMS|2014. 4. 18. 09:38

ORIGIN POINT 

 

SITE      
  └────── ZONE    
    └────── STRU  
    └────── SCTN

위와 같은  EXPLORER 상 트리 구조가 있다고 가정 해 보도록 하겠습니다.

ZONE 부터 살펴 볼 께요 ZONE은 흔히 직능/BLOCK 으로 나누는 용도라 많이들 사용 하고 계십니다.

즉 STRU/ELEC/HVAL/PIPE/INST/ 등으로 구분을 하지요.

ZONE 속성에는 POS값을 가지고 있습니다. ZONE 의 속성은 E 0 N 0 U 만약 작업 중 누군가의 의해서 존에 POS 값이 입력 되어졌다면 ZONE 안에 모든 속성들의 포지션이 틀려지게 됩니다.

다시 POSITION을 되돌리면 된다 라고 생각하면 되겠지만 누군가 POS를 ZONE에 입력하고 그걸 인지하지 못했을 경우 문제가 될 수 있습니다 .

POS값이 변경되기 전의 ITEM들과 변경된 후에 ITEM 들은 둘 중 하나는 모두 수정을 해야 하니까요.

항상 ZONE의 POS 는 E 0 N 0 U 0 가 되어야 한다는 사실 잊지마시고요.

다음으로 STRU / EQUI 등 ZONE 의 하위 MEMBER 들을 살펴 보겠습니다.

해당 PROJECT 마다 MODELING 기준이 다릅니다.

항상 그 기준이 무엇인가를 먼저 살펴 보는 습관을 가지셔야 됩니다. 예를 들어 보겠습니다.

어떤 프로젝트는 ZONE 안에 STRU / EQUI 을 ZONE 과 같은 E 0 N 0 U 0 으로 입력을 하여서 사용 합니다.

또 한 프로젝트는 우리가 흔히 해왔던것처럼 STRU를 현재 원하는 포지션에 생성해서 만들기도 한답니다.

이 둘의 차이는 무엇일까요? STRU / EQUI 안에 생성되는 하위 멤버들의 POSITION 틀려진다는 점 입니다. ZONE 과 STRU 가 모두 E0 N 0 U 0 이라고 했을 경우는 하위 멤버들 BOX PANE SCTN 등은 POS 값이 WORLD POSITION과 동일하게 나오게 됩니다 그말은 현재 하위 멤버의 기준이 E0 N0 U 0 에서 시작된다고 할수 있지요 허나 STRU / EQUI 등에 원하는 POSTION값을 넣고 생성을 하였다면

EX) STRU POSITION E 500 N 1000 U 900 위 EX) 값을 0 0 0 으로 인식하고 그 값에서의 거리를 계산해서 POS값이 지정됩니다.

즉 BOX의 POSITION 이 E 100 N 50 U 50 이라면 월드 포지션으로 봤을때는 STRU POS 값에 BOX의 값을 더해야 하는 것이지요 BOX WORLD POSITION E 550 N 1050 U950 이해 가시나요?

WORLD POSITION은 E 0 N 0 U 0에서 계산되기 때문에 다음과 같은 결과 값을 얻게 되실 겁니다.

두 경우 장단점은 존재합니다.

특별한 기준이 없다면 본인이 작업이 용이한 방법으로 채택하여 사용 하면 되겠습니다.

MODELING 부분도 중요하지만 ORIGIN POINT와 밀접한 관계를 가진 것이 DRAFT가 되겠습니다.

흔히 우리가 TAGGING을 뿌려 줄때 ORIGIN 기준으로 STRU 혹은 SCTN 으로 뿌릴까를 결정해 줍니다.

그렇다면 NAME 값은 어디에 존재해야하며 어떤걸 뿌릴까 생각을 하셔야 될겁니다.

최종 결과물은 DWG이기때문에 MODELING 이란 DRAFT를 위한 기본 작업입니다.

ORIGIN의 개념을 이해하지 못하시거나 POS값이 입력 되어선 안되는 곳에 입력이 되었다면 큰 문제가 될 수 도 있습니다.

항상 유념하시고요 다음시간에는 ORIGIN POINT 변경 TOOL 과 함께 찾아 뵙도록 하겠습니다. 간단하게 버튼 클릭으로 원하는 ORIGIN POINT를 변경하는 법에 대해 알아 보도록 하겠습니다. ROTATE 시 기준이 되는 것이 ORIGIN POINT 이기 때문에 수정이 필요한 ITEM 들의 ORIGIN 점을 변경 한 후 ROTATE 시키면 기 기준으로 회전이 되므로 쉽게 수정이 가능합니다 만약 E 0 N 0 U 0 으로 기준이 잡혀있으면 ROTATE 시  회전 반경이 커지게 됩니다.

그 부분을 변경해 주는 것입니다. 

 

'PDMS' 카테고리의 다른 글

색상 및 투명도  (0) 2022.03.14
ADD 명령어  (0) 2022.03.14
지역변수와 전역변수 PML 강좌 GOGO  (0) 2014.04.16
PML기초강좌 - 변수(VAL) / 함수(FUNCTION)  (0) 2014.04.16
PML 사용가능한 환경 적용 방법  (0) 2014.04.16

댓글()

추사랑 사랑이 움짤 슈퍼맨이 돌아왔디 기습뽀뽀 ~ ♡

OTHER|2014. 4. 17. 22:54

 

요새 슈퍼맨이 돌아왔다 사랑이 때문에 미춰버리겠네요 ㅎㅎㅎㅎ 너무너무 귀여운 사랑이와 쌍둥이 하루 ㅎㅎㅎ요새 움짤 만들면서도 미소가 사라지고 있지않는데요 제가 만든 움짤도 마냥 쳐다 보고 있네요 ㅎㅎㅎㅎ

오늘 준비한 움찔을 만나 보세요 여러분들도 아이들의 매력에 흠뻑 빠지시게 될겁니다. ㅎㅎㅎ

 

 

 

 

 

 

 

 

 

 

단호하게 거절 할줄 아는 사랑이 소시도 사랑이 앞에서는 ㅎㅎㅎㅎㅎ

소시 보다도 사랑이에게 눈이 더가는 걸 보면 사랑이가 정말 너무너무 귀여운거 같아요

사랑아 기다려 줄께~~ㅡ ㅡㅡ;;; 죄송 다음 움짤로 ㄱㄱ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

먹보 사랑이 먹으면서도 할말 다하는 우리 사랑이 너무 맛나게 먹는 사랑이 ㅋㅋㅋㅋ

나도 딸을 ......

언제 결혼을 할란지 ㅋㅋㅋ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

먹으면서 윙크하는 사랑이? ㅋㅋㅋ

유난히 과일을 좋아하는 거 같아요 그래서 피부가 좋나요? ㅎㅎㅎ

아직 때묻지 않아서 모든게 귀엽네요 ㅎㅎㅎㅎ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

소시를 들었다 놨다 들었다 놧다

사랑이의 혀내맬기 신공 ~~

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

허거걱 사랑이가 기습 키스를 했습니다.

사랑이 윤아 둘 중 아무나 내가 있었으면 ㅡㅡ;;;

꿈에서라도 좀 ....... 죄송 ㅡㅡ;

 

다음 움짤 갑니다 ㅎㅎㅎ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

우리의 쌍둥이들 맛있게 냠냠 ㅎㅎ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

투정은 나처럼 하는 거야 ㅎㅎㅎㅎ

너무 귀엽네요 ㅎㅎㅎ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

아빠에게 닥친 시련 장난을 친 타블로를 째려보는 ....

정말 잡아올 기세네요 ㅎㅎ

 

 

 

 

 

오늘은 화제의 예능 슈퍼맨이 돌아왔다 움짤 두번째 시간이였습니다.

너무너무 귀여운 아이들을 보는 것만으로도 충분한 재미와 감동과 기쁨을 주고 있는 예능이 아닐까 쉽습니다.

아이들 뿐만 아니라 아빠들의 아직 미숙한 육아돌보기가 사람들의 흥미를 이끌어 낸다고 생각합니다.

주말이 기다려지고 왠지 본방을 사수 해야한다는 생각이 자꾸 드네요.

그래서 인지 이시간에는 항상 집에 있었다는 ㅡㅡ;;

왕따 그런거 아니에요

 

댓글()

지역변수와 전역변수 PML 강좌 GOGO

PDMS|2014. 4. 16. 22:24

!! 지역변수와 전역변수에 대해 알아 보도록 하겠습니다.

 

MANUAL 상에 지역변수와 전역 변수의 차이를

전역변수는 SESSION

지역변수는 ONLY ONE PML FUNCTION OR MACRO

라고 표기 해놓았네요 ㅎㅎ

 

오늘은 이말을 풀어 보도록 하겠습니다.

 

일단 PML을 만들게 되면

크게 두부분으로 나누어 집니다.

 

버튼,스크롤등의 GADGET을 DESIGN 하는 부분과

버튼클릭등으로 원하는 액션을 보여주기위한

METHOD OR FUCTION 이 존재 합니다.

아래 소스를 보면서 자세히 설명 해드리겠습니다.

 

DESIGN 부분

button .B1 pixmap /pix1_sel /pix1_unsel

call|!this.action()|

WIDTH 26 HEIGHT 26

--버튼을 만들어라

.

.

METHOD 부분

define method .action()

!X = 99

endmethod

 

define method .WHOISX()

!S = (ACTION() 메소드 안) !X + 1

그럼 !S는 100이 되겠지 흐흐흐.

 

endmethod

 

위 소스를 보시면 상단 DESIGN 부분에서 버튼을 만들었습니다.

버튼이 클릭이 되었을때 빨간색 부분의 CALL 명령으로 ACTION() METHOD가 실행이 되는 소스 입니다.

ACTION METHOD 가 실행되면 !X 객체에 99 REAL 값을 넣게 됩니다.

 

WHOISX() METHOD 에서는

!S 객체에 !X 값 + 1을 더하고 있습니다.

하지만 누군가 WHOISX() METHOD를 CALL 했을 때 100이라는 결과물은 절대 나오지 않습니다.

ERROR메세지만 출력될 뿐입니다.

 

이유인 즉 !X객체가 ACTION() METHOD 에서만 사용가능한 지역 변수 이기때문입니다.

 

 

ACTION() METHOD 에서 선언과 대입을 한 !X객체는

WHOISX() METHOD 안에서 사용 할수 없습니다.

 

한 METHOD OR FUCTION 에서만 사용 가능한 변수!

이해가 가시나요?

 

부산시를 벗어나지 않는 시내버스 = 지역변수

전국팔도를 다 갈수 있는 고속버스 =전역변수

 

이런 부분을 코딩 중에 파악하고 전역변수로 변경해서 사용한다면

더욱더 간결하고 쉬워질 수 있습니다.

 

그방법으로는 MEMBER 가 있습니다.

MEMBER .A IS STRING

MEMBER 함수의 특징은 선언만 해두고 값을 기다리고 있다는 겁니다

툴이 실행될때 STRING 타입의 A변수를 생성해 놓습니다.

그리고 값을 기다리지요

 

어떤 METHOD에서 MEBER 함수로 접근을 해서 값을 입력한다면 그건 모든 함수 들에서 사용이 가능한 전역 변수가 되겠습니다.

또 한 이값은 다시 수정되어지고 다시입력되어지고 다시 수정 다시 입력 이 작업 계속 적으로 수행 할 수 있기때문에

멋진 툴을 만들기 위한 필수 조건 이라고 생각되어집니다.

조건을 검사한다고 가정해 봅시다

현재 MEMBER A 가 들어 가있으면 X라는 함수가 실행 될때는 A = C 를 넣고 다시 Y 라는 함수가 MEBER C가 입력 되었으면

다른 작업을 수행하라 와 같이 코딩을 할수 있다는 것이지요

흔지 저희 들은 어떤 규칠 정확한 규칙을 찾아서 툴을 생성하곤 합니다.

하지만 그 규칙의 범위를 넓게 해주는 것이 바로 전역 변수 입니다.

지역변수는 위에서 말한것 처럼 그 지역에서만 사용 가능하기 때문에 어떤 값을 다름 함수로 전해주고

할수가 없습니다. 하지만 전역은 다릅니다.

 

전역 변수를 직접 타이핑해서 이용해 보신다면 정말 다양한 코딩을 하실수 있을 겁니다.

전역 변수로는 배열도 사용 가능하기때문에 지금 까지 수행한 값들을 저장해 두거나 전으로 되돌아가거나

다시 앞으로 되돌아 가거나 하는 기능도 가능합니다.

변수공부시간에 배운거 다들 기억 하고 계시져 변수의 속성들 숫자 문자 배열 참거짓 모두 사용 가능 합니다.

또한 현재 PDMS에서 제공하는 OBJECT 들도 모두 전역으로 사용 하면 시야가 더 넓어 질 수 있습니다.

지금 버튼을 만들고 툴을 만들고 허나 MEMBER를 사용 할줄 모른다고 하시면 그 건 아직 공부할게 많이 있습니다

그냥 간단한 버튼을 만들거나 리스트를 뽑거나 하는 정도 뿐이 안되니까요

PML 다루시는 분들은 다수 존재합니다. 이부분을 이해 하지 못하면 명함도 못내밉니다. 제 주위에도 필요한 버튼등을

쉽게 만들어 쓰시는 분들은 다수 존재합니다.

어떠한 어마한 규칙이 왔을때는 두손두발 다 드십니다.

내가 원하는 것을 그 어떤 것이라도 만들어 내려면 꼭 필히 이해해 주세요

자신의 실력으로 판단하고 안된다고는 절대 말하지 마세요 더 공부를 하세요

저는 PML이 무궁무진 하다고 생각됩니다.

불가능하다고 생각되어진 것들도 해결한 경우를 무수히 봐왔기에 더 공부하시고 안된다고 생각하지마시고

더 공부를 하세요 .

 

그럼 오늘은 여기까지 하겠습니다.

다음 시간에 찾아 뵐께요

 

'PDMS' 카테고리의 다른 글

ADD 명령어  (0) 2022.03.14
오리진 포인트 (ORIGIN)-PDMS 강좌  (0) 2014.04.18
PML기초강좌 - 변수(VAL) / 함수(FUNCTION)  (0) 2014.04.16
PML 사용가능한 환경 적용 방법  (0) 2014.04.16
PDMS 명령어 - 두번째 시간  (0) 2014.04.15

댓글()

PML기초강좌 - 변수(VAL) / 함수(FUNCTION)

PDMS|2014. 4. 16. 22:04

오늘은 변수에 대해서 설명을 해보도록 하겠습니다.

 

프로그래밍을 접해 보지 못한 분들은 변수란 단어조차 생소 할 수 있기에 쉽게 쉽게 설명을 해보도록 하겠습니다.

 

프로그래밍을 하다 보면 어떤 값을 저장해 두었다가 그 값을 불러와야 하는 경우가 발생하게됩니다.

이때 우리는 변수라는 하나의 객체를 생성해서 가져다 쓰거나 공유해서 사용하고 합니다.

 

즉 우리가 필요한 값을 저장해 두는 객체

이것이 바로 변수가 되겠습니다.

 

변수 타입에는 BOOLEAN , ARRAY , REAL , STRING등이 존재합니다.

뜻 그대로 필요한 객체로 생성하여 그 값을 저장해 둘수 있습니다.

 

BOOLEAN = TRUE / FALSE 참 과 거짓

STRING = 문자

ARRAY = 배열 ( 다수의 정보를 넣어둘때 사용합니다.)

REAL = 숫자

 

변수를 사용 하려면 일단 변수를 선언 해주어야 합니다.

 

변수의 선언은 내가 쓰려는 변수가 어떤 타입인지 선언을 해주는 것입니다.

아래와 같이 내가 필요로하는 속성으로 선언을 해주면 됩니다.

 

!Name = STRING()
!Grid = BOOLEAN()
!Lengths = ARRAY()

!number = REAL()

 

변수를 선언한 후에는 대입을 해주어야 합니다.

!number = 99

위에서 선언한 !number 객체에 99 를 대입하는 명령어 입니다.

 

하지만 프로그래밍 과정에서는 위 와는 틀리게

선언과 대입을 한번에 해줍니다.

!number = 99

위와 같이 바로 사용 가능합니다.

선언이 생략 된듯 하지만

!number = 99 이 자체가 현재 값이 숫자라는 것 = REAL() 이다라는 것을 선언해주는 것이 되는 거지요 ㅎㅎ

 

MEMBER 변수를 사용 할때는 즉시 필요한 값이 들어가는 것이 아니라

필요할때 가져다 쓰는 경우가 많기에 일단 선언만 해놓고 그에 맞는 값을

나중에 넣어서 쓰기에 SORCE 상에 선언과 대입이 존재 합니다.

 

다음으로는 함수에 대해서 알아보도록 하겠습니다. 우선 함수를 사용 하기 위해서는 함수를 만들어 주어야 합니다.함수를 생성하는 방법은

DEFINE METHOD .함수이름()

내용

ENDMETHOD

 

 위와 같이 생성 하실 수 있습니다. DESIGN 부분에서 먼저 CALL을 이용해 함수를 호출하고 함수가 호출되면 함수의 내용들을 하나씩 수행하게 됩니다.

간단하게 SOURCE를 적어 보도록 하겠습니다.

DEFINE METHOD .MOVEEAST()

BY EAST 100

ENDMETHOD

위에 함수는 현재 함수를 CALL 하는 버튼이나 옵션등이 작동을 하게 되면 바로 수행을 해서 EAST 방향으로 100 만큼 이동을 하게 하는 명령어가 되겠습니다. MOVEEAST 함수는 명령어를 사용 해서 간단히 만들어 본 함수가 되겠습니다. 그럼 여기서 무조건 100씩 이동을 원하지 않고

내가 원하는 값만큼이동을 하고싶을땐 어떻게 해야할까요? 바로 이런 부분들이 PML 코딩이 되겠습니다. 방법은 다수 존재합니다. 하지만 저같은 경우에는 TEXT GADGET 에서 그 값을 받아서 실행하라고 코딩을 해보겠습니다.

그럼 한번 해보겠습니다. 우선 디자인 부분

BUTTON .NAME AT X+0.5 YMAX 'MOVE EAST' CALL|!THIS.MOVEEAST()| WIDTH 4

위와 같은 버튼 가젯을 생성하신 후에 이 버튼이 클릭이 되면 CALL 이란 함수가 MOVEEAST 함수를 호출 하게 되는 것입니다.

허나 버튼만 필요한 것이 아니고 값을 입력을 받아야 하는 TEXT 가젯도 필요 합니다.

TEXT .VAL AT X+0.5 YMAX '' CALL|| WIDTH 10 FMT

다음과 같이 TEXT GADGET를 생성해 주면 되겠습니다. 버튼과 텍스트 가젯이 다른 점은 바로 CALL 부분입니다. 저희는 TEXT에 입력된 값만

받아오면 되는 것이기 때문에 TEXT 상자가 수행할 함수는 존재하지 않는 것이 되겠습니다.

그럼 다시 함수로 가보겠습니다.

DEFIME METHOD .MOVEEAST()

BY EAST $!THIS.VAL.VALUE

ENDMETHOD

위와 같이 입력을 해주면 현재 TEXT GADGET에 존재하는 값을 받아서 BY EAST 명령을 수행을 하게 됩니다.

GADGET 설명 중 모르시는 부분이 있으시면 GADGET부분을 먼저 공부를 해주시기 바랍니다. 수정해 보고 분석하고 하면서

하나하나 타이핑을 해보시면 이해 하실 수 있습니다.

$!THIS.VAL.VALUE 는 현재 TEXT의 있는 값을 받아서 오라는 명령이 되겠습니다. 그럼 현재 사용자가 TEXT 창에 500 을 입력하게 되면 바로 그 값을 받아 오기에 EAST 방향으로 500이동이 되겠지요

ROTATE 기능도 마찬가지 입니다. 현재 필요한 값 즉 각도를 입력 받아서 명령어 만 수정해 주면 되겠습니다.

ROTATE BY 90 ABOU E

회전을 시켜라 EAST 방향으로 E는 방향을 나타내며 다들 아시겠지만 EAST WEST NORTH SOUTH UP DN 이 있습니다.

모든 명령어에 응용 가능 합니다. 그렇기 때문에 간단한 툴을 만들기 위해서라도 명령어 먼저 숙지 하시기 바랍니다.

그렇지 않으면 간단한 툴도 제대로 만들 수 없을 뿐만 아니라 명령어의 존재를 모르고 원하는 사항을 모드 PML로 입력하고 나서 명령어의 존재를 알게 된다면 허무해질수 있습니다.

저도 처음에는 반복문안에 반복문 조건문안에 조건문을 수도 없이 써서 어떠한 툴을 만들었는데

그 기능이 간단한 명령어 하나로 수행이 되는 것을 보고 제가 한심스럽기까지 한적 있습니다.

아직 이해가 안되시는 분들도 계실 겁니다.

하지만 저는 중요한 부분만 집고 넘어가도록 하겠습니다.

혼자 찾아보고 직접해봐야 본인것이 될 수 있으니까요 모든걸 적어 드리면 드래그 COPY 로 사용 하시는 분들이 존재 할거라 생각 되어집니다.

디자인 부분에서도 .NAME 등과 AT 부분등 아직 공부하지 않으신 분들은 쉽게 이해 하실수 없다는걸 알고 있습니다.

하지만 일단 도전을 해보시고 그래도 어렵다고 생각되시면 MAIL 주시거나 댓글을 남겨주세요 그럼 그부분에 대해서 친절하게 설명해 드리도록 하겠습니다.

아니면 공통된 어려운 부분이 존재하면 그 부분에 대해서 강의를 올리도록 하겠습니다.

 

 

 

 

 

댓글()