Beyond Inventor Wizard... The Community!

Autodesk Inventor en AutoCAD Forum

Beste 

Ik heb in bijlage een code gemaakt om een topview op een idw te plaatsen... Is maar basis versie ik moet nog afwerken zoals opslaan enzo. Maar ik zit even vast. Ik wil een ipropertie gaan gebruiken als die een bepaalde waarde heeft moet de rule lopen. Nu opzich werkt dit maar hij gebruikt de ipropertie  van mijn samenstelling maar ik wil dat hij als hij part opent gaat kijken en als de ipropertie  van het part de waarde muppet heeft dan moet hij de rule laten lopen en anders de file sluiten en naar de volgende. Dit alles werkt maar ik loop enkel vast op stuk dat hij de ipropertie  van de part neemt en niet van de samenstelling 

Dus even samenvatten nu rekent hij met de waarde van de samenstelling maar ik wil dat hij gaat kijken in het part wat de waarde van de ipropertie  daar is en die gaat gebruiken..

Wie kan mij helpen en mij uit mijn zoekwerk verlossen :)

Dit is de regel waar ik de mist in ga denk ik!

 


If iProperties.Value(xdoc,"Project", "engineer") ="muppet" Then

in bijlage de code

code.txt    


Alvast dank voor de hulp...

Groeten

Aantal maal bekeken: 263

Bijlagen:

Hierop reageren

Berichten in deze discussie

Moet je niet niet: iProperties.ValueInDoc("filename.ipt", "property tab name", "property name") gebruiken?

Succes.

Robert, dit klopt idd ivm het aanspreken van je part iproperties, maar je kan ook 

xDoc.fullfilename of iets dergelijks gebruiken...

Ewoud, 

Ik heb even je code bekeken, ik heb zelf ook deze addin geschreven om van alle plaatstalen onderdelen een idw te gaan maken, dus ik weet ondertussen een beetje de do's en don'ts.

Dit stukje:

Dim xDoc As Document
Zou ik vervangen door As PartDocument en indien mogelijk de subtype ook nog eens definiëren als je met sheetmetal werkt
If xDoc.ComponentDefinition.Type = 150995200 Then ...


Dit stukje: 

Dim aDoc As DocumentsEnumerator = oDoc.AllReferencedDocuments

zou ik vervangen door:

Public Sub GetPartOccurrences()

    ' Get the active assembly. 

    Dim oAsmDoc As AssemblyDocument 
Set oAsmDoc = ThisApplication.ActiveDocument

    ' Get the assembly component definition. 

    Dim oAsmDef As AssemblyComponentDefinition 
Set oAsmDef = oAsmDoc.ComponentDefinition

    ' Get all of the leaf occurrences of the assembly. 

    Dim oLeafOccs As ComponentOccurrencesEnumerator 
Set oLeafOccs = oAsmDef.Occurrences.AllLeafOccurrences

    ' Iterate through the occurrences and print the name. 

    Dim oOcc As ComponentOccurrence 
For Each oOcc In oLeafOccs
Debug.Print oOcc.Name
Next
End Sub

crf deze website is dit de best practice voor wat je wil bereiken, anders ga je in het geval van een derived part,
zaken gaan exporteren die niet mogen (omdat de moeder van je derived niet (altijd) in je assembly zit.
traverseanassembly

Daarnaast zou ik ook thisapplication.silentoperation = true gaan gebruiken (wel terug op false zetten op het
einde van de code, of bij het foutopvangen (anders heb je geen dialoogschermen meer ;-) )

Waarom doe je in het begin dit? xDoc.Save
Als het is om een update te doen ben je beter af met xdoc.rebuild of rebuildall.

Als je nog zaken hebt, laat maar weten hé...

Dankje Fréderic en Robert

Hiermee kan ik zeker verder.  Morgen weet ik wat er me te doen staat!

 

Waarom die save is inderdaad om de laatste versie te hebben goed gezien.

Ik ga het iets anders aanpakken de controle van de iPropertie in het part zal ik vooraan proberen te plaatsen zodat ik geen onnodige parts moet openen en enkel mij platen. Ik denk maar aan bouten en moeren,kokers die heb ik niet nodig...

Frédrick ik moet alles nog eens bekijken maar ongelooflijk bedankt. 

Dit is mijn eerste addin  die geen samenstelling aanstuurt of een part. Dus is wat zoeken maar ik geloof in de kracht van ilogic en vba in inventor. Daarom dat ik me erin wil verdiepen...

Beste

Ik ben er bijna er staat me nog 1 iets in de weg. 

Wij werken veel met een derive waar de plaat opgetekend staat. Dit vormt als probleem dat het mogelijk is dat de topview niet evenwijdig staat met een referentievlak. Dus daarom heb ik voorzien in mijn code als het een part is met een derive dat hij de vraag stelt voordat hij opslaat. "view goedgekeurd?" Indien ik negatief antwoord zou ik graag de functie custom View Orientation kunnen gebruiken en zo met look at de echte top van mijn plaat kiezen.

Nu heb ik hier een lijstje met codes om de verschillende views te verkrijgen. Maar ik zie niet onmiddellijk die functie...

kDefaultViewOrientation = 10753
kTopViewOrientation = 10754
kRightViewOrientation = 10755
kBackViewOrientation = 10756
kBottomViewOrientation = 10757
kLeftViewOrientation = 10758
kIsoTopRightViewOrientation = 10759
kIsoTopLeftViewOrientation = 10760
kIsoBottomRightViewOrientation = 10761
kIsoBottomLeftViewOrientation = 10762
kArbitraryViewOrientation = 10763
kFrontViewOrientation = 10764
kCurrentViewOrientation = 10765
kSavedCameraViewOrientation = 10766
kFlatPivotRightViewOrientation = 10767
kFlatPivotLeftViewOrientation = 10768
kFlatPivot180ViewOrientation = 10769
kFlatBacksideViewOrientation = 10770
kFlatBacksidePivotRightViewOrientation = 10771
kFlatBacksidePivotLeftViewOrientation = 10772
kFlatBacksidePivot180ViewOrientation = 10773

oBaseView = oSheet.DrawingViews.AddBaseView(oPartDoc,oPoint1, 1/1,kBottomViewOrientation , kHiddenLineDrawingViewStyle, "Default")

Dus de vetgedrukte lijn roep ik mijn view op. Dus ik mijn bedoeling was om eerst een view te zetten dan die vraag te stellen. En bij een negatief antwoord zou ik graag in custom view orientation terecht komen. Is dit mogelijk?

Groeten

Ewoud

Opgelost heb een programma laten stoppen met een macro en een vba modeless form. Zo kan je een rule pauzeren en laten  herstarten wanneer je een manuele actie gedaan hebt. Alles werkt nu tnx voor de support...

RSS

Interessante links

Word Fan!

Inventor Wizard Cartoons

Video's

  • Video's toevoegen
  • Alles weergeven

© 2018   Gemaakt door Stefaan Boel.   Verzorgd door

Banners  |  Een probleem rapporteren?  |  Algemene voorwaarden