반응형

정수(fixnum) -> string 변환,

실수(flonum) -> string 변환,

b = 2
formatted_num = sprintf(nil "%d" b)

a = 3.25
formatted_num = sprintf(nil "%f" a)

 

결과

 

 

문자열 -> 정수,실수 변환 아래 참고

https://ansan-survivor.tistory.com/714

 

[Cadence SKILL / LISP] string number(문자열 숫자)를 정수 또는 실수로 변환 시켜주기, atoi/atof 함수 사용

 atoi 함수  string -> 정수(fixnum) 변환  atof 함수  string -> 실수(flonum) 변환 a = "1" a = atoi(a) println(a) println(type(a)) b = list("1" "2" "3") (foreach (x) b println(atoi(x)) ) c = "0...

ansan-survivor.tistory.com

 

반응형
반응형

아래 함수를 실행시키면 자동으로 .form 함수가 만들어짐

 

; Created by 안산드레아스
;
; 폼 자동생성 함수
;
; 함수가 실행되면, 현재 디렉터리에 자동으로
; xxx.form 파일이 만들어진다.
;
;
; *주의* 함수명과 () 사이 반드시 띄어쓰기 해야함
;        (defun 함수명 ()
;        )
;

(defun CreateForm_File ()

   ; 가변적으로 크기가 변할 때 사용
   ;
   ; Port_Size=7
   ; (foreach Item Etch_Layers
   ;    Port_Size = Port_Size + 1
   ; ); end foreach Item Etch_Layers

   ; outfile으로 파일 생성, FORM파일을 쓰기 위한 포트 열기
   Create_Form_Port = outfile("./unit_convert.form" "w")

   fprintf(Create_Form_Port "FILE_TYPE=FORM_DEFN VERSION=2\n")
   fprintf(Create_Form_Port "FORM\n")
   fprintf(Create_Form_Port "FIXED\n")
   fprintf(Create_Form_Port "PORT 45 8\n")
   fprintf(Create_Form_Port "HEADER \"Convert Units\"\n\n")

   fprintf(Create_Form_Port "TILE\n\n")

   fprintf(Create_Form_Port "TEXT \"Input :\"\n")
   fprintf(Create_Form_Port "TLOC 13 6\n")
   fprintf(Create_Form_Port "ENDTEXT\n\n")

   fprintf(Create_Form_Port "TEXT \"Output :\"\n")
   fprintf(Create_Form_Port "TLOC 13 9\n")
   fprintf(Create_Form_Port "ENDTEXT\n\n")

   fprintf(Create_Form_Port "FIELD mil_to_mm\n")
   fprintf(Create_Form_Port "FLOC 1 1\n")
   fprintf(Create_Form_Port "CHECKLIST \"mil -> mm\" \"label1\"\n")
   fprintf(Create_Form_Port "ENDFIELD\n\n")

   fprintf(Create_Form_Port "FIELD mil_to_mm\n")
   fprintf(Create_Form_Port "FLOC 1 3\n")
   fprintf(Create_Form_Port "CHECKLIST \"mm -> mil\" \"label1\"\n")
   fprintf(Create_Form_Port "ENDFIELD\n\n")

   fprintf(Create_Form_Port "FIELD inputbox\n")
   fprintf(Create_Form_Port "FLOC 20 6\n")
   fprintf(Create_Form_Port "STRFILLIN 8 25\n")
   fprintf(Create_Form_Port "ENDFIELD\n\n")

   fprintf(Create_Form_Port "FIELD calc\n")
   fprintf(Create_Form_Port "FLOC 9 11\n")
   fprintf(Create_Form_Port "MENUBUTTON \"Calculate\" 10 3\n")
   fprintf(Create_Form_Port "ENDFIELD\n\n")

   fprintf(Create_Form_Port "FIELD cancel\n")
   fprintf(Create_Form_Port "FLOC 20 11\n")
   fprintf(Create_Form_Port "MENUBUTTON \"Cancel\" 10 3\n")
   fprintf(Create_Form_Port "ENDFIELD\n\n")

   fprintf(Create_Form_Port "ENDTILE\n")
   fprintf(Create_Form_Port "ENDFORM\n")
   ; FORM 파일의 포트를 닫기
   close(Create_Form_Port)
   Create_Form_Port = nil
); end 

; 위에서 만든 .form 파일을 자동으로 생성
CreateForm_File()
반응형

함수실행시, 아래 파일이 만들어짐.

열어보면,

 

반응형
반응형

 

윈도우 Shell을 이용할수있는 함수는 대표적으로 3가지가 있다. 셋다 거의 같거나 비슷해서 아무거나 사용가능

 

1. sh()

2. shell()

3. system()

 

우리가 cmd창에서 쓰는것과 같이 이함수를 이용하면 똑같이 Window OS Shell을 Allegro PCB 툴 내에서 접근할 수 있다.

아래는 window Shell로 프로그램을 실행시킨 예제다.

notepad : 메모장실행

calc : 계산기 실행

control : 제어판 실행

이를 Allegro PCB에서 SKILL코드로 실행시켜본다.

 

1. sh( )함수로 메모장 실행시켜보기

 

 

2. shell( )함수로 계산기 실행시켜보기

 

3. system( )함수로 제어판 실행시키기

 

background로 이용하고 싶을때는 >start /B "~~.exe"

반응형
반응형

아래와 같이 Show Element를 하면 해당 via의 속성이 나온다.

Via의 속성은 아래와 같이 적용할 수 있다.

여기에 저장된 값을 스킬코드로 보고자 할때,

반응형
axlClearSelSet()
axlSetFindFilter(?enabled `("NOALL" "VIAS") ?onButtons `("NOALL" "VIAS"))

; via의 좌표값
axlAddSelectPoint(41:57)

viasdbid = axlGetSelSet()
axlClearSelSet()

(foreach eachdbid viasdbid

	; via의 속성값 출력
	via_prop = axlDBGetProperties(eachdbid)
	println(via_prop)

)

(결과)

스킬을 로드하면 해당 Property가 출력된다.

 

반응형
반응형

List 내의 String 갯수를 파악해주는 함수

(결과)

각 문자가 몇개 들어있는지 확인하여 그 갯수를 리턴했다.

 

 

 

반응형
반응형

 

 

1. cadence 기본 설치 폴더인 C:\Cadence 에 setup 이라는 폴더 만들기

2. setup 폴더 내 skill 이라는 폴더 만들기

3. 시스템 환경변수에 ALLEGRO_PCBENV 라는 변수 등록하고 path 설정하기

찾기에 : "환경변수" 라고 입력하면, 시스템환경변수편집 이 나온다.

 

시스템변수에서 New - 위와 같이 환경변수 

 

4. C:\Cadence\setup 에 'allegro.ilinit' 라는 파일을 만들고 아래와 같이 코드 입력 후 저장

setSkillPath(buildString(append1(getSkillPath() "c:/Cadence/setup/skill" )))
  foreach(dir getSkillPath()
    when(isDir(dir)
           foreach(file rexMatchList("\\.il$" getDirFiles(dir))
        when(
           printf("Loading Skill file: %s\n" file)
           load(file)
      )
    )
  )
)

5. C:\Cadence\setup\skill 에 내가 시작할때 실행하고자 하는 skill 파일을 놓는다.

    테스트로 hello를 3번하는 skill 파일을 넣었다.

 

6. Allegro PCB를 켜면, 바로 스킬코드가 동작한다.

 

다음 영상을 참조했다

www.youtube.com/watch?v=9pjQoK3KBR4&feature=emb_logo

 

만약 여기에 Allegro 메뉴바를 만드는 SKILL코드를 넣으면 자동으로 메뉴가 불러와진다.

만드는 방법은 아래에...

ansan-survivor.tistory.com/326

 

[Cadence Allegro SKILL] OrCAD PCB / Allegro PCB 사용자 정의 메뉴 만들기

아래 코드를 실행시켜보면 상단에 간단한 My Menu가 생긴다. 메뉴를 아래로 내려보면, menu1 ~ menu3 까지 있고, 해당 버튼을 눌렀을 때 뒤에있는 menu_one 커맨드가 실행된다. google 버튼을 누르면 해당

ansan-survivor.tistory.com

 

 

반응형
반응형

아래 코드를 실행시켜보면 상단에 간단한 My Menu가 생긴다.

 

메뉴를 아래로 내려보면, menu1 ~ menu3 까지 있고, 해당 버튼을 눌렀을 때 뒤에있는 menu_one 커맨드가 실행된다.

google 버튼을 누르면 해당 사이트가 열린다.

google 버튼을 누를때
나머지 메뉴를 누를때

커맨드는 axlCmdRegister 라는 함수로 등록할 수 있으며, 

저 mymenu 라는 커맨드가 실행되면, 뒤에있는 my_menu라는 함수가 실행하게 된다.

고로 my_menu라는 함수로 내가 원하는 기능을 만들면 된다.

반응형
반응형

 

리스트내 값을 변경하기 위한 함수로, rplacarplacd 두개의 함수가 필요하다.

맨앞의 값만 변경
앞을 뺸 나머지를 변경

테스트

결과

반응형
1234567···9

+ Recent posts