• [Automation/Exp] ExpeditionPCB에서 단축키의 사용

    ExpeditionPCB는 간단한 조작으로 단축키를 지정할 수 있습니다.   아래와 같이 여러 가지 단일 키 또는 키의 조합으로 단축키를 지정할 수 있는데, F1-F12 나 단일 키는 일반적인 사용에 문제를 일으킬 수 있으므로 가급적 사용하지 않는 것이 좋습니다.     <key>   Alt+<key>   Ctrl...
    nick_hong
    last modified by nick_hong
  • [NSE] Symbol Editor에서 Symbol의 Pin들에 대해 Pin Color 일괄 변경하기

    Symbol에 대해 모든 Pin Color를 일괄 변경하는 tcl script입니다. 응용하여 다른 pin property도 변경할 수 있습니다.     첨부 NSE_change_pin_color_150828.tcl 파일을 C:\WDIR_VX1_1폴더에 위치시킵니다 편집기로 파일을 열어 아래 부분에 원하는 Color로 지정 후 save합니다. *Color Cod...
    kate_lee
    last modified by kate_lee
  • [NSE] Symbol Editor에서 모든 Pin들에 Pin Property 추가하기

    Symbol Editor의 Colsol Window 에서 실행할 수 있는 tcl 명령파일입니다.   Symbol Editor의 Consol Window에 아래와 같이 입력하고 엔터를 누릅니다. 경로는 다를 수 있습니다. 주의할 점은 아래와 같이 경로구분자를 두개씩 입력해야합니다. source C:\\script_training\\Library\\NSE_port_numb...
    kate_lee
    last modified by kate_lee
  • "Editor Control>Pad Entry>Allow via under pad"를 변경하는 스크립트 짜기 (2/3)

    이번에는 Pad Entry 관련된 Property에 대해 각각 MsgBox로 결과값을 표시하여 확인해보도록 하겠습니다.   의도하는 바에 따라 스크립트의 내용을 아무리 변경하더라도, 아래 박스 안의 내용 중 위쪽 부분과 아래쪽 "ValidateServer" 부분은 절대 변경할 일이 없습니다. 따라서 "본문" 부분만 변경해가면서 완성해나갈 것입니다. Header 1 Opti...
    kate_lee
    last modified by kate_lee
  • "Editor Control>Pad Entry>Allow via under pad"를 변경하는 스크립트 짜기 (1/3)

    안녕하세요?   Pad Entry 옵션을 설정하는 메뉴는 두 가지로 접근할 수 있습니다. 한가지는 Editor Control>Pad Entry>Allow via under pad 메뉴, 두번째는 Smart Utilities>Pad Entry Assistant.. 메뉴입니다. 그런데 일반 보드 설계시, 레이아웃 상에 정의된 pad type과 via span이...
    kate_lee
    last modified by kate_lee
  • mask engine을 이용한 Object 면적계산

    User Draft Laters에 있는 Object의 면적을 계산 하고자 합니다. 이때 Line이 있는 경우에 에러가 발생 하는데요. Line을 포함하여 계산 하려면 어떻게 해야 될까요?   Set maskColl = pcbDoc.UserLayerGfxs(epcbSelectAll, "MASK1") Set maskUs = mskeng.Masks.Add Set shapes...
    dr.hong
    last modified by dr.hong
  • 간단한 질문 드립니다. - vbscript에서 'Set'의 사용

    아래 예제와 같이 어떤 변수는 Set으로 정의하고 어떤 변수는 Set 없이 사용하는데 차이점이 뭔가요?       Set mskeng = CreateObject("MGCPCBEngines.MaskEngine")     Scripting.AddTypeLibrary ("MGCPCBEngines.MaskEngine") ...
    dr.hong
    last modified by nick_hong
  • Expedition PCB Replace Cell Form

    Combobox 2개와 Button 하나로 구성된 Form의 Script 입니다. Test 했을 때 동작은 하지만 동작 속도가 조금 느린것 같습니다. 속도를 개선 할 수 있는 방법이 있을까요?   Dim pcbApp : Set pcbApp = Application Dim pcbDoc : Set pcbDoc = pcbApp.ActiveDocument Dim pcbCmd ...
    dr.hong
    last modified by nick_hong
  • [Report Writer] Library Manager의 Parts Database에서 부품 - property 목록 추출

    Central Library에 입력되어 있는 부품 전체에 대해 부여된 property 들을 파악하고자 할 때에는, Report Writer를 사용하거나 Automation script를 통해 필요한 정보를 출력하도록 할 수 있습니다.     Automation script 를 사용하는 방법은 'Automation and Scripting' 커뮤니티에 script 예제...
    nick_hong
    last modified by nick_hong
  • [Automation/All] Form Editor를 사용하여 GUI 작성 시 사용자 조작에 의해 화면 내용이 즉시 바뀌도록 처리

    DxDesigner, ExpeditionPCB 등에서 Automation Script를 작성할 때에 GUI가 필요하다면 Form Editor 를 사용하여 쉽고 간단하게 구현할 수 있습니다.   Form Editor는 어떤 GUI 구성 요소가 담고 있는 내용이 사용자의 조작에 의해 실시간으로 변경되도록 구성할 수 있는 event 도 지원합니다. 이 예제에서는 두 개의 항목을 ...
    nick_hong
    last modified by nick_hong
  • [Automation/All] vbscript에서 파일,폴더의 처리

    Automation script를 작성할 때에 디자인 내의 정보를 파일로 출력하거나 파일로부터 읽은 정보를 디자인에서 활용하는 등 파일입출력을 활용해야 할 경우가 종종 발생합니다.   특히 수집한 정보를 파일에 쓰고자 할 때에 파일을 생성할 위치의 폴더가 존재하지 않으면 script 에러가 발생하므로, 파일에 쓰기 전 미리 폴더를 준비하는 구문이 필요합니다.   &#...
    nick_hong
    last modified by nick_hong
  • [Automation/All] vbscript에서 공용함수를 별도 파일에 보관하고 include 처럼 불러쓰기

    사용하는 script가 많아질 수록 공통으로 사용되는 자신의 함수를 공통 파일로 관리하면 편리합니다.   vbscript에서는 ExecuteGlobal 을 통해 문자열 변수에 보관된 내용을 실행할 수 있습니다. 특히 ExecuteGlobal 명령은 함수(function 또는 sub) 내에서 실행할 경우에 함수 정의가 포함된 내용이 포함되어 있더라도에러가 발생하지 않습니다. &...
    nick_hong
    last modified by nick_hong
  • [Automation/All] vbscript에서 배열(array) 변수 다루기

    Automation에서 자주 활용되는 vbscript 언어는 배열변수의 크기에 변화를 주면서 정보를 저장시킬 수 있습니다.   회로도나 PCB 데이터로부터 부품정보를 하나씩 수집하거나, net 정보, trace 정보를 수집하여 조건에 맞는 것들만 filtering 시키면서 보관하려 할 때에는 특히 몇 개가 수집될 지 미리 예측/결정할 수 없으므로 배열변수의 크기를 늘려가면서 ...
    nick_hong
    last modified by nick_hong
  • [Automation/DxD] DxDesigner에 자신의 custom menu 추가

    ExpeditionPCB에서와 마찬가지로, DxDesigner에도 CommandBars 컬렉션을 사용하여 상단의 메뉴를 추가하거나 삭제할 수 있습니다.   단, DxDesigner는 CommandID 의 개념이 없으므로, built-in되어 있는 메뉴를 ID로 호출할 수 없는 차이가 있습니다.   첨부된 DxDMenu.vbs 는 간단히 DxDesigner의 "She...
    nick_hong
    last modified by nick_hong
  • [Automation/Exp] 디자인에 User Layer 추가 또는 초기화

    ExpeditionPCB에서 특정 user layer에 디자인 정보나 특정 문구를 자동으로 넣도록하는 Automation utility를 작성한다면 user layer를 생성(또는 초기화)하는 작업이 가장 선행되어야 할 것입니다.   첨부된 script를 실행하면 사용자 입력을 받아 PCB 디자인에 user layer를 생성하거나, 이미 존재하는 user layer라면 경고 ...
    nick_hong
    last modified by nick_hong
  • [Automation/DxD] DxDesigner에서 현재 열려 있는 project와 연결된 pcb path 확인

    DxDesigner의 Automation에서 Application.GetProjectData로 얻을 수 있는 ProjectData Object를 통해 project와 관련된 다양한 정보에 접근할 수 있습니다.   한 가지 고려해야 할 점은, DxDesigner에서는 하나의 project에 여러 개의 board를 구성하여 각각 pcb data를 별도로 연결할 수 있습니다. (아...
    nick_hong
    last modified by nick_hong
  • [Automation/Exp] ExpeditionPCB에서 현재 열려 있는 PCB도면과 연결된 project path 확인

    ExpeditionPCB의 Automation에서 Document.Environment 로 얻을 수 있는 Environment Object는 아래와 같이 도면의 환경과 관련된 다양한 property를 갖고 있습니다.     Property Description CentralLibraryFullName Returns the name and path of the C...
    nick_hong
    last modified by nick_hong
  • [Automation/All] vbscript에서 WMI를 이용하여 Windows의 작업(process)에 접근하기

    Microsoft Windows는  WMI 서비스를 이용하여 OS에서 일어나고 있는 작업들에 접근하고 관리할 수 있도록 해 줍니다. * WMI: Windows Management Instrumentation   예를 들어, 현재 OS에서 실행 중인 process들과 상세 정보를 파악하거나, 필요하다면 특정 process를 중지(terminate)시킬 수도 있습니다....
    nick_hong
    last modified by nick_hong
  • [Automation/All] Automation script를 실행하는 방법

    Automation script를 실행하는 방법은 근본적으로 internal 방식과 external 방식두 가지가 있습니다.   Internal 방식은 컴퓨터의 프로세스를 공유하기 때문에 처리속도가 매우 빠른 장점이 있지만, 실행하면서 다양한 옵션을 처리하고자 할 때에 argument에 의한 처리를 할 수가 없습니다.   External 방식은 별도의 독립 프로세스...
    nick_hong
    last modified by nick_hong
  • [Automation/DxD] 회로도에 사용된 Reference Designator의 prefix가 library의 정의를 지켰는 지 확인

    DxDesigner에서는 각 부품의 reference 속성을 관리할 때에 원본이 되는 library 정의 값을 기억하고 있는 것을 활용한 것입니다.   Script를 실행하면 회로도의 모든 sheet에 있는 부품들에 현재 주어진 reference designator가 library에서의 prefix정의를 따른 것인 지 확인하여 아래 그림과 같이 결과를 보여줍니다.  ...
    nick_hong
    last modified by nick_hong