Sunday, February 05, 2012
Correct occurence
Last Post 19 Jan 2010 09:25 AM by Julian Guillo. 4 Replies.
AddThis - Bookmarking and Sharing Button Printer Friendly
Sort:
PrevPrev NextNext
You are not authorized to post a reply.
Author Messages
Jara CtverakUser is Offline
New Member
New Member
Posts:22

--
11 Jan 2010 04:37 AM  
Hello all,
 
I need to compute reference from down to top. This mean for example:
User selects one of screws in assembly and I need to now which one.
Assembly structure can be like this:
 
a
|-b
|  |-c          
|  |  |-screw
|  |  |-screw
|  |
|  |-c          
|    |-screw
|    |-screw
|
|-d
  |-b
    |-c          
    |  |-screw
    |  |-screw
    |
    |-c          
      |-screw
      |-screw
 

So I have selected from user reference of screw. This reference has methods:
 
Object            - occurence of screw
ImmediateParent   - occurence of c-subassembly (but not reference)
Parent            - occurence of c-subassembly (but not reference)
 
"c" subassembly occurence give me only information which of "c" subassemblies it is in "b" subassembly but I don't know which of "b" occurences is parrent of selected screw.
 
Could anybody give an idea how to find correct occurence?
 
Thanks,
Best Regards,
Jara


JRUser is Offline
New Member
New Member
Posts:91

--
11 Jan 2010 06:53 AM  
Hi Jara,

if you loop the structure from down to top with a reference, you have ImmediateParent as reference, only in toplevel is the ImmadiateParent an occurrence and not reference.

Best Regards
JR


Julian GuilloUser is Offline
Guru
Basic Member
Basic Member
Posts:125

--
11 Jan 2010 11:11 AM  

Jara,
I saw you were still asking in the SE newsgroup.

JR gave you the correct answer, and i made a little example for you. It's still VB6 but i hope it's enough.

Just open the a.asm file, select an screw and run the tree.exe app.
You will be able to know which is the "down to top" path and select any intermediate occurrence.

Regards,

Julian

 


1111113518271.zip

Jara CtverakUser is Offline
New Member
New Member
Posts:22

--
19 Jan 2010 08:36 AM  
Hello Julian,
 
Thanks to both of you who answered my question I know little bit more how to compute reference.
 
But I still have trouble that last reference I got is from first subaasembly and next immediate parent is occurence of first subassembly. For boolean of screw I need reference of crew in top assembly so i tried compute reference of last assembly level via .CreateReference but it doesn't work.
 
 
 
    public SolidEdgeFramework.Reference getUpRefOfRef(
            SolidEdgeFramework.Reference refDoc, ref int assemLevelsCount)
    {     
      if (refDoc.Type != SolidEdgeFramework.ObjectType.igReference)
      {
        return refDoc;
      }
      else
      {
        SolidEdgeFramework.Reference upRefDoc = null;
 
        try
        {
          upRefDoc =
            (SolidEdgeFramework.Reference)refDoc.ImmediateParent;
        }
        catch
        {
          SolidEdgeAssembly.Occurrence firstSubAssemOcc =
            (SolidEdgeAssembly.Occurrence)refDoc.ImmediateParent;
 
          SolidEdgeAssembly.Occurrences occs =
            (SolidEdgeAssembly.Occurrences)firstSubAssemOcc.Parent;
 
          SolidEdgeAssembly.AssemblyDocument topAssemDoc =
            (SolidEdgeAssembly.AssemblyDocument)occs.Parent;
 
          refDoc = (SolidEdgeFramework.Reference)
            topAssemDoc.CreateReference(firstSubAssemOcc, refDoc);
 
          assemLevelsCount++;
 
          return refDoc;
        }
 
        assemLevelsCount++;
 
        return getUpRefOfRef(upRefDoc, ref assemLevelsCount);
      }
    }
 
 
 
Thanks for any advice.
Best Regards,
Jara


Julian GuilloUser is Offline
Guru
Basic Member
Basic Member
Posts:125

--
19 Jan 2010 09:25 AM  
Jara,
What is your objective?
Do you want to substract one of the screws to an existing part at first level in the main assembly?
Just to get an idea of what you want to achieve...


You are not authorized to post a reply.

Active Forums 4.2
Copyright © 2011 JasonNewell.NET