Control scale while create derived part from the given part model with C#

Control scale while create derived part from the given part model with C#

Maxim-CADman77
Advisor Advisor
272 Views
4 Replies
Message 1 of 5

Control scale while create derived part from the given part model with C#

Maxim-CADman77
Advisor
Advisor

I need to create derived part from the given part model with C#

 

In VB.Net I can do this like:

 

Dim oDerPrt As PartDocument = oInv.Documents.Add(DocumentTypeEnum.kPartDocumentObject, Nothing, False)
Dim oDerivedPartDef As DerivedPartUniformScaleDef = oDerPrt.ComponentDefinition.ReferenceComponents.DerivedPartComponents.CreateUniformScaleDef(oPart.FullFileName)
oDerivedPartDef.ScaleFactor = 1
oDerivedPartDef.ExcludeAll()
oDerivedPartDef.UseColorOverridesFromSource = False
oDerivedPartDef.Solids(oSB1.Name).IncludeEntity = True
oDerivedPartDef.Solids(oSB2.Name).IncludeEntity = True

oDerPrt.ComponentDefinition.ReferenceComponents.DerivedPartComponents.Add(oDerivedPartDef)

 


My best attempt to convert this to C# for now is:

 

PartDocument oDerPrt = (PartDocument)oInv.Documents.Add(DocumentTypeEnum.kPartDocumentObject, null, false);
DerivedPartUniformScaleDef oDerivedPartDef = oDerPrt.ComponentDefinition.ReferenceComponents.DerivedPartComponents.CreateUniformScaleDef(oPart.FullFileName);
oDerivedPartDef.ScaleFactor = 1;
oDerivedPartDef.ExcludeAll();
oDerivedPartDef.UseColorOverridesFromSource = false;
oDerivedPartDef.Solids[oSB1.Name].IncludeEntity = true;
oDerivedPartDef.Solids[oSB2.Name].IncludeEntity = true;

oDerPrt.ComponentDefinition.ReferenceComponents.DerivedPartComponents.Add(oDerivedPartDef);

 


But compiler finds error " cannot convert from 'Inventor.DerivedPartUniformScaleDef' to 'Inventor.DerivedPartDefinition' ".

 

What I'm missing?

Please vote for Inventor-Idea Text Search within Option Names

0 Likes
Accepted solutions (2)
273 Views
4 Replies
Replies (4)
Message 2 of 5

Maxim-CADman77
Advisor
Advisor

The code probably should be:

 

DerivedPartDefinition oDerivedPartDef = (DerivedPartDefinition)oIPT_Tmp.ComponentDefinition.ReferenceComponents.DerivedPartComponents.CreateUniformScaleDef(oPart.FullFileName);
oDerivedPartDef.ExcludeAll();
oDerivedPartDef.UseColorOverridesFromSource = false;
oDerivedPartDef.Solids[oSB1.Name].IncludeEntity = true;
oDerivedPartDef.Solids[oSB2.Name].IncludeEntity = true;

oDrvPrt.ComponentDefinition.ReferenceComponents.DerivedPartComponents.Add(oDerivedPartDef);

 

But then I need to understand how to control/modify Scale (in case I need it)

Please vote for Inventor-Idea Text Search within Option Names

0 Likes
Message 3 of 5

jjstr8
Collaborator
Collaborator
Accepted solution

In your original code you didn't cast to a DerivedPartDefinition.

 

oDerPrt.ComponentDefinition.ReferenceComponents.DerivedPartComponents.Add((DerivedPartDefinition)oDerivedPartDef);
0 Likes
Message 4 of 5

Maxim-CADman77
Advisor
Advisor

@jjstr8 

I wonder...
... cast DerivedPartUniformScaleDef to DerivedPartDefinition possibility ...

... was it just your guessing or what is the source of that knowledge?

Please vote for Inventor-Idea Text Search within Option Names

0 Likes
Message 5 of 5

jjstr8
Collaborator
Collaborator
Accepted solution

@Maxim-CADman77  -  No guesswork required.  It's just what the method requires.  Intellisense in Visual Studio will also show you that when you hover over '.Add'.  The API help shows that DerivedPartCoordinateSystemDef, DerivedPartTransformDef, and DerivedPartUniformScaleDef are all derived classes of DerivedPartDefinition.  Unfortunately the API help example is in VBA, which automatically makes the cast for you.  It's the same situation with the classes derived from the Documents class.

 

jjstr8_0-1664387034326.png

 

0 Likes