이 글은 Yorik Van Havre가 지은 "FreeCAD A Manual" 문서 중 "creating interface tool" 을 따라한 내용을 기록하였다.
파이썬 프로그램을 개발할 경우 기존 파이썬 콘솔을 텍스트 화면으로 이용하여 간단한 사용자 입력 환경을 구현한다.
하지만 FreeCAD의 경우 파이썬 콘솔 페널이 기존 파이썬 셀처럼 항시 사용할 수 없다.
그러므로 FreeCAD에서 안정적으로 사용자 입력 환경을 가져가기 위해서 FreeCAD의 사용자 환경을 만든 공개 소프트웨어인 Qt 모듈을 이용해야 한다.
다음은 Length, Width 그리고 Height 입력을 받아 3차원 Box를 그려주는 간단한 FreeCAD 파이썬 프로그램의 제작 과정의 기록이다.
https://www.qt.io/download-open-source 에서 Qt 개발 환경인 Qt Creator를 다운로드하여 인스톨 후 실행시킨다.
새로운 파일을 생성한다.
FreeCAD에 연동할 Qt Form으로써 Qt Desiner Form을 선택한다.
Form Template 중 "Dialog without Bottons"를 선택한다. Accept(확인)와 cancel(취소) 버튼은 FreeCAD에서 자동으로 추가해 준다.
앞으로 정의한 form의 위치를 확인 후 저장한다.
Project Management 부분은 그대로 두고 Finish를 누른다.
아무것도 없는 Form이 생성된다.
"Label" 위잿을 선택하여 캔버스에 끌어다 놓는다. 두 번 클릭하여 출력이름을 바꿀 수 있다.
자동으로 레이아웃을 잡을 수 있도록 Layout in a Grid를 선택한다.
입력을 받기위해 "Double Spin Box" 위젯을 끌어다 놓고 suffix 속성에 mm를 입력한다.
"Double Spin Box" 위잿을 선택하고 Object Name을 지어준다. Object Name에 사용자 입력이 저장된다.
완성된 Form을 저장한다.
FreeCAD를 실행하고 매크로 > 매크로.. 를 선택하고 새로운 매크로를 만든다.
qttest 매크로에 아래 코드를 입력한다.
import FreeCAD,FreeCADGui,Part
# change the \ to / path_to_ui = "C:\Users\user\Documents\dialog.ui"
path_to_ui = "C:/Users/user/Documents/dialog.ui"
class BoxTaskPanel:
def __init__(self):
# this will create a Qt widget from our ui file
self.form = FreeCADGui.PySideUic.loadUi(path_to_ui)
def accept(self):
length = self.form.BoxLength.value()
width = self.form.BoxWidth.value()
height = self.form.BoxHeight.value()
if (length == 0) or (width == 0) or (height == 0):
print("Error! None of the values can be 0!")
# we bail out without doing anything
return
box = Part.makeBox(length,width,height)
Part.show(box)
FreeCADGui.Control.closeDialog()
panel = BoxTaskPanel()
FreeCADGui.Control.showDialog(panel)
문서의 코드에 windows 식 패스 표현을 linux 형식으로 바꾸지 않으면 오류가 발생한다(본인의 FreeCAD 설정에서).
path_to_ui의 패스를 linux 형식으로 바꾸고 매크로를 실행시키면 왼쪽 "작업" 창에 정의한 dialog.ui를 사용한 파이썬 프로그램이 실행된다.
다이얼로그에 Length, Width, Height 값을 입력하면 3차원 Box가 생성된다.
2023 EDBLab
'3D CAD' 카테고리의 다른 글
매크로로 작성한 3D CAD 모델 조립 과정 test (0) | 2023.05.02 |
---|---|
FreeCAD에서 두가지 방법으로 부품 만들기 (0) | 2023.05.02 |
무료로 사용할 수 있는 전문가급 3D CAD, FreeCAD (0) | 2023.04.24 |
파이썬으로 FreeCAD CAD 프로그램을 작성하는 방법 소개 (0) | 2023.04.23 |