Autodesk'te BOM balonlarını toplu olarak sil InventorInventor via iLogic

ChatGPT Image Jun 26, 2026, 12_54_25 PM.png

Not: Bu makale İngilizce yazılmış ve yayınlanmıştır ve yayınlanan orijinalin çevrilmiş bir versiyonudur burada.

 

Giriş

 

Autodesk InventorInventor, diğer 3D CAD softwareyazılım gibi, assemblyderleme ve layout drawing'lerde bileşen numaralandırmasına izin verir. Belirli bir bileşenin parça listesindeki konumunu gösteren bu numaralandırılmış referanslar, genellikle BOM (Malzeme Listesi) balonları olarak adlandırılır. Inventor, Malzeme Listesi balonları manuel ve otomatik olmak üzere iki şekilde eklenebilir.

Manuel yöntem, bir referans oluşturmak için her bileşenin seçilmesini ve bu referansın nerede görüneceğini tanımlamayı içerir. Bu iş akışı, az sayıda bileşene sahip olduğunuzda veya bunların konumlandırılması üzerinde hassas kontrol sahibi olmak istediğinizde uygundur.
Otomatik yöntem ise, bir alan (görünüm) seçmeyi ve balon konumlandırma kurallarını (dikey/yatay/çerçeve/bir çizgi boyunca) tanımlamayı içerir, bu da zaman kazandırır ve belirli bir görünümde görünür hiçbir şeyin kaçırılmamasını sağlar.

Zorluk, hepsini değil, birçok bileşeni etiketlemek istediğimizde başlar. Öğeleri otomatik olarak numaralandırmak bu durumda çok yararlıdır, ancak gereksiz balonları manuel olarak bulmak ve silmek de zaman alıcı ve emek yoğundur. Bu, şu durumlarda olabilir:

🟢 Uzun bir parça listesini birden çok sayfaya bölersiniz,

🟢 Parça listesini filtreleyebilirsiniz (ör. yalnızca çelik profiller veya standart parçalar hariç her şey),

🟢 İşinizde böyle bir süreci zorlayacak başka bir senaryo ile karşılaşıyorsunuz.

İşte burada iLogic devreye giriyor - dahili bir InventorInventor modülü, APIAPI'e dayalı olarak iş akışlarını otomatikleştiren koşullu kurallar ve komut dosyaları oluşturmanıza olanak tanır. iLogic ile, serbestçe tanımlanmış (programlanmış) bir sürece göre yeni bir araç oluşturarak eklenti gibi davranan bir kural oluşturabilirsiniz. Bu, seçilen Malzeme Listesi balonlarını saniyeler içinde otomatik olarak filtrelemenize ve kaldırmanıza olanak tanır.

Aşağıdaki videoda, bir iLogic kuralının böyle bir görevi nasıl gerçekleştirebileceğine dair bir örnek gösterilmektedir.

 

 

 

BOM balonları kaldırılıyor

 

Değer aralığı

 

iLogic'te bir batchtoplu delete oluşturmanın temel yolu, bir dizi öğe numarası değeri tanımlamaktır. Bir kural kullanarak, Inventor belirtilen aralıktaki sayıları içeren tüm balonları otomatik olarak arayacak ve tek bir hamlede silecektir.

Böyle bir kural aşağıdaki kod kullanılarak oluşturulabilir:

' ===== AYARLARI =====
Dim minItem As Integer = 10
Dim maxItem As Integer = 20
' ====================

› Etkin çizim belgesini al
Dim drawingDocument As DrawingDocument = ThisApplication.ActiveDocument

› Etkin sayfayı al
Dim activeSheet As Sheet = drawingDocument.ActiveSheet

› Etkin sayfadaki tüm balonlar arasında döngü yap
Her balon için activeSheet.Balloons içinde balon olarak

    › Değer içermeyen balonları atla
    Eğer balon. BalloonValueSets.Count = 0 için devam edin

    › İlk balon değer kümesini al
    BalloonValueSet'i BalloonValueSet = balon olarak karartın. BalloonValueSets.Item(1)

    ' Öğe değerini metin olarak al
    Öğeyi Dize Olarak Dim = balloonValueSet.Value

    ' Sayısal öğe numarası için değişken
    ÖğeNumarasını Tamsayı Olarak Dim

    › Değeri tamsayıya dönüştürmeyi deneyin
    Integer.TryParse(itemValue, itemNumber) ise

        › Öğe aralığını kontrol et
        itemNumber >= minItem ve itemNumber <= maxItem ise

            › Balonu sil
            Balon. Sil()

        Bitiş Şu:
    Bitiş Şu:

Sonraki

 

Böyle bir kural, etkin sayfada 10 ile 20 arasında numaralandırılmış tüm balonları veya çalıştırılmadan önce içinde tanımlanan diğer aralıkları kaldırır.

 

Çoklu değer aralıkları

 

Bazen bir malzeme listesinin yapısı, parça listemizi nasıl segmentlere ayırmak veya bir sayfa görünümünü balonlarla etiketlemek istediğimizle tam olarak eşleşmeyebilir. İstenilen etkiyi elde etmek için birkaç farklı balon değer aralığını çıkarmamız gerekebilir. Bu durumda iki seçeneğimiz var:

  1. Aynı kural üzerinde işlemleri birkaç kez gerçekleştirin ve her seferinde konum numarası değerlerini değiştirin ​kural gövdesinde.
  2. Kuralı, aynı anda birden çok aralık tanımlamaya izin verecek şekilde değiştirin.

İkinci senaryo durumunda, kaldırılacak balon aralığını tanımlamaktan sorumlu olan kuraldaki SETTINGS parçasını değiştirmeniz ve örneğin (bu durumda 3 aralık için) aşağıdaki kodla değiştirmeniz gerekir:

' ===== AYARLARI =====
Dim minItem1 As Tamsayı = 10
Dim maxItem1 As Tamsayı = 20

Dim minItem2 As Tamsayı = 30
Dim maxItem2 As Tamsayı = 40

Dim minItem3 As Tamsayı = 50
Dim maxItem3 As Tamsayı = 60
' ====================

 

ve yürütme bölümünü aşağıdaki kodla değiştirin:

› Öğe değerini tamsayıya dönüştürmeyi deneyin
Integer.TryParse(itemValue, itemNumber) ise

    › Öğenin belirtilen 3 aralıktan herhangi biri içinde olup olmadığını kontrol edin
    Eğer (öğeNumarası>= minÖğe1 ve öğeNumarası <= maxItem1) _
    Veya (itemNumber >= minItem2 ve itemNumber <= maxItem2) _
    Veya (itemNumber >= minItem3 ve itemNumber <= maxItem3) sonra

        › Balonu sil
        oBalloon.Delete()

    Bitiş Şu:

Bitiş Şu:

 

Değer aralıkları + tek oluşumlar

 

Parça listemizin her iki değer aralığını da kaldırmamızı gerektirecek kadar karmaşık olması da mümkündür ​ve tek tek öğe numaraları.

Böyle bir senaryoda, giriş kodu alanını şu şekilde değiştirmemiz gerekir:

' ===== AYARLARI =====
Dim minItem1 As Tamsayı = 10
Dim maxItem1 As Tamsayı = 20

Dim minItem2 As Tamsayı = 30
Dim maxItem2 As Tamsayı = 40

Dim minItem3 As Tamsayı = 50
Dim maxItem3 As Tamsayı = 60

SingleItems As Integer() = {5, 25, 45}
' ====================

 

ve yürütmeden sorumlu parça aşağıdaki gibidir:

› Öğe değerini tamsayıya dönüştürmeyi deneyin
Integer.TryParse(itemValue, itemNumber) ise

    ' Bayrağı sil
    Dim shouldDelete As Boolean = False

    › Aralıkları kontrol et
    Eğer (öğeNumarası>= minÖğe1 ve öğeNumarası <= maxItem1) _
    Veya (itemNumber >= minItem2 ve itemNumber <= maxItem2) _
    Veya (itemNumber >= minItem3 ve itemNumber <= maxItem3) sonra

        shouldDelete = Doğru
    Bitiş Şu:

    ' Tek tek öğeleri kontrol et
    Her singleItem için singleItems içinde tamsayı olarak
        itemNumber = singleItem ise o zaman
            shouldDelete = Doğru
            Şunun için çık:
        Bitiş Şu:
    Sonraki

    › Koşul karşılanırsa balonu sil
    Gerekirse Sil O zaman
        Balon. Sil()
    Bitiş Şu:

Bitiş Şu:

 

 

İletişim kutusu

 

Kuralın yukarıda belirtilen tüm biçimlerinin birkaç dezavantajı vardır:

  • Olası aralıkların sayısını kodda tanımlanan bir listeyle sınırlarlar.
  • Silinecek öğe numaralarının aralığını her değiştirmek istediğinizde kodun değiştirilmesini gerektirirler.

Bu sorunların çözümü, kuralı, yürütülmesi sırasında kullanıcı dostu bir arayüzde kaldırılacak balon aralıklarını tanımlamanıza olanak tanıyan bir açılır iletişim kutusu içerecek şekilde yeniden oluşturmaktır.

 

Makaledeki alan ve okuyucuların zamanını boşa harcamamak için, birden çok aralık ve tek değer belirtmenize izin veren daha uzun bir kural sunacağım ​iletişim kutusunda aynı anda:

' ==========================================
' Mini uygulama - balonları aralığa/öğelere göre silin
' Yalnızca etkin sayfada çalışır
' ==========================================

› Etkin çizim belgesini al
Dim drawingDocument As DrawingDocument = ThisApplication.ActiveDocument

› Etkin sayfayı al
Dim activeSheet As Sheet = drawingDocument.ActiveSheet

› Kullanıcı girdisi al
Dim inputText As String = InputBox( _
"Aralıkları ve/veya öğe numaralarını girin." & vbCrLf & _
"Örnek: 10-20, 24, 26, 30-34", _
"Balonları Sil")

› İptal edilirse veya boşsa durdur
String.IsNullOrWhiteSpace(inputText) ise return

' Boşlukları kaldır
inputText = inputText.Replace(" ", "")

' Girdiyi virgülle böl
Dim inputElements() As String = inputText.Split(","c)

› Tüm balonlar arasında geçiş yap
Her balon için activeSheet.Balloons içinde balon olarak

    › Değer içermeyen balonları atla
    Eğer balon. BalloonValueSets.Count = 0 için devam edin

    › İlk balon değer kümesini al
    BalloonValueSet'i BalloonValueSet = balon olarak karartın. BalloonValueSets.Item(1)

    ' Öğe değerini al
    Öğeyi Dize Olarak Dim = balloonValueSet.Value

    ' Sayısal öğe numarası için değişken
    ÖğeNumarasını Tamsayı Olarak Dim

    ' Dönüştürme başarısız olursa atla
    Integer.TryParse(itemValue, itemNumber) değilse için devam edin.

    ' Bayrağı sil
    Dim shouldDelete As Boolean = False

    › Tüm giriş öğelerini kontrol edin
    Her inputElement için inputElements'te Dize Olarak

        inputElement = inputElement.Trim()

        › Öğenin aralık olup olmadığını kontrol et
        inputElement.Contains("-") ise

            Dim rangeValues() As String = inputElement.Split("-"c)

            rangeValues.Length = 2 ise

                Tamsayı Olarak Dim minValue
                Maksimum Değeri Tamsayı Olarak Dim

                If Integer.TryParse(rangeValues(0), minValue) AndAlso _
                   Integer.TryParse(rangeValues(1), maxValue) sonra

                    itemNumber >= minValue ve ayrıca itemNumber <= maxValue ise, o zaman
                        shouldDelete = Doğru
                        Şunun için çık:
                    Bitiş Şu:
                Bitiş Şu:
            Bitiş Şu:

        Başka

            ' Tek bir değeri kontrol et
            Tek Değeri Tamsayı Olarak Dim

            Integer.TryParse(inputElement, singleValue) ise
                itemNumber = singleValue ise
                    shouldDelete = Doğru
                    Şunun için çık:
                Bitiş Şu:
            Bitiş Şu:

        Bitiş Şu:

    Sonraki

    › Koşul karşılanırsa balonu sil
    Gerekirse Sil O zaman
        Balon. Sil()
    Bitiş Şu:

Sonraki

 

Yukarıdaki kuralın çalıştırılması şu iletişim kutusunu açacaktır:

Zrzut ekranu 21-06-2026 15.18.56.png

 

 

Rapor

 

BOM balonu silme işlemi, silinen tüm örnekleri saymanıza ve bu sayıya göre bir rapor oluşturmanıza da olanak tanır. İşlem tamamlandıktan sonra rapor ayrı bir iletişim kutusunda görünecektir.

Bir işlem raporu almak için üç satır kod eklemeniz gerekir.

 

İlk satır, kaldırılan balonların sayısını saymak için kullanılacak bir sayaç (parametre) oluşturur.

Dim removedCount As Integer = 0

Bu çizgi, For Each balonunun hemen üzerine yerleştirilmelidir... kodu.

 

İkinci kod parçacığı, kaldırılan balonları sayma işlemini etkinleştirir.

removedCount += 1

ve balon silme komutunun hemen altına yerleştirilmelidir: Balloon.Delete().

 

Üçüncü satır, mesaj kutusunun biçimini ve içeriğini belirler. Kuralın sonuna yerleştirilmelidir ve örneğin şu şekilde yapılandırılabilir:

MessageBox.Show("Kaldırıldı" & removedCount & " balonlar.", "Rapor")

 

Bu koda dayalı olarak oluşturulan örnek bir süreç raporu aşağıdaki grafikte sunulmuştur:

BOM balloons report.png

 

 

Kişiselleştirme

 

Örnek kodda, BOM batchtoplu balon kaldırma aracı için seçilen özelleştirme yönünü sundum. iLogic'in çok daha geniş bir araç özelleştirme ve süreç optimizasyonu kapsamına izin verdiğini belirtmekte fayda var. Bu komut tek başına programlamamıza izin verir:

  • Sayfalar aralığı - Kural, geçerli sayfayı (geçerli kod), etkin belgedeki tüm sayfaları veya seçili sayfaları (iletişim kutusunda tanımlanmıştır) işleyebilir. İlk mod, uzun bir parça listesini birden çok sayfaya bölerken kullanışlıdır. İkinci mod, örneğin, tüm standart parçaları aynı anda farklı sayfalardaki listelerden kaldırmak istediğinizde kullanışlıdır.
  • Desteklenen ifadeler - >20 türündeki matematiksel ifadelerden, tek tek konum değerlerini girerken virgül ve noktalı virgül yorumunun otomatik olarak birleştirilmesine kadar.
  • Nihai rapor - yalnızca kaldırılan balonların sayısını bildirmekle kalmaz, aynı zamanda bunları bir envanterde sunabilir veya kaç balonun analiz edildiğini bildirebilir.
  • İptal raporu - İşlemin İptal düğmesi veya Esc tuşu ile iptal edilmesi durumunda bir mesaj kutusu görüntülemek mümkündür.
  • İletişim kutusu görünümü - Microsoft Form kullanarak özel bir giriş alanı oluşturabilirsiniz.
  • Önizleme - işlemi onaylamadan önce balonun çıkarılmasının simülasyonu.
  • Kuralı belirli bir görünüm için (sayfa için değil) çalışacak şekilde ayarlayın.
  • Çok daha fazlası...

 

 

özet

 

iLogic'in ustaca kullanılması, sıkıcı görevlere harcanan zamanı azaltabilir ve tasarımcının tekrarlayan etkinlikleri otomatikleştirerek yaratıcı çalışmalara odaklanmasını sağlar.

Bu örnekte, BOM balonlarını arayan, filtreleyen ve kaldıran bir komut dosyası programlayarak zamandan tasarruf etmenin ne kadar kolay olduğunu gösterdim. Projenin karmaşıklığından bağımsız olarak tüm operasyon sadece birkaç saniye sürer. Ayrıca, bu komut ihtiyaçlarınıza ve tercihlerinize uyacak şekilde serbestçe özelleştirilebilir.

İyi şanslar!

 

 

 

Beni YouTube, LinkedIn veya Instagram'da bul