← Blog
Kod ile CAD ve CAD otomasyonu

Python ile İlk STEP Dosyası: Kurulumdan Parametrik Parçaya

Python’da betikli mekanik CAD: ortam, parametrik braket, parça ailesi, CI’da geometri testi ve ilk öğleden sonrayı yakan hatalar. build123d ve CadQuery aynı Open CASCADE katısını yazar.

Yazar:
Cadagen
Teknik inceleme:
CADAGEN Mühendislik Ekibi · Makine Mühendisi
Son güncelleme:
31 Ağustos 2026
Kaynaklar:
3 birincil kaynak, aşağıda listelendi

Python’dan CAD almak için sınır gösterimi çekirdeği süren bir kütüphane — mainstream seçenekler build123d veya CadQuery — ve gerçek bir STEP için yirmi satır yeter. Bu yürüyüş temiz makineden parametrik parçaya, ölçü ailesine ve otomatik geometri testine gider.

Tek tanımdan üretilmiş beş talaşlı braket ailesi

Betikli CAD’in sizin işiniz olup olmadığı hâlâ açıksa önce kod ile CAD yazısına bakın. İki kütüphane arasındaki API farkı İngilizce build123d vs CadQuery yazısındadır; aşağıda örnekler build123d ile. Aynı iskelet CadQuery’de başka metot adlarıyla durur.

1. Ortamı kurun

İki kütüphane de büyük, önceden derlenmiş Open CASCADE bağları çeker. Ayrı ortam kullanın — bozuk çekirdek kurulumunu sistem Python’undan ayıklamak tatsızdır.

python -m venv .venv
source .venv/bin/activate        # Windows: .venv\Scripts\activate
pip install build123d

İlk kurulum yüzlerce megabayt ve yavaş olabilir. Gerçek kod yazmadan çekirdeğin yüklendiğini doğrulayın:

from build123d import Box
print(Box(10, 10, 10).volume)    # 1000.0

1000.0 basıyorsa bağlar çalışıyordur. İçeri aktarma hatası ortam sorunudur, sizin geometriniz değil — desteklenen Python sürümünü kütüphane belgesiyle karşılaştırın.

Sürümü sabitleyin. Her iki kütüphane de sürümler arasında kırıcı API değiştirmiştir. requirements.txt içine yazın ki bugünün betiği gelecek yıl aynı katıyı üretsin.

2. Adlandırılmış parametrelerle bir parça

Amaç kutu yapmak değil. Ölçüleri adlandırılmış bir kutu yapmak, ki tek değeri değiştirerek model değişsin.

from build123d import *

LENGTH = 80
WIDTH = 40
THICK = 10
HOLE = 6.6   # ISO 273 orta boşluk, kabaca M6

with BuildPart() as plate:
    Box(LENGTH, WIDTH, THICK)
    with Locations(
        ( LENGTH / 2 - 10,  WIDTH / 2 - 10, THICK / 2),
        ( LENGTH / 2 - 10, -WIDTH / 2 + 10, THICK / 2),
        (-LENGTH / 2 + 10,  WIDTH / 2 - 10, THICK / 2),
        (-LENGTH / 2 + 10, -WIDTH / 2 + 10, THICK / 2),
    ):
        Hole(HOLE / 2)

export_step(plate.part, "plaka.step")

Delik çapını “6 mm civarı” bırakmayın. M6 için ISO 273 boşluk deliği tarifte bir sayıya bağlanır; atölye standart matkap ister. Parametrik CAD nedir adlandırılmış ölçünün neden tasarım niyeti olduğunu açar.

Windows’ta yol ayırıcı ve çalışma dizini sizi şaşırtmasın: export_step göreli yolu o anki dizine yazar. CI’da çıktı klasörünü açık tutun.

3. Aile üretin

Aynı tanımdan üç boy üretmek, GUI’de üç dosyayı kopyalamaktan ucuzdur:

for length in (60, 80, 100):
    # LENGTH = length ... aynı BuildPart
    export_step(plate.part, f"plaka_{length}.step")

Aile, teklif paketini ve yedek parça stoğunu aynı kaynaktan üretir. Türkiye atölyesinde “aynısı ama 20 mm uzun” talebi betikte bir döngüdür, yeni bir modelleme seansı değil.

4. Geometriyi test edin

Betiğin hatasız bitmesi geometrinin doğru olduğu anlamına gelmez. Hacim, zarf ve gövde sayısı sessiz başarısızlığı yakalar:

solid = plate.part
assert abs(solid.volume - expected) < 500
assert len(solid.solids()) == 1

Boş katı, çift gövde ve kopuk ada üretim hattında “derlendi ama yanlış parça” sınıfıdır. STEP’in ne taşıdığı CAD dosya formatları yazısındadır.

5. İlk öğleden sonrayı yakan hatalar

  • Sistem Python’una pip. Çekirdek bağı başka paketle çakışır. venv şart.
  • Builder’ı şekil sanmak. export_step(plate, …) değil plate.part. BuildPart bir inşaatçıdır, katı değil.
  • Yerinde .locate() kopyası. build123d’de .locate() aynı nesneyi döndürür; iki konum için .located() kullanın, yoksa Compound aynı çocuğu iki kez alıp düşer.
  • Birimsiz STL’ye güvenmek. STL birim taşımaz; atölyeye giden dosya STEP olmalıdır.

Python CAD, metinden CAD’in arkasındaki aynı sınıftır: dil bir betik yazar, çekirdek katıyı kurar. Fark, betiği sizin yazmanız veya bir modelin yazmasıdır. İkisinde de ölçü kontrolü sizde kalır.

Sık sorulan sorular

Python ile STEP dosyası nasıl üretilir?
build123d veya CadQuery gibi B-Rep tabanlı bir CAD kütüphanesi kurun, katıyı primitive ve işlemlerle oluşturun, sonra kütüphanenin STEP dışa aktarıcısını çağırın — build123d’de export_step(part, 'parca.step'), CadQuery’de cq.exporters.export(part, 'parca.step'). İkisi de tam geometri taşıyan ISO 10303 STEP yazar; mekanik CAD açar.
Yeni başlayan hangi Python CAD kütüphanesini seçmeli?
Sıfırdan başlıyor ve kodu yaşatacaksanız build123d: işlemler açık ifadelerdir, zincirlenmiş seçim yığını değil. Mevcut bir şirket betiğini veya eski eğitimi izliyorsanız CadQuery. İkisi de aynı Open CASCADE çekirdeğini sürer; üretebileceğiniz geometri eşdeğerdir.
CAD uygulaması kurmadan Python CAD çalışır mı?
Evet. build123d ve CadQuery hazır Open CASCADE bağları taşır; düz Python sürecinde, CAD koltuğu, lisans ve arayüz olmadan çalışır. Bu yüzden derleme sunucusunda, konteynerde veya daha büyük bir otomasyon hattında kullanılabilir.
Üretilen parçanın doğru olduğunu nasıl anlarım?
Testte ölçülebilir özelliklere bakın: zarf ölçüleri beklenen zarfa, hacim beklenen banda, tek katı için gövde sayısı bire, basılacak parçalarda dışa aktarılan mesh’in sızdırmazlığına. Betik hatasız bitip boş, çift veya kopuk şekil ürettiği sessiz başarısızlıkları bunlar yakalar.

Kaynaklar

  1. build123d - Introductory examples (Hole, fillet, GridLocations selectors) — build123d docs
  2. build123d - Import/Export reference (export_step, unit argument) — build123d docs
  3. ISO 273:1979 - Fasteners: clearance holes for bolts and screws — ISO