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:
- Aynı kural üzerinde işlemleri birkaç kez gerçekleştirin ve her seferinde konum numarası değerlerini değiştirin kural gövdesinde.
- 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:
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:
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!
Buraya yorum eklemek için kayıtlı bir kullanıcı olmanız gerekir. Daha önce kayıt olduysanız, lütfen giriş yapın. Henüz kayıt olmadıysanız, lütfen kayıt olun ve giriş yapın.