기본 콘텐츠로 건너뛰기

2008의 게시물 표시

VB를 통한 FrameWork 자동 로드

FrameWork을 자동으로 로딩하는 것에 대해 알아봅시다. 물론 PC에 FrameWork이 설치되어 있어야 하겠지요. 현재 디렉토리를 Microstation이 설치되어 있는 디렉토리로 설정합니다.(SetCurrentDirectory) Shell을 이용해서 mod 폴더에 있는 FrameWork dgn 파일을 오픈합니다. Set msApp = GetObject("" , "Microstation.Application") fwstart.ma 파일을 로드합니다. msApp.MbeSendCommand("MDL LOAD FWSTART.MA") 다시 시간이 걸립니다. 이렇게 하면 성공적으로 FRAMEWORK을 로드할수 있습니다. 한가지 주의할 사항은 위의 절차대로 하기 전에 반드시 MS , FW_PRODUCT 이 두 환경변수를 설정해 줘야 한다는 겁니다. 예) "FW_PRODUCT"="C:\\WIN32APP\\INGR\\FWPLUS\\" "MS"="C:\\Bentley\\Program\\MicroStation\\ustation.exe"

오늘 날짜, 현재 시간 구하기, 년월일 시분초; Get Date Time

현재 년/월/일, 시/분/초를 구하는 방법입니다. 예를 들어 올해가 2007년도라면, tm_year 라는 속성에 2007 이라는 숫자가 들어 있습니다. 오늘 날짜 / 현재 시간 구하기 예제 파일명: 0.py #!/usr/bin/python # -*- coding: cp949 -*- import time now = time.localtime() print "현재 년: %d" % (now.tm_year) print "현재 월: %d" % (now.tm_mon) print "현재 일: %d" % (now.tm_mday) print print "현재 시: %d" % (now.tm_hour)         # 24시간제 print "현재 분: %d" % (now.tm_min) print "현재 초: %d" % (now.tm_sec) print print "오늘 요일: %d"      % (now.tm_wday)  # 월요일 = 0 print "올해 몇번째 날: %d" % (now.tm_yday)  # 1월 1일 = 1 print "서머타임 여부: %d"  % (now.tm_isdst) # 서머타임 없으면 0

Python 파이썬] 파일 존재 여부 판단, 디렉토리 있는지? 함수; Is File Dir Exists

디스크에 특정 파일명의 파일이 실제로 존재하는지, 또는 특정 디렉토리명의 디렉토리가 정말로 있는지 알아내는 방법입니다. os.path.isfile() 함수는, 지정한 패스가 파일이고 실제로 존재할 때에만 참을 반환하기에, 파일이 존재하는지 알아내는 용도로 사용할 수 있습니다. os.path.isdir()은 디렉토리(폴더)에 적용됩니다. 파일/폴더 존재 여부 알아내기 예제 스크립트 파일명: example.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #!/usr/bin/python # -*- coding: cp949 -*-     import  os   if  os.path.isfile( "test.txt" ):    print   "파일 있습니다" else :    print   "그런 이름의 파일은 없습니다"   if  os.path.isdir( "000" ):    print   "디렉토리 있습니다" else :    print   "그런 이름의 디렉토리는 없습니다" cs

wxPython 프로그램을 py2exe로 하면 스타일이 확 죽는 ..

Digital Dynamics | 이재규 http://blog.naver.com/leejaku/20019851052 2. 문제점: XP 에서 개발했는데 py2exe 로 묶고 나니 GUI 가 옛날 것 마냥 안이쁘게 나와버린다. 그냥 pyw 파일을 실행하면 XP 테마로 이쁘게 GUI 가 나오는데 py2exe 로 묶기만 하면 그런다. 해결책1: py2exe 로 만들어낸 파일이 FOO.exe 라면 1. 파이썬이 설치된 디렉토리로 찾아간다. 보통은 C:\Python24 2. pythonw.exe.manifest 라는 파일을 FOO.exe.manifest 라는 이름으로 복사한다. 3. FOO.exe 파일과 FOO.exe.manifest 를 같은 디렉토리에 함께 둔다. 4. 해결됐다. 해결책2: 인용: setup.py 파일안에 manifest 파일의 내용을 embedding 한다. 검색해서 찾은 예제를 붙여보겠습니다. 코드: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 from  distutils.core  import  setup import  py2exe   manifest  =   "" " <?xml version=" 1. 0 " encoding=" UTF - 8 " standalone=" yes "?> <assembly xmlns=" urn:schemas - microsoft - com:asm.v1 " manifestVersion=" 1. 0 "> <assemblyIdentity     version=" 0. 64. 1. 0 "     processorArchitecture

CATALOGUE 구축시 회전 PTSET 생성하기

아래 그림과 같이 ANGLE을 가지는 POINT를 생성하고자 할때, 일반적으로 직접 ANGLE값을 줄때는 X 90 Y 이런식으로 가능합니다. 하지만 DESGIN PARA에 있는 값을 적용 시키고자 할때는 MIXED-POINT로 생성하면 되지 않습니다. 꼭 PTCA로 생성해야만 합니다.(왜 그런지는 몰라요) ATTRIB RPRO DSPJ 라는 항목이 좀 생소 할지도 모르는데.... 이 부분은 그냥 DESP를 사용하지 않고(이렇게 사용했다면 Display Component할때 무수한 메세지를 보게 될것입니다.) DTSE를 이용해서 DESP를 이용하도록 하면 메세지가 나타나는 것을 방지할 수 있습니다. 말로는 잇점을 표현하기 어렵고 직접 해 보시길....

PDMS ISO의 좌표계

에러 처리

PML에서 에러 처리는 아래와 같이 합니다. HANDLE ANY ... ENDHANDLE ...에 에러 처리 코드를 입력합니다. 위의 코드는 모든 에러에 대해서 적용되는데요, 만일 특정 에러에 대해서만 적용 하려면 HANDLE ANY(,) ... ENDHANDLE (,)에 에러 번호를 입력하면 됩니다. next handle any(2,113)      $* NEXT ELEMENT 없음. ... endhandle 위의 코드는 NEXT 명령을 이용해 다음 ELEMENT로 이동하려 할때 다음 ELMENT가 없을 때 에러 처리를 하는 예입니다.

파이썬 코드

실무에서 사용하기 위해 처음으로 작성한 파이썬 코드입니다. 텍스트 파일을 다루는 코드입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 #       Procedure : replace_desp #       DateTime  : 2008-05-19 09:30:49 #       Author    : 백흠경 #       Purpose   : DESP 문자열을 Data Set 문자열로 바꾼다. def  replace_desp(aLine):     aList  =  [ 'DESP[2 ]' , 'DESP[3 ]' , 'DESP[4 ]' , 'DESP[5 ]' , 'DESP[6 ]' , 'DESP[7 ]' , 'DESP[8 ]' , 'DESP[9 ]' , 'DESP[10 ]' ,                      'DESP[11 ]' , 'DESP[12 ]' , 'DESP[13 ]' , 'DESP[14 ]' , 'DESP[15 ]' , 'DESP[16 ]' , 'DESP[17 ]' , 'DESP[18 ]' , 'DESP[19 ]' , 'DESP[20 ]' ,                      'DESP[21 ]' , 'DESP[22 ]' , 'DESP[23 ]' , 'DESP[24 ]' , 'DESP[25 ]' , 'DE

RATING이란 뭔가요?

바이러스처럼 번식하고 바퀴벌레처럼 생존하여 끝까지 승리하리라! 님의 말 : 이사님~~ RATING이 뭔가요? 이형태 님의 말 : 두께 이형태 님의 말 : 일종의 강도지 바이러스처럼 번식하고 바퀴벌레처럼 생존하여 끝까지 승리하리라! 님의 말 : 음... 이형태 님의 말 : 150#라고 하면 150파운드 이형태 님의 말 : 그 강도를 견디기 위해서 가져야 할 두께 정도로 이해하면 돼 바이러스처럼 번식하고 바퀴벌레처럼 생존하여 끝까지 승리하리라! 님의 말 : 역시 이사님~~~

UDA 만들기

UDA를 만들기 위해서는 Lexicon 모듈로 들어가야 합니다. WORLD 레벨에서 작성한 매크로 파일을 올립니다. $M /C:\UDA.txt 파일을 올리는데 에러가 발생했다면 FINISH 로 빠져 나와 처음부터 다시 작업을 해야 합니다. 매크로 파일을 에러 없이 올렸다면 컴파일을 해야 합니다. COMPILE 컴파일을 하고 난 후에 작업을 저장합니다. SAVEWORK

파일 쓰기/열기...

파일쓰기/열기를 할때 자꾸 예전 코드를 뒤적거려서 여기에 적어 둡니다. = 파일 쓰기 = !ofilename = 'c:\temp\test.dat' !!file = Object FILE('$!ofilename') $* 파일 OBJECT를 생성합니다. !!file.Open('overwrite') $* 겹쳐 쓰기로 파일을 엽니다. !!file.WriteRecord('TEST') !!file.Close() $* 파일을 닫습니다. !!file.Delete() $* 파일 OBJECT를 삭제합니다. = 파일 읽기 = !ofilename = 'c:\temp\test.dat' !!file = Object FILE('$!ofilename') $* 파일 OBJECT를 생성합니다. !!file.Open('read') $* 읽기 모드로 파일을 엽니다. !recs = object Array() do !aLine = !!file.ReadRecord() $* 파일에서 한 줄을 읽습니다. if !aLine.set() EQ FALSE then break $* 파일 끝으로 보고 파일 읽기를 멈춥니다. endif !recs.Append(!aLine) enddo !!file.Close() $* 파일을 닫습니다. !!file.Delete() $* 파일 OBJECT를 삭제합니다. $* do something !recs.clear() !recs.delete()

isodraft에서 iso 파일 생성

TTY 모드에서 ISO 파일을 생성하는 방법 tty모드를 통해서 IsoDraft 로 들어갑니다. {파이프 혹은 BRAN 이름} 으로 이동합니다. $M /{ISODRAFT OPTION FILE} : ISO를 돌리기 위한 옵션 파일인데 이 파일도 커맨드를 모아놓은 매크로 파일입니다. file and dxf /filepath : dxf 파일이 생성 될 파일 이름(전체 경로 포함) detail {파이프 혹은 BRAN 이름} … {파이프 혹은 BRAN 이름}은 앞에 /를 포함해야 합니다. finish : ISO 도면을 생성했으면 IsoDraft를 빠져나옵니다.

처음으로 embedding한 파이썬 코드

'' Application에서 output_stream을 호출합니다. ''' 인자로 넘어온 내용으로 파일로 저장하는 코드입니다. 1 2 3 4 5 6 7 class  Debug:      def  __init__( self ):            def  output_stream( self  , msg):          file   =   open ( 'c:\\temp\\embedding.log'  ,  'a' )          file .write(msg  +   '\n' )          file . close () Colored by Color Scripter cs

MFC ActiveX 컨트롤: Windows 컨트롤 서브클래싱

MFC ActiveX 컨트롤: Windows 컨트롤 서브클래싱 이 문서에서는 공통되는 Windows 컨트롤을 서브클래싱하여 ActiveX 컨트롤을 만드는 과정을 보여 줍니다. 기존 Windows 컨트롤을 서브클래싱하면 ActiveX 컨트롤을 손쉽게 개발할 수 있습니다. 새 컨트롤은 서브클래싱된 Windows 컨트롤의 그리기 및 마우스 클릭에 대한 응답과 같은 기능을 갖게 됩니다. MFC ActiveX 컨트롤 BUTTON 샘플은 Windows 컨트롤의 서브클래싱 예제입니다. Windows 컨트롤을 서브클래싱하려면 다음 작업을 수행합니다. COleControl의 IsSubclassedControl 및 PreCreateWindow 멤버 함수 재정의 OnDraw 멤버 함수 수정 컨트롤에 리플렉션된 ActiveX 컨트롤 메시지(OCM) 처리 참고     컨트롤 설정 페이지의 부모 창 클래스 선택 드롭다운 목록을 사용하여 컨트롤이 서브클래싱되도록 선택하면 ActiveX 컨트롤 마법사가 이 작업의 대부분을 자동으로 수행합니다. 컨트롤 서브클래싱에 대한 자세한 내용은 Knowledge Base article Q243454를 참조하십시오. IsSubclassedControl 및 PreCreateWindow 재정의 PreCreateWindow 및 IsSubclassedControl 을 재정의하려면 해당 컨트롤 클래스 선언의 protected 섹션에 다음 코드 줄을 추가합니다. BOOL PreCreateWindow( CREATESTRUCT& cs ); BOOL IsSubclassedControl( ); 컨트롤 구현 파일(.CPP)에는 다음의 코드 줄을 추가하여 두 개의 재정의된 함수를 구현합니다. BOOL CSampleCtrl::PreCreateWindow( CREATESTRUCT& cs ) { cs.lpszClass = _T("BUTTON"); retu

BOOL vs. VARIANT_BOOL vs. BOOLEAN vs. bool

wafe's weblog  님의 블러그에서... MSXML을 쓰다보니 VARIANT_BOOL이라는 타입이 있더라. short로 typedef 되어 있는 타입이다. 평소엔 그냥 대충 썼는데 왜인지 오늘따라 이상하게도 궁금증이 발동해서 검색해보니 이런 글이 나온다. BOOL vs. VARIANT_BOOL vs. BOOLEAN vs. bool VARIANT_BOOL 타입에 넣는 값으로는 VARIANT_TRUE나 VARIANT_FALSE를 써야 한다. 지금까지 이런 상수가 정의되어 있는줄도 모르고 그냥 BOOL 쪽 값(TRUE, FALSE)으로 비교한다든지 하고 있었다. VARIANT_FALSE는 0이니까 그렇다쳐도 VARIANT_TRUE는 -1로 정의되어 있어서 겉으로 보이진 않지만 잠재적 문제가 코드에 들어있을 지도 모르겠다. -_-; 아무튼 참/거짓을 나타내는 방법이 다양하기도 하다. VARIANT_BOOL에 BOOL에 bool에 BOOLEAN이라는 녀석도 있었네? BOOLEAN이라는 타입은 처음 본다. 나는 왠만하면 bool 타입을 쓰는 편인데 C++ 언어에서 정해준 불리언 타입이기도 하고, 소문자라 BOOL 타입에 비해서 쓰기 편하기 때문이기도 하다 후후.

string object method

1. substring(start , count) => start 지점에서 count만큼의 문자열을 구합니다. !str = '/p' !m = !str.substring(1,1) 여기서 !m은 '/'를 나타냅니다. 2. replace => 문자열 교체 !str = '/p' !str = !str.replace('/' , ';') !str은 ';p'가 됩니다.

INST.를 생성하는 예

샘플 코드 $( INSTRUMENT를 TagNo 이름으로 생성한다. SPEC을 할당하고 이전의 PRIMITIVE에 붙인다. FLOW 방향으로 Distance만큼 이동한다. FLOW 방향을 축으로 주어진 각도만큼 회전시킨다. $) define method .CreateInst() !curSpecName = !this.optPipingSpec.dtext[ $!this.optPipingSpec.val ] new INST $!this.TagNo spref $!curSpecName $* SPEC 설정 conn to prev $* CONNECTION TYPE? move dist $!this.txtDistance.val $* Distance만큼 FLOW 방향으로 이동한다. var !aname name var !adir P1 dir rot thr $!aname about $!adir by $!this.txtAngle.val $* 주어진 각도만큼 회전한다. endmethod