Beyond Inventor Wizard... The Community!

Autodesk Inventor en AutoCAD Forum

Selecteer in een samenstelling een onderdeel en start de macro.

De Standard.idw wordt opgeroepen en een baseview commando met de link naar het geselecteerde onderdeel wordt automatisch weergegeven.

Voor mij een echte timesaver omdat ik niet meer naar het onderdeel moet zoeken.

Opmerkingen en verbeteringen zijn altijd welkom!

Public Sub CreateDrawing()

On Error GoTo ErrorHandler

Dim oIamDoc As AssemblyDocument
Set oIamDoc = ThisApplication.ActiveDocument

Dim CheckSelectSet As SelectSet
Set CheckSelectSet = oIamDoc.SelectSet

Dim X, Y, Z As Double
If oIamDoc.SelectSet.Count <> 1 Then
MsgBox "Selecteer 1 onderdeel"
Exit Sub
End If

Dim oCompOcc As ComponentOccurrence
Set oCompOcc = oIamDoc.SelectSet.Item(1)

Dim oDrawDoc As DrawingDocument
Set oDrawDoc = ThisApplication.Documents.Add(kDrawingDocumentObject, ThisApplication.FileManager.GetTemplateFile(DocumentTypeEnum.kDrawingDocumentObject))

Dim oCommandMgr As CommandManager

Set oCommandMgr = ThisApplication.CommandManager

Call oCommandMgr.PostPrivateEvent(kFileNameEvent, oCompOcc.ReferencedDocumentDescriptor.ReferencedFileDescriptor.FullFileName)

Dim oControlDef As ControlDefinition
Set oControlDef = oCommandMgr.ControlDefinitions("DrawingBaseViewCmd")

Call oControlDef.Execute

Exit Sub

ErrorHandler:
If Err.Number = 91 Then
MsgBox "er is geen document open"
ElseIf Err.Number = 13 Then
MsgBox "er is geen assemblage open"
Else
MsgBox Err.Description & " " & Err.Number
End If

End Sub

Aantal maal bekeken: 721

Hierop reageren

Berichten in deze discussie

Hoi Fré,

Kun je ergens de mogelijkheid bieden de template file zelf te kiezen? Eventueel gewoon het "New" venster oproepen en dat de macro verder gaat wanneer je een template hebt geselecteerd?

of

Ergens in code de mogelijkheid geven om een andere file als std te gebruiken ipv de "standard.idw"

met dit, maar weet niet goed waar dit in te passen...

UseDefaultTemplate = False    
sTemplatePart = "C:\Program Files\Autodesk\Inventor xx\Templates\myown.idw" 'Change this path if necessary

Stefaan, hiervoor moet de regel met Document.Add aangepast worden. Het eerste deel tussen de haakjes is het document type Enum dit kan je zo laten, het 2e deel is de template filename als String. De regel hieronder werk wanneer je jouw sTemplatePart regel ook toevoegt.

Dim oDrawDoc As DrawingDocument
Set oDrawDoc = ThisApplication.Documents.Add(kDrawingDocumentObject, sTemplatePart)

Wanneer je een Template wilt aanwijzen/selecteren dan kan je in de API Help een "File Dialog API Sample" vinden waarin dit wordt voorgedaan. Je gebruikt dan oFileDlg.FileName als de Template Filename in de Documents.Add regel.
Ik hoop dat je hier iets mee kan. Anders kan ik op een later tijdstip wel even een voorbeeld geven.

Rob.

Zoals R. Van der Veek al aangaf:

Public Sub CreateDrawing1()
On Error GoTo ErrorHandler

Dim oIamDoc As AssemblyDocument
Set oIamDoc = ThisApplication.ActiveDocument
Dim CheckSelectSet As SelectSet
Set CheckSelectSet = oIamDoc.SelectSet
Dim X, Y, Z As Double
If oIamDoc.SelectSet.Count <> 1 Then
MsgBox "Selecteer 1 onderdeel"
Exit Sub
End If
Dim oCompOcc As ComponentOccurrence
Set oCompOcc = oIamDoc.SelectSet.Item(1)
Dim sTemplatePart As String
sTemplatePart = "Vul hier het pad in waar uw template staat\vul hier de naam van de templatefile in.idw" 'Change this path if necessary"
Dim oDrawDoc As DrawingDocument
Set oDrawDoc = ThisApplication.Documents.Add(kDrawingDocumentObject, sTemplatePart)
Dim oCommandMgr As CommandManager
Set oCommandMgr = ThisApplication.CommandManager
Call oCommandMgr.PostPrivateEvent(kFileNameEvent, oCompOcc.ReferencedDocumentDescriptor.ReferencedFileDescriptor.FullFileName)
Dim oControlDef As ControlDefinition
Set oControlDef = oCommandMgr.ControlDefinitions("DrawingBaseViewCmd")
Call oControlDef.Execute

Exit Sub
ErrorHandler:
If Err.Number = 91 Then
MsgBox "er is geen document open"
ElseIf Err.Number = 13 Then
MsgBox "er is geen assemblage open"
Else
MsgBox Err.Description & " " & Err.Number
End If
End Sub

En om vanuit part omgeving een tekening te starten kan men deze code gebruiken:

Public Sub CreaDrawing()

On Error GoTo ErrorHandler

Dim oDrawDoc As DrawingDocument
Set oDrawDoc = ThisApplication.Documents.Add(kDrawingDocumentObject, ThisApplication.FileManager.GetTemplateFile(DocumentTypeEnum.kDrawingDocumentObject))

Dim oCommandMgr As CommandManager
Set oCommandMgr = ThisApplication.CommandManager

Call oCommandMgr.PostPrivateEvent(kFileNameEvent, ThisApplication.ActiveDocument.FullFileName)

Dim oControlDef As ControlDefinition
Set oControlDef = oCommandMgr.ControlDefinitions("DrawingBaseViewCmd")

Call oControlDef.Execute

Exit Sub

ErrorHandler:
If Err.Number = 91 Then
MsgBox "er is geen document open"
Else
MsgBox Err.Description & " " & Err.Number
End If

End Sub

Ik ben bezig aan een inox keukenkast bestaande uit bovenblad, onderblad , zijwanden, tussenwanden ,...

ik maak gebruik van iparts /iassemblies voor de wanden. Kun je via deze "rule" mits wat aanpassingen ook de tekeningen (idw) voor elk gebruikt part in de samenstelling distilleren ?

Bestaat er trouwens een lijst met (gangbare/ alle ) commando's in ilogic ? (of dezelfde als in VB.net ?)

Als het lukt graag een beetje "foolproof"-uitleg . Mijn excuses hiervoor maar ik ben nog niet vertrouwd met de vele mogelijkheden van ilogic/vb.net

Groeten, Hans

als je mij stap per stap uitlegt wat je nu manueel doet, kan ik je beter volgen...

Bedankt alvast om te reageren, ik had vandaag een vrije dag maar zal proberen morgen vanop het werk de stappen te tonen/uit te leggen.

heb eindelijk eens de tijd genomen om wat meer te vertellen over kast. Zoals je ziet op de schematische tekening, wordt er een onderblad met poten ( iam ) en bovenblad (iam wegens ingebouwde versteviging) ingevoerd en geconstraint. De afmetingen evenals vele andere parameters worden via excel aangestuurd. Dan wordt een Linkerwand ( ipart ) en een Rechterwand (ipart ) ingevoerd. Waarom iparts? Wat voor linker- of rechterwand wordt ingevoerd is afhankelijk van de welke module er daar gevraagd wordt. Dit kan een lade-, legplanken-, deur-of schuifdeurenmodule zijn. Dus zowel voor de L- als R-wand zijn er 4 iparts. De L- & R-wand hebben elk hun eigen rule om de juiste wanden aan te plaatsen.

Vervolgens wordt naargelang het aantal gewenste modules ( max 8) gekeken welke Tussenwand (ipart/ 16 stuks) geplaatst moet worden. Dit gebeurt via een rule per module waarbij ook de corresponderende achterwand wordt geplaatst. Bepaalde constraints worden geactiveerd of onderdrukt naargelang de gevraagde module . Een module kan ook volledig worden onderdrukt .

Elke zijwand is  ( L-, R- & tussenwanden ) een iam die bestaat uit 3-4 onderdelen. Ook zijn bijna alle onderdelen , op poten & versteviging na sheet metal onderdelen

Daarom zou het fijn zijn indien via een rule van elk onderdeel en onderliggende onderdelen in de hoofdsamenstelling een werktekening(en)  kan gemaakt worden.  

Ondertussen heb ik wel al bepaalde iparts zoals bijv. achterwand opgesplitst in onderdelen achterwand 1,2,3 en dit zijn nu aparte parts. Het lukte niet om in de stukkenlijst het desbetreffende ipart weer te geven . Bijv. Tussenwand 4 in de hoofdsamenstelling is TW10  uit het stuk TW ( ipart) en de juiste afmetingen hiervan evenals de juiste onderliggende onderdelen

( TW 10= bijv tussenwand voor deur L/lade R  en bestaat uit standaard wandelement, verstevigingselement en een afdekplaat )

Hopelijk heb ik hiermee voldoende info gegeven over de gebruikte werkwijze

Groeten Hans

Bijlagen:

Op je vraag: Bestaat er trouwens een lijst met gangbare/alle) commando's, zou ik je graag verwijzen naar de in Inventor aanwezige "Programming Help" (zit ergens onder het ? symbool) en de iLogic Snippets. Onder de iLogic snippets zitten heel veel standaard commando's (gangbare). De Programming Help bevat alle commando's voor het programmeren in vb.net maar dit is iets complexer (alle commando's). Bijna alles wat je manueel in Inventor kan doen is ook uit te voeren dmv iLogic.

Rob.

Bedankt voor je reactie . Ik zal op die pagina's dan eens rondneuzen.

Ik hoopte wel dat er een soort document zoals bijgevoegd document zou bestaan specifiek voor ilogic.

Bijlagen:

RSS

Interessante links

Word Fan!

Inventor Wizard Cartoons

Video's

  • Video's toevoegen
  • Alles weergeven

© 2020   Gemaakt door Stefaan Boel.   Verzorgd door

Banners  |  Een probleem rapporteren?  |  Algemene voorwaarden