본문 바로가기
Program/Python

Python :: 파이썬으로 Catia 접근 및 수정하기(win32com 모듈 이용)

by 시레엔 2018. 1. 31.
반응형

안녕하세요.

이번 포스팅은 저번 Excel 제어 포스팅에 이어서 Catia에 대한 제어 부분을 포스팅하려고 합니다.

사실상 아래 사진에서처럼 Excel보다는 많은 카테고리가 존재하며, 이에 따라 순차적으로 들어가야 할때 알아야 하는 부분이 많기 때문에 하나하나 다 알아보셔야하며, 오늘의 포스팅은 그 중에 일부만 진행하려고 합니다. 계속 이 포스팅을 진행할 경우에는 많은 카테고리에 대해서 자세히 설명할 계획이나 추후에 제가 어떤 프로그램을 만들지 아직까진 결정하지 못해서 기본적인 포스팅만으로 진행할 계획입니다.



Catia는 기본적으로 VBA(Visual Basic Application)이라는 코딩 프로그램을 기본으로 정의가 되어있습니다. 하지만, 이것도 앞에서 포스팅 했던 것과 같이 Win32com 모듈을 이용해서 똑같이 접근을 할 수 있습니다. 그래서 이번 포스팅에서는 win32com으로 Catia에 파트를 불러오는 방법과 Product에 추가하는 방법, 이동시키는 방법에 대한 부분을 포스팅을 하도록 하겠습니다.


#01 Catia 실행


CATIA=win32com.client.Dispatch("CATIA.Application")

CATIA.Visible=True


기본적으로 Catia 창을 실행시키고, 그것에 대해서 창을 보여달라라는 의미로 사용되는 코드입니다. 이것을 하나의 클레스(Class) 형태로 묶어서 실행하는 것이 가장 좋은 방법일텐데요. 그것을 하는 방법은 아래에 나타나 있는 코드를 보시는 것이 가장 적절할 것 같습니다. (사실상 제가 아직 Class에 대한 포스팅을 안해서 빠른 시일내에 포스팅을 진행할 수 있도록 하겠습니다.)


class Catia_exe(object):

def __init__(self):

self.client()

return

def __del__(self):

return

def client(self, _value_=True):

self.CATIA = win32com.client.Dispatch("CATIA.Application")

self.CATIA.Visible = _value_

return



위의 코드를 카티아 실행이라는 하나의 Class로 잡아서 실행하는 부분입니다. Import하는 것은 기존에 했던 것처럼 import win32com.client를 불러오면 될 것 같습니다.


#02 Part 및 Product 단계에서의 모델 불러오기


기본적으로 모델을 그려줄 수도 있지만, 불러오기를 통해서 배열에 대한 코딩을 진행할 것이기 때문에 각 만들어진 파트에 대해서 추가시키는 방법에 대해서 소개하려고 합니다.


ad=CATIA.Documents.Add('Product')

PR =ad.Product

PR.Products.AddComponentsFromFiles([r'C:\temp\Part1.CATPart'], 'All')


위에서 불러오는 것은 Product에 대해서 추가하는 부분과 그것에 대해서 Catia 파일을 어디서 불러올 것인지에 대한 코드입니다.

직관적으로 알 수 있는 부분이 많아서 따로 설명을 안해도 이해할 수 있을 것이라고 생각합니다.


#03 각 Part 이동시키기


파트를 불러오는 것도 여러가지 모델을 한번에 불러오면 기존에 그렸던 위치에 그대로 불러오게 됩니다. 그렇기 때문에 불러올때도 기본적으로 파트에 대한 이동을 시켜줘야하는데요. 그래서 도입한 것이 아래의 코드입니다.


PR.Products.Item(Part1.1).Move.MovableObject

coord = [1.0,0.0,0.0,

          0.0,1.0,0.0,

    0.0,0.0,1.0,

    10,

    10,

    10]

ad.Apply(coord)


Catia에서 동일 파일을 불러오게 되면 파일이름에 따라서 Part이름이 결정되고 불러오지는 순번에 따라서 뒤에 따라 다니는 이름이 바뀝니다. 예를 들어 설명하자면, Part1이라는 파일을 두번 불러오게 되면, Part1.1과 Part1.2라는 모델이 Catia에 순차적으로 만들어지는 것을 알 수 있습니다. 그래서 위의 코드는 그 중에 하나인 Part1.1을 이동시키기 위해서 만든 코드입니다. 그리고 그것을 이동시키기 위해서 Coord라는 Coordinate System, 즉 좌표계라는 이름으로 하나를 설정하고 붉은색은 x축의 벡터 방향과 x축의 이동거리에 대해서 적용해준 부분입니다. 벡터는 1.0, 0.0, 0.0이라는 것으로 적용을 시켰으며, 10은 이동거리를 나타냅니다. 그래서 위의 코드를 해석해본다면, 각 x,y,z,축은 기본 좌표계와 일치하며, x,y,z 방향으로 각각 10씩 이동시킨다고 생각하시면 될 것 같습니다.


코딩을 계속하면서 추후에 간단한 예제로 다시 포스팅을 할 수 있도록 하겠습니다.


반응형

댓글