_

VBA odczyt nazwy danego documentu z oOccurrence

Forum ogólne. Miejsce na pierwsze pytania w karierze projektanta. Wszelkie tematy, których nie można zakwalifikować do jednej z poniższych grup.

VBA odczyt nazwy danego documentu z oOccurrence

Postprzez Czaki » sty 04, 2012 14:36

Mam problem.
Mam projekt w ktorym jest np 100 elementow wsrod nich elementy blaszane, chce dla kazdego elementu blaszanego który jest widoczny przypisać wlasciwosc o wartosci zmiennej visible.

Jak odczytać czy dany element blaszany jest widoczny zalezy mi aby uwzglednialo tylko elemet blaszany potrafie po dubtype poznac element ale jak odczytać czy widoczny czy nie z danego elementu.

Dzieki za info

Otrzymałem pomoc za co dziekuje ale potrafie odczytać już widocznosć komponentu, ale teraz dla tego komponentu chcialbym dodac wlasciwosc usera i nie mogę poniewaz nazwa componentu zwraca mi np A:1, A:2 a DisplayName zwracają nazwy plików wszystkei takie same.

Jak odczytać z documentu pod jaką nazwa jest wyswietlany jako komponent?

Ponizej kod ktorym odczytuje czy jest component widoczny

Kod: Zaznacz cały
Public Sub Enabled_Visible()
Dim oAsmCompDef As AssemblyComponentDefinition
Set oAsmCompDef = ThisApplication.ActiveDocument.ComponentDefinition
Dim oOccurrence As ComponentOccurrence
For Each oOccurrence In oAsmCompDef.Occurrences
if oOccurrence.Visible = False then msgbox("NIE") esle msgbox("TAK")
Next
End Sub

i kod gdzie szukam wszystkich elementow

Kod: Zaznacz cały
On Error GoTo blad
Dim invDocs As Documents

Set invDocs = ThisApplication.Documents

For i = 1 To invDocs.Count
Dim invDocument As Document
Dim oDoc As Document

Set invDocument = invDocs.Item(i)
Set oDoc = invDocument

a= oDoc.DisplayName ' i tu mi sie odczytuje nazwa pliku a nie nazwa z jaka jest wyswietlana czyli ta co jest jako oOccurrence
next i
Czaki
 
Posty: 4
Dołączył(a): lis 16, 2011 14:20

Re: VBA odczyt nazwy danego documentu z oOccurrence

Postprzez Malenki » sty 06, 2012 17:46

Ooo kurczę! Jeżeli wątek taki jak ten, przypisałeś do grupy pn. Pytania studentów, laików i początkujących, to gratuluję, a ja... wymiękam :D.

= oDoc.DisplayName ' i tu mi sie odczytuje nazwa pliku a nie nazwa z jaka jest wyswietlana czyli ta co jest jako oOccurrence
Tekstowy parametr ThisApplication.Documents.Item(i).DisplayName jest nazwą pliku części występującej na liscie złożenia, a nie nazwą części. Nazwa części jaka widnieje w drzewku to: ThisApplication.ActiveDocument.ComponentDefinition.Occurrences.Item(i).Name
_____________________________________________
Warto czasami wiedzieć, co i jak pragniesz powiedzieć...
Avatar użytkownika
Malenki
 
Posty: 674
Dołączył(a): lis 29, 2005 21:27
Lokalizacja: 3Miasto

Re: VBA odczyt nazwy danego documentu z oOccurrence

Postprzez Czaki » sty 06, 2012 23:16

Napisałem w tym wątku bo na autocadzie srednio się znam. Znajomy mnei poprosił abym napisał mu kilka procedur wiec pomagam. Dlatego czasem mige mylić nazwy:)

Dziękuje za podpowiedz i mam kolejne pytanie.
Bo po cześci kombinuje teraz w ilogicu - tam wszytsko jest dostępne odrazu. Tyle ze nie wiem dlaczego blednie odczytuje czy element jest wodiczny czy nie. Wkleje jak mam w rególne napisane
Z gory informuje ze znalazlem przyklad w necie i go przerobilem i nie wiem czemu on na plikach dziala nie mozna na part document? ew jak w ilogicu przypisac zmienne aby lecialo po wszystkich czesciach i elementach blaszanych?

to jest moja procedura
Kod: Zaznacz cały
Public Sub testdziwnezachowanie()
 
fmgr = ThisApplication.Filemanager
i=0
For Each file In fmgr.files ' czemu tu jest zrobione na plikach chyab sluzylo to do kopiowania plikow a mi potrzebna analiza tylko wszystkich czesci
 
doc = ThisApplication.Documents.ItemByName (file.fullfileName)
 
 
If (doc.documenttype = 12291) Then ' only do this for assembly or subassembly  - do czego po potrzebne?? i co to znaczy??
 
 compdef = doc.ComponentDefinition
   For Each occ In compdef.Occurrences
   i =i + 1
    '  If (occ.definition.type =83886592) Then ' only do this for part
      
      If occ.Visible = False Then
         a = occ.Name
         'MsgBox(a)
         iProperties.Value(a, "Custom", "A__3")= "NiE " & Occ.Name & " " & occ.Visible
         'iProperties.Value("rebuild 23:1", "Custom", "KKL")= "NNNN"
         'MsgBox(i & occ.Name & occ.Visible & iProperties.Value(occ.Name, "Custom", "AA11BB"))
         
                                    End If
                  next occ
next file
end sub

co do VBA to
niestety ilosc docmentów i componentow nie jest rowna wiec
Kod: Zaznacz cały
"ThisApplication.Documents.Item(i).DisplayName
ThisApplication.ActiveDocument.ComponentDefinition.Occurrences.Item(i).Name"

powyższe i nie beda pasowały do siebie prawda?

No i włąsnei te nazwy sie różnią.
Mam dodać włąściwość do danej części zależną czy dany element jest widoczny. Rozumię iż sprawdzić czy kolejny element jest widoczny mogę jedynie przez
Kod: Zaznacz cały
Dim oAsmCompDef As AssemblyComponentDefinition
Set oAsmCompDef = ThisApplication.ActiveDocument.ComponentDefinition
Dim oOccurrence As ComponentOccurrence
For Each oOccurrence In oAsmCompDef.Occurrences
if oOccurrence.Visible = False then msgbox("NIE") esle msgbox("TAK")
Next

a jak będąc w danym componencie dodać do niego włąściwości? w jednej pętli najlepiej?
Bo nijak przypisać nr componentu do partdocument.
To gdzie mogę napisać aby mnie ktoś naprowadził??
Z góry dziekuje za pomoc chyba w ilogicu jestem najblizej tego co chce osiągnąć.
Chętnie poznam osobę, która potrafi coś pisać w VBA i ma pojęcie o obiekatach bo ja jedynie w VBA mogę pomoć. :)
Czaki
 
Posty: 4
Dołączył(a): lis 16, 2011 14:20

Re: VBA odczyt nazwy danego documentu z oOccurrence

Postprzez Malenki » sty 07, 2012 00:04

niestety ilosc docmentów i componentow nie jest rowna wiec
"ThisApplication.Documents.Item(i).DisplayName
ThisApplication.ActiveDocument.ComponentDefinition.Occurrences.Item(i).Name"
Zgadza się. Ten pierwszy parametr dotyczy wszystkich plików powiązanych z otwartym złożeniem, łącznie z plikiem tego złożenia. Zatem więcej jest elementów listy plików od liczby elementów składających się na złożenie. Sądzę jednak, że możliwym jest uwzględnienie tego w procedurach.
Nie mogę dalej wypowiadać się w tym temacie, gdyż dopiero teraz przyznałeś, że dotyczy on AutoCAD'a :? . Prawda, że VBA AutoCAD'a wykazuje b. duże podobieństwo do VBA Inventora (po prostu VBA), jednak różnice występują, a ja tak dobry w te klocki nie jestem. Sorry...
_____________________________________________
Warto czasami wiedzieć, co i jak pragniesz powiedzieć...
Avatar użytkownika
Malenki
 
Posty: 674
Dołączył(a): lis 29, 2005 21:27
Lokalizacja: 3Miasto

Re: VBA odczyt nazwy danego documentu z oOccurrence

Postprzez Czaki » sty 07, 2012 00:58

Sprawa dotyczy InveAutodesk Inventor Professional 2012 :)
Czaki
 
Posty: 4
Dołączył(a): lis 16, 2011 14:20

Re: VBA odczyt nazwy danego documentu z oOccurrence

Postprzez Malenki » sty 07, 2012 01:06

Napisałem w tym wątku bo na autocadzie srednio się znam...
...Sprawa dotyczy Autodesk Inventor Professional 2012
:?: Nie zmienia to faktu, że nie mogę wymądrzać się w tym temacie - przynajmniej nie "ad hoc". Pozdrawiam.
_____________________________________________
Warto czasami wiedzieć, co i jak pragniesz powiedzieć...
Avatar użytkownika
Malenki
 
Posty: 674
Dołączył(a): lis 29, 2005 21:27
Lokalizacja: 3Miasto


Powrót do Pytania studentów, laików i początkujących

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników