Diskuzní fórum a databáze tipů a utilit pro AutoCAD, Inventor, Revit a další produkty Autodesk - od firmy CAD Studio [www.cadforum.cz]
Česky Slovensky English Deutsch
Přihlášení:
▶ Registrace

 právě nás čte: 2660 
RSS tipy RSS kanál - CAD tipy
RSS diskuze RSS kanál - CAD diskuze

Diskuze Diskuzní fórum, poradna

NápovědaCAD diskuze, rady, výměna zkušeností

CAD Fórum - Homepage Veřejné diskuzní fórum k CAD aplikacím - ptejte se na libovolné otázky týkající se oboru CAx, podělte se o vaše znalosti a zkušenosti s programy AutoCAD, Inventor, Revit, Fusion 360, 3ds Max a s dalšími CAD aplikacemi. Zaregistrujte se nebo se přihlašte a zašlete váš příspěvek do odpovídajícího fóra. Viz další informace o CAD Fóru. Nechcete se registrovat? Zeptejte se v naší Facebook poradně.
Fórum nenahrazuje technický support firmy CAD Studio - přímá podpora pro zákazníky funguje na helpdesk.cadstudio.cz
  FAQ FAQ  Prohledat fórum   Události   Registrovat Registrovat  Přihlásit Přihlásit

Jak získat plné jméno modelu výkresu ze sestavy

 Odpovědět Odpovědět archiv
Autor
Adamito Zobrazit panel
Diskutér
Diskutér

Přihlášen: 11.říj.2012
Lokalita: ČR (JM)
Používám:
Inventor 2017
Stav: Offline
Bodů: 20
Možnosti příspěvku Možnosti příspěvku   Poděkování (0) Poděkování0   Citace Adamito Citace  OdpovědětOdpověď Přímý odkaz na tuto zprávu Téma: Jak získat plné jméno modelu výkresu ze sestavy
    Zasláno: 16.čvc.2020 v 21:41
Dobrý den,
potřeboval bych poradit s pravidlem pro otevírání výkresů.
Pravidlo spouštím z hlavní sestavy -> zjistím hlavní složku a tu prohledám včetně podsložek -> vytvořím seznam výkresů. 
A teď bych potřeboval zjistit zda se daný model výkresu nachází v sestavě (iam) a v sestavě (iam) bych rád zjistil odkazy na výkresy.
Zatím to obcházím přes porovnávání názvů, ale to nemusí vždy fungovat. Stačí výkres přejmenovat a je to jinde než má být.

Tady je kopie kódu co používám.

Sub Main()

'Cesta k projektu.
CestaProjektu = ThisDoc.WorkspacePath()

'Testuje soubor na sestavu. Nelze spustit z dílu nebo výkresu. 
If ThisApplication.Activedocument.documentType = kAssemblydocumentObject Then

' Nalezne všechny podsložky OldVersions a smaže je
For Each foundDirectory As String In My.Computer.FileSystem.GetDirectories(CestaProjektu,FileIO.SearchOption.SearchAllSubDirectories,"OldVersions")
My.Computer.FileSystem.DeleteDirectory(foundDirectory,FileIO.DeleteDirectoryOption.DeleteAllContents)
Next
'Ve složce projektu prohledá podsložky a nelazne všechny výkresy a zapíše je do seznamu.
Dim SeznamVykresu3 As New ArrayList
Dim SeznamVykresu4 As New ArrayList
For Each foundFile As String In My.Computer.FileSystem.GetFiles(CestaProjektu,Microsoft.VisualBasic.FileIO.SearchOption.SearchAllSubDirectories, "*.idw")
SeznamVykresu3.Add(foundFile)
Dim FNamePos6 As Long
Dim docFName6 As String
FNamePos6 = InStrRev(foundFile, "\", -1)  
docFName6 = Mid(foundFile, FNamePos6 + 1, Len(foundFile) - FNamePos6-4)
SeznamVykresu4.Add(docFName6)
Next
' MessageBox.Show(SeznamVykresu4.Count, "Počet nalezených výkresů.")

' Nalezne všechny podsestavy a díly v hlavní sestavě
Dim Seznam7 As New ArrayList
Dim doc7 As document
Seznam7.add(ThisDoc.FileName(False))
For Each doc7 In ThisApplication.Activedocument.AllReferenceddocuments
Dim FNamePos7 As Long
Dim docFName7 As String
FNamePos7 = InStrRev(doc7.FullFileName, "\", -1)  
docFName7 = Mid(doc7.FullFileName, FNamePos7 + 1, Len(doc7.FullFileName) - FNamePos7-4)
If doc7.ComponentDefinition.BOMStructure = "51970" Then
Seznam7.add(docFName7)
' MessageBox.Show(docFName7, "Sestava")
End If
Next
' MessageBox.Show(Seznam7.Count, "Počet souborů v sestavě.")
' Porovná nalezené soubory a vrátí seznam schodných souborů
Dim Seznam8 As New ArrayList
For k = 0 To SeznamVykresu4.Count-1 Step 1
foundVal8 = MultiValue.FindValue(Seznam7, "=", SeznamVykresu4(k))
If Len(foundVal8) <> 0 Then
Seznam8.add(SeznamVykresu4(k))
' Otevře všechny výkresy aktivních součástí.
Dim odoc As Drawingdocument = ThisApplication.Documents.Open(SeznamVykresu3(k), True)
auto = iLogicVb.Automation
auto.RunExternalRule(odoc, "AKTUALIZACE_VÝKRESU")
End If
Next
If Seznam8.Count = 0 Then
MessageBox.Show("Adresář neobsahuje výkresy.", "Neexistují výkresy.")
End If
MessageBox.Show(Seznam8.Count, "Počet výkresů, které se podařilo otevřít.")
Else

MessageBox.Show("Testovaný soubor není sestava. Toto pravidlo lze spustit pouze v sestavě.", "Zkontroluj umístění projektu a souburu!")

End If
End Sub

Zpět nahoru
17zidek Zobrazit panel
CAD Studio support
CAD Studio support

CAD Studio

Přihlášen: 11.říj.2004
Lokalita: Czech Republic
Používám:
AutoCAD, AutoCAD Map
Stav: Offline
Bodů: 8
Možnosti příspěvku Možnosti příspěvku   Poděkování (0) Poděkování0   Citace 17zidek Citace  OdpovědětOdpověď Přímý odkaz na tuto zprávu Zasláno: 17.čvc.2020 v 09:01
Dobrý den,
zjistit z výkesu referencovaný/é model/y lze, ale z modelu zjistit zda má výkres nelze.
Mohl byste popsat co myslíte "odkazem na výkresy"?

Petr Žídek
CAD Studio
Zpět nahoru
Adamito Zobrazit panel
Diskutér
Diskutér

Přihlášen: 11.říj.2012
Lokalita: ČR (JM)
Používám:
Inventor 2017
Stav: Offline
Bodů: 20
Možnosti příspěvku Možnosti příspěvku   Poděkování (0) Poděkování0   Citace Adamito Citace  OdpovědětOdpověď Přímý odkaz na tuto zprávu Zasláno: 17.čvc.2020 v 20:16
Dobrý den,
odkaz na výkres je myšleno, jak píšete, zda má model výkres.¨
Jak tedy zjistit z výkresu referenční model, když otevírám pravidlo v hlavní sestavě?

Děkuji za odpověd.
Zpět nahoru
17zidek Zobrazit panel
CAD Studio support
CAD Studio support

CAD Studio

Přihlášen: 11.říj.2004
Lokalita: Czech Republic
Používám:
AutoCAD, AutoCAD Map
Stav: Offline
Bodů: 8
Možnosti příspěvku Možnosti příspěvku   Poděkování (0) Poděkování0   Citace 17zidek Citace  OdpovědětOdpověď Přímý odkaz na tuto zprávu Zasláno: 20.čvc.2020 v 10:52
Dobrý den,
referencovaný výkres získáte z otevřeného výkresu takže například upravením Vaší smyčky na prohledání adresáře a získání všech výkresů a v proměnné 'mujDoc' budete mit prvni referencovany soubour
For Each foundFile As String In My.Computer.FileSystem.GetFiles(CestaProjektu, Microsoft.VisualBasic.FileIO.SearchOption.SearchTopLevelOnly, "*.idw")
	Try
		Dim drawing As DrawingDocument = ThisApplication.Documents.Open(foundFile,False)
		Dim mujDoc As Document = drawing.ReferencedDocuments.Item(1)
		drawing.Close(True)
		SeznamVykresu3.Add(foundFile)
		Dim FNamePos6 As Long
		Dim docFName6 As String
		FNamePos6 = InStrRev(foundFile, "\", -1)
		docFName6 = Mid(foundFile, FNamePos6 + 1, Len(foundFile) -FNamePos6 - 4)

		SeznamVykresu4.Add(docFName6)
	Catch
	End Try
Next


Bylo by dobré dodělat ověření zda soubor je součástí sestavy, a také ověření/zpracování pokud má výkres více referencovaných souborů a asi předělat posloupnost pravidla celkově.
Petr Žídek
CAD Studio
Zpět nahoru
Adamito Zobrazit panel
Diskutér
Diskutér

Přihlášen: 11.říj.2012
Lokalita: ČR (JM)
Používám:
Inventor 2017
Stav: Offline
Bodů: 20
Možnosti příspěvku Možnosti příspěvku   Poděkování (0) Poděkování0   Citace Adamito Citace  OdpovědětOdpověď Přímý odkaz na tuto zprávu Zasláno: 21.čvc.2020 v 18:54
Dobrý den,
mockrát děkuji za pomoc.

Tady byl můj zakopaný pes Dim mujDoc As Document = drawing.ReferencedDocuments.Item(1)
Jak píšete níže, pravidlo jsem poupravil, popřehazoval a přidal test jestli je soubor v sestavě. 
Ověření na více referenčních modelů jsem nepřidal, jelikož používáme pouze jeden referenční soubor pro výkres.

Ještě jednou díky, díky, díky.
Zpět nahoru

Pro technickou podporu CAD
kontaktujte Helpdesk

Příbuzné CAD tipy:
Tip 6473:Inventor Viewer i na počítači s Inventorem.
Tip 1191:Jak načíst DXF soubor do rozpracovaného výkresu v AutoCADu 2000 nebo vyšším?
Tip 12596:VIPHromadné nastavení viditelnosti komponent dle názvu (iLogic).
Tip 10888:Získání doménového jména uživatele, č.telefonu, oddělení, e-mailu...
Tip 4285:Název úlohy jen jako jméno výkresu, bez cesty.
Tip 11458:VIPJak do výkresových kót doplnit názvy parametrů z modelu Inventoru?


 Odpovědět Odpovědět

Přejít na fórum Oprávnění fóra Zobrazit panel



Stránka byla vygenerována za 0,234 sekund.