본문 바로가기
  • 환영 합니다 ! Welcome!
VBA For Creo

#1 VB API / 개발 환경 설정

by ToolBOX01 2020. 11. 29.
반응형

PTC는 VB 인터페이스(VB.NET / VBA)를 무료 개발 할수 있는 도구를 제공 합니다. 다른 무료, 유료 개발 도구에 비해 기능이 제한되어 있습니다.VB.NET 프로그램은 Creo 세션의 내부 구성 요소에 액세스하여 모델을 사용자 정의 할 수 있습니다. 객체 지향 프로그래밍 도구 인 VB를 통해 Creo 사용자는 Creo 및 Windchill의 기능을 확장 하거나, 사용자 정의 및 자동화 할 수있는 강력한 도구를 개발 할수 있습니다.

 

개발 도구별 기능 비교

 

VBA는 MS Office 도구와 매우 쉽게 통합되며 PTC Foundation Class (PFC) 패키지의 일부입니다. VB / Weblink는 API 기능을 제한적으로 제공 하지만, 무료 이고, 확장성이 뛰어나며. 유료 API (Toolkit)로 개발한 프로그램을 VB 또는 Weblink에 가져와서 이용 할수 있습니다. Creo Parametric 용 VB API는 Visual Basic.NET (VB.NET), VBA (Visual Basic for Applications) 및 스크립팅을 사용하는 외부 Internet Explorer 인스턴스를 비롯한 모든 COM 지원 응용 프로그램에서 사용할 수있는 비동기 응용 프로그램을 개발 할수 있습니다.

 

주의] 

VB.NET 과 VBA는 다른 언어 입니다.  VBA는 스크립트 언어 입니다. VBA는 컴파일을 하지 않습니다.

VBA는 오피스 프로그램에 포함 되어 있습니다.

 


Visual Basic for Applications (VBA) 란?

VB API는 Microsoft Excel, Microsoft Word 또는 Microsoft Access와 같은 MS 제품에서 
Creo Parametric에 액세스하기위한 지원을 제공합니다. Creo Parametric을 비동기식으로 제어하고 
PFC(PTC Foundation Class) API를 사용하여 해당 속성에 액세스하기 위해 COM 인터페이스가 제공됩니다. 

Creo Parametric에 포함 된 OLE 객체의 데이터에 액세스 할 수도 있습니다. OLE 개체에는 개체가 포함 된 모델을 
구동하는 데 사용할 수있는 VB 코드가 포함될 수 있습니다. 

 

더보기

Pro / Toolkit : 이것은 정말 강력한 일을 할 수있는 진지한 응용 프로그램을 만드는 데 큰 역할을합니다. ModelCHECK 및 GD & T Advisor와 같은 많은 기존 Creo 모듈은 Pro / Toolkit 응용 프로그램으로 시작되었습니다. C, C ++ 및 Java로 작성할 수 있으며 이를 위해서는 PTC의 툴킷 개발자 라이센스가 필요합니다.

CREOSON : 이것은 실제로 PTC 제품이 아니라 J-Link API를 사용하여 프로그램에 요청을 보내는 중립 언어 인 JSON을 사용하여 Creo와 통신하는 오픈 소스 소프트웨어입니다. CREOSON을 사용하여 Creo를 제어하기위한 Python 함수 라이브러리가 있습니다.

 

Creo VB API 사용 이점

  • 개발자 라이선스가 필요하지 않습니다. 라이선스 비용이 필요 하지 않습니다.
  • 이미 필요한 소프트웨어 (모든 MS Office 프로그램)를 사용하고 있습니다.
  • Creo뿐만 아니라 MS Word 또는 Excel과 같은 소프트웨어에도 액세스 할 수 있습니다. 수많은 유용한 기능에 액세스할 수 있고, Creo에서 Excel로 BOM을 내보내는것, 일련의 Creo 파일에서 스크린 샷, 측정 및 매개 변수 값을 사용하여 Powerpoint 프레젠테이션을 생성 또는 조임 토크 및 BOM에 대한 데이터를 자동으로 수집하고 Creo 도면에서 분해도를 삽입하는 기술 지침이 포함 된 Word 문서등을 만들수 있습니다.

 

더보기

VB API (라이브러리)

VB API는 비주얼 애플리케이션을위한 1) Basic.NET (VB.NET), 2)비주얼 베이직 (VBA) 및 스크립팅으로
응용 프로그램으로 개발할 수 있는 비동기 응용 프로그램 도구 입니다.

 

1) Visual Basic.NET으로 수행 가능 

• 그래픽이 아닌 Creo Parametric 을 시작하거나 연결할 수있는 VB.NET 양식을 생성하여 사용자 입력을
  수용하고 모델 수정 또는 결과물을 유도합니다. Creo를 Background로 실행

• 고유 한 UI (사용자 인터페이스)가 있거나 없을 수있는 VB.NET 응용 프로그램을 만듭니다. 응용 프로그램은
  세션에서 하나 이상의 Creo Parametric UI 또는 이벤트 리스너를 설정하고 VB.NET 코드를 사용하여 해당
  이벤트를 처리 할 수 있어야 합니다.

 

2) Visual Basic for Applications 수행 가능

 마이크로 소프트 엑셀 , 마이크로 소프트 워드 , 또는 Microsoft Access는 Visual Basic for Applications
  사용 할수 있습니다. Creo Parametric을 비동기식 으로 제어 하고 PFC API를 사용하여 해당 속성에 액세스
  하 기 위해 COM 인터페이스가 제공됩니다 .

 Creo Parametric에 포함 된 OLE 객체의 데이터에 액세스 할 수도 있습니다 . OLE 개체에는 개체가 포함 된 
  모델을 구동하는 데 사용할 수있는 VB 코드가 포함될 수 있습니다.

 

VB API의 한계
비동기 COM 서버에는 다음과 같은 제한이 있습니다.
•  Creo Parametric에 대한 API 호출 은 단일 스레드에서만 이루어져야합니다. 다른 스레드는 Creo Parametric
   이외의 데이터를 처리 하고 Creo Parametric 스레드에서 볼 수 있도록 데이터를 설정할 수 있지만 하나의
   스레드 만 Creo Parametric 과 통신 할 수 있습니다. - Creo 프로그램을 반드시 1개만 실행 해야 합니다.


•  한 번에 하나의 Creo Parametric 세션에 대한 활성 연결 만 만들 수 있습니다.
    - 여러개의 창에 Creo 파일을 open 할수 있지만, 개발된 응용 프로그램은 "활성화"된 창에서만 실행 됩니다 

 


> Creo VB 개발을 위한 환경 설정 하기 <

 

1. Creo에서 VB API 설치

Creo를 설치 할때 설치 옵션으로 VB API를 선택 합니다.

 

VBA 설치

Creo에 VB API가 설치되어 있는지 확인해야합니다. 반드시 Creo를 설치 할때 선택 합니다. 가장 쉽게 확인하는 방법은 Creo 설치 폴더로 이동 한 다음 Common Files 폴더를 열고 "vbapi"라는 폴더를 찾는 것입니다. 찾을 수 없다면 VB API가 설치되어 있지 않습니다. Creo를 다시 설치하고 설치 중에 해당 확인란을 선택해야합니다

 

메뉴얼 및 API

 

여기에는 PDF 형식의 사용자 가이드 (vbug.pdf), 일부 VB 앱 및 예제, HTML 형식의 사용자 가이드 (vbapidoc \ index.html) 등 몇 가지가 있습니다. PDF 버전의 사용자 가이드는 작업을 처리하는 데 더 유용하고 HTML 버전은 다른 기능을 찾는 데 더 유용합니다. 또한 API와 함께 제공되는 대부분의 예제 앱은 VBA가 아닌 VB.NET으로 작성 되었습니다. 

 

 

2. Window 에서 VB API Path 설정

VB API를 통해 CREO와 MSExcel 연결 하려면 다음과 같이 PATH 설저이 필요 합니다.

1. PRO_COMM_MSG_EXE 환경 변수를 실행 파일 pro_comm_msg.exe 의 전체 경로로 설정합니다 .
   위치 : <creo_loadpoint> \ Common Files \ <datecode> \ <머신 유형> \ obj \ pro_comm_msg.exe .
   여기서 머신 유형 폴더는 32 비트 Windows의 경우 i486_nt이고, 64 비트 Windows 설치의 경우 x86e_win64입니다.

   이 작업을 수행하려면 MS Windows에서 제어판 을 찾은 다음 시스템, 고급 탭, 환경 변수를 차례로 선택하고,
   새 항목 추가 PRO_COMM_MSG_EXE 값 텍스트 상자의 내용으로 앞서 설명한 경로를 사용합니다.

   아래 내용을 참고하여, 설정 하십시요   

더보기

pro_comm_msg_exe 경로 설정 순서

1. 제어판>시스템 및 보안>시스템 > 설정변경을 클릭 합니다.

설정변경

2. 고급 > 환경 변수 클릭

 

3. 환경 변수 추가

  1) PRO_COMM_MSG_EXE = D:\PTC\Creo 4.0\M020\Common
                                            Files\x86e_win64\obj\pro_comm_msg.exe

PRO_COMM_MSG_EXE 설정

2)  Creo 실행을 VB 백그라운드로 실행 하여면 Path 설정이 필요 합니다. 

       PRO_DIRECTORY = D:\PTC\Creo 4.0\M020\Parametric

PRO_COMM_MSG_EXE 설정

* 주의] 사용자 환경 영역 추가합니다. 시스템 영역에 추가 하면 연결 오류가 발생 하는 경우가 있습니다.
                 위 그림은 잘못 되었습니다. ㅜㅜ

 

2  COM 서버를 등록합니다.
   이렇게하려면 <creo_loadpoint> / Parametric / bin에 있는 " vb_api_register.bat "파일을 실행하십시오 . 
   이제 응용 프로그램이이 API의 명령을 사용하여 Creo를 호출하려고 할 때마다 서버가 자동으로 시작됩니다.

더보기

Registering the COM Server 등록

Web-Link와 유사하게 COM 서버로 구현되지만 (흥미롭게도) DLL이 아닙니다. VB API 응용 프로그램이 실행되는 
동안 "pfclscom.exe"라는 실행 파일이 시작되고 백그라운드에서 실행됩니다. 이것은 큰 제한을 도입합니다.

Ceo 세션이 여러 개 있더라도 한 번에 하나의 VB API 프로그램 만 실행할 수 있습니다. 두 번째 VB API 응용 프로그램을 시작하려고하면 첫 번째 VB API 응용 프로그램이 계속 연결되어 있으면 Croe 세션에 연결할 수 없습니다.

첫 번째 애플리케이션의 연결이 끊기면 두 번째 연결이 성공합니다. 하나의 Croe 프로세스에 동시에 여러 개의 비동기 Creo 응용 프로그램을 연결할 수 없는 특성을 가지고 있습니다. 유료 라이선수인  "Creo / Toolkit" 은 가능 합니다.

COM 서버를 등록하려면 <creo_loadpoint> / Parametric / bin에있는 vb_api_register.bat 파일을 실행하십시오. 
COM 서버 등록을 취소하려면 <creo_loadpoint> / Parametric / bin에있는 vb_api_unregister.bat 파일을 실행하십시오.

COM 서버가 시스템에 등록되면 응용 프로그램이이 서버에 포함 된 유형에 액세스하려고 할 때마다 서버가 자동으로 시작됩니다. 기본적으로 Windows는 Windows 시스템 디렉터리 (c : \ winnt \ system_32)에서 pfclscom.exe와 같은 서비스를 시작합니다. 또한 서버는 프로세스 작업 디렉토리에서 Creo Parametric의 새 세션을 시작하므로 서버 실행 디렉토리를 제어 할 수 있습니다. 시스템 환경 변수 PFCLS_START_DIR을 컴퓨터의 기존 디렉터리로 설정하여 특정 디렉터리에서 시작하도록 서버를 구성 할 수 있습니다.

3. Setting Project References For the VB API

프로젝트를 통해 Creo Parametric 용 Creo Parametric VB API 유형 라이브러리에 대한 참조를 설정합니다. 
VBA 환경에서이 참조를 다음과 같이 설정하십시오. 개발 버전의 CREO와 사용자 CREO 버전이 다른 경우
CREO VB API 버전을 변경 하여 사용 합니다.

 

도구 > 참조

 

4. 개발 환경 설정 테스트

현재 활성화된 Creo 파일 이름을 입력 하는 프로그램 입니다. CREO를 실행하고, CREO 파일을 OPEN 합니다.

첨부된 엑셀 파일을 "새로 고침"을 클릭 합니다

Current File Open v1.xlsm
0.02MB

 


연결 오류 증상

샘플 엑셀 파일 실행 오류가 발생한 경우- 연결 오류

1)  "CCpfcAsyncConnection.Start () 및 CCpfcAsyncConnection.Connect ()는 VB API 응용 프로그램을 통해
     Creo를
시작 / 연결하는 동안 pfcExceptions :: XToolkitGeneralError를 반환합니다. "

2) 일정한 시간이 지나면 연결 오류가 발생하는 문제가 있습니다

오류 원인
PRO_COMM_MSG_EXE 환경 변수가 설정되지 않았거나 잘못된 값으로 설정되었습니다.
PTCNMSPORT 환경 변수로 설정된 포트를 사용할 수 없거나 방화벽에 의해 차단되었습니다.

오류 해결 방안
1. PRO_COMM_MSG_EXE 환경 변수가 올바른 값으로 설정되어 있는지 확인하십시오 . 
   경우에 따라 시스템 변수가 아닌 사용자 변수 에서 설정해야합니다. (별다른 효과가 없었다)

2. PRO_COMM_MSG_EXE 환경 변수가 올바른 값으로 설정되어 있는지 확인하십시오 . 경우에 따라 시스템 변수가 
   아닌 사용자 변수 에서 설정해야합니다 .PRO_COMM_MSG_EXE 값에 포함 된 빈 공간 디렉토리 이름 을 
   동등한 DOS 표기법으로 바꿉니다. (별다른 효과가 없었다)
예 :  "C : \ Program Files \ proeWildfire 4.0"에 해당하는 DOS 표기법은 "C : \ PROGRA ~ 1 \ PROEWI ~ 1.0"입니다.

3. 포트를 변경 하였습니다.  아래 "Description"내용참조
    - 현재 까지 오류 증상이 나타나지 않았습니다

 

더보기

Description
-----------
Upon launching Pro/ENGINEER or application manager, the
following error message is received "Error: port is busy".
This message appears when the PTC application tries to start
the nmsd process. The nmsd process uses the port 1239 as
the default port value. If this port is being used by another
application, nmsd will not start.

Another test for this condition is to check the processes running
after the error has occurred using the UNIX ps -ef command or
the NT task manager and make sure nmsd is not running.

The ports that are currently being used can be listed using the
command % netstat -a

See TechDoc 31629 for more details on netstat command.


Alternate Technique
-------------------

See Resolution Below

Resolution
----------

The port that is being used by the nmsd process can be changed
by setting an environment variable PTCNMSPORT to a port number
other than the default port (1239).

On UNIX:

% setenv PTCNMSPORT 7763
(in this example the value 7763 is an arbitrary number that can be changed to any free port number)
This environment variable will need to be set everytime Pro/ENGINEER or
Application manager is started. It can be set in the Pro/ENGINEER startup
script or in a .cshrc file.


On NT:

# Start
# Settings # Control Panel # System # Environment Tab
Define a new System variable.
Variable: PTCNMSPORT Value: 7763
(in this example the value 7763 is an arbitrary number that can be changed to any free port number)
# Set
# Apply # OK

 

 

CS53658 - CCpfcAsyncConnection.Start() and CCpfcAsyncConnection.Connect() returns pfcExceptions::XToolkitGeneralError while laun

A PTC Technical Support Account Manager (TSAM) is your company's personal advocate for leveraging the breadth and depth of PTC's Global Support System, ensuring that your critical issues receive the appropriate attention quickly and accurately.

www.ptc.com

 

비지니스 관련 문의 : lionkk@idt21c.com