본문 바로가기
  • You find inspiration to create your own path !
업무 자동화/FreeCAD

FreeCAD & Python] VScode 사용 하기 #4

by ToolBOX01 2026. 8. 26.
반응형

■ Part 이름 가져오기

Document에 포함된 Part 이름들 가져오는 기능 입니다. Part 안에 있는 Property, Dimension의 이름 및 깂을 가져오기 위함 입니다.

 

● Part 이름 가져오는 코드

import FreeCAD as App

doc = App.ActiveDocument

if doc is None:
    print("열려있는 문서가 없습니다.")
else:
    print(f"Document : {doc.Name}")
    print("=" * 60)

    found = False

    for obj in doc.Objects:

        # 정확히 App::Part인 객체만 검색
        if obj.TypeId == "App::Part":

            print(f"Name   : {obj.Name}")
            print(f"Label  : {obj.Label}")
            print(f"TypeId : {obj.TypeId}")
            print("-" * 60)

            found = True

    if not found:
        print("App::Part 객체가 없습니다.")

 

프로그램 실행 결과

16:50:15 Document : korea01
16:50:15 ============================================================
16:50:15 Name : Part
16:50:15 Label : Part
16:50:15 TypeId : App::Part
16:50:15 ------------------------------------------------------------
16:50:15 Name : KO_1
16:50:15 Label : KO_1
16:50:15 TypeId : App::Part
16:50:15 ------------------------------------------------------------

 

"for obj in doc.Objects" 코드 설명

현재 FreeCAD Document 안에 들어 있는 모든 객체(Object)를 하나씩 꺼내서 검사하는 코드입니다.
Document가 가지고 있는 Object들을 하나씩 꺼내서 변수 "obj"에 넣으면서 반복 실행합니다.

1. doc.Objects란?

Document에 포함되어 있는 모든 Document Object의 목록입니다.
즉, Model Tree에서 보이는 모든 종류의 객체를 말합니다.

Model Tree doc.Objects에 포함된 객체
Document

├── Part
│   └── Body
│       ├── Pad
│       └── Pocket

├── Part001
│   └── Body

├── Box
└── Spreadsheet
doc.Objects

├── Part
├── Body
├── Pad
├── Pocket
├── Part001
├── Body001
├── Box
└── Spreadsheet

 

2. obj.TypeId 이란?

Object가 가지고 있는 Property(속성)Method(기능)를 사용할 수 있습니다.

Property/Attribute Method(함수)
obj.Name

Property → 값을 가져옴
obj.isDerivedFrom(...)

Method → 기능을 실행함

다양한 예시

코드 의미
obj.Name FreeCAD 내부 이름
obj.Label Model Tree 표시 이름
obj.TypeId 객체 타입
obj.PropertiesList 객체가 가진 Property 목록
obj.Document 해당 Object가 속한 Document
obj.Group App::Part 등이 포함하고 있는 객체
obj.isDerivedFrom() 특정 타입 계열인지 검사
obj.getPropertyByName() Property 값을 가져올 때 사용
obj.setPropertyStatus() Property 상태 제어 등에 사용

 

BOM 정보 수집 순서

Document
   ↓
doc.Objects
   ↓
obj
   ↓
obj.TypeId
   ↓
App::Part
   ↓
obj.PropertiesList
   ↓
Part Number
Part Name
Material
Description
...

obj.를 통해 그 객체의 정보와 기능에 접근 할수 있습니다.


by korealionkk@gmail.com

 

반응형