I have a Part(Part1) that I am replacing with a new part (different filename (Part2)).
• I do a PDM search for Part1
• I do a where used and I do not get a complete list.
I have assemblies that include Part1 but are not listed in the “where used” (Show All Levels or Show Top Level).
The part is nested in an internal sub assemble and the sub assemble are promoted.
They show in the drawing BOM correctly but not in a PDM search.
Am I missing something? Does PDM NOT recognize when parts are in an internal sub assembly?
I would check “All Versions” in this drop down. Also “Do not show configurations” I think gives you the results for all configurations.
What SOLIDWORKS version are you using?
The “Show All Versions” option only shows the where used of all versions of the root [child] file. To see the where used of all the versions of a parent file you need to either Show All Levels and drill down the tree on every version of every where used or open the parents in new window with Browse To.
There is at least one ER sinking to the bottom of the SWYMp regarding this.
Edit: I missed the point about the subassembly(ies) being promoted, in that case my post may be irrelevant. I have zero experience with promoted assemblies.
2021 sp5.1
You mentioned that the part is a promoted child. There are a few SPRs having to do with promoted children not showing up in the PDM computed BOM. Perhaps this is related. Do the promoted children show up in the computed BOM in PDM?
Have the assemblies that are missing from the where used been checked out and saved in SW2021?
From the Knowledge Base:
================================
Question | In SOLIDWORKS® PDM 2021, how does the promote configuration feature work for files that are saved and checked into a file vault in PDM 2020 or earlier version? |
---|---|
Answer | SOLIDWORKS® PDM 2021 SQL now captures the promote configuration information. Therefore, if you checked in a file with PDM 2020 or earlier, you must rebuild and check in that file with PDM 2021. |
For example, when you check in a SOLIDWORKS file that you created in 2020 with PDM 2021, the promote configuration feature works correctly. If you upgraded the PDM vault from 2020 to 2021, the existing 2020 files do not automatically update the promote configuration function in the Bill Of Materials. SOLIDWORKS PDM recognizes the promote configuration feature. Therefore, the issue is not specific to the version of the SOLIDWORKS file. The issue is specific to when you saved the file in PDM.|
they were created in v 2021 within the past year.
By the way, Thank you for your insights!
I think you’ve bumped up against a limitation. I believe that ‘Real’ parts inside virtual assemblies do not show up in ‘Where-Used’.
I think this bit was missed by everyone, he mentioned “internal sub-assembly” which I think he meant 'Virtual Component" that is saved internal to another assembly.
It is a limitation of the PDM Where-used interface, at least up to 2023. I haven’t test new versions. The data is in the dB and I can write SQL queries that show them in a where -used search. PDM treats virtual sub-assemblies and parts just like regular assy/parts. The only flag is the DOCUMENTS table in the column “ObjectTypeID” Regular documents are a 1 and virtual components are a two. Outside of that, they get the same XREFs (BOM links) that a regular assembly has. So the where-used function is only using type 1 it appears.
Declare @Filter AS VarChar(255)
SET @Filter = '%123794-01.%' --optional path and file filter for part file (do not forget %'s)
--Example--SET @Filter = '%test23.sldprt%'
SELECT
DOCCHD.Filename as 'Child File',
PRJCHD.Path as 'Child File Path',
DOCPRT.Filename AS 'Parent File',
PRJPRT.Path AS 'Parent File Path',
CAST(X.RevNr AS VarChar) + '/' + CAST(DOCPRT.LatestRevisionNo AS VarChar) AS Version,
Latest=(CASE WHEN X.RevNr = DOCPRT.LatestRevisionNo THEN 'Latest' ELSE '' END)
,DOCCHD.deleted
FROM
Documents DOCCHD --Extract data for child part
FULL OUTER JOIN DocumentsInProjects DIPCHD ON DOCCHD.DocumentID = DIPCHD.DocumentID
FULL OUTER JOIN Projects PRJCHD ON PRJCHD.ProjectID = DIPCHD.ProjectID
FULL OUTER JOIN XRefs X --Join together using XRefs table
ON DOCCHD.DocumentID=X.XRefDocument
FULL OUTER JOIN Documents DOCPRT --Extract data for parent file(s)
ON DOCPRT.DocumentID=X.DocumentID
FULL OUTER JOIN DocumentsInProjects DIPPRT ON DIPPRT.DocumentID=DOCPRT.DocumentID
FULL OUTER JOIN Projects PRJPRT ON PRJPRT.ProjectID = DIPPRT.ProjectID
WHERE (DOCCHD.ExtensionID=(SELECT ExtensionID FROM FileExtension WHERE Extension='sldprt')
OR DOCCHD.ExtensionID=(SELECT ExtensionID FROM FileExtension WHERE Extension='sldasm'))
--AND PRJCHD.Path+DOCCHD.FileName like @Filter --optional path and file filter
AND DOCCHD.FileName like @Filter --optional path and file filter
ORDER BY PRJCHD.Path+DOCCHD.FileName, DOCPRT.FileName, X.XRefRevNr, X.RevNr
I’m sorry for causing confusion.
It is NOT a Virtual Component. It is a part that is in PDM.
The component is in an internal subassembly.
ASM1(PDM)
- part1(PDM)
- part2(PDM)
- part3(PDM)
- SUB ASM (INTERNAL and promoted)
4.1. part4(PDM)
I have several assemblies that uses part4.
I would like to replace everywhere there is a part4(PDM) with a part5(PDM).
I do a PDM search for part4 and find the component.
I go to the “where used” tab on part4 and it does not list all of the assemblies.
I KNOW part4 exists in other assemblies where it is contained in an INTERNAL and promoted sub assembly, as I have opened them.
All the parts are in the vault.
Just to be clear, when you call your SUB ASM ‘internal’, you mean that the subassembly is a virtual assembly inside a higher level assembly, correct?
If so, like I said above, the where-used information for non-virtual components inside virtual assemblies does not appear to be directly available.
Here’s an example of what I think you are doing:
I have an assembly (TOP ASSY.SLDASM). Inside it is a virtual subassembly (INTERNAL SUBASSEMBLY^TOP ASSY.SLDASM). The virtual subassembly has 2 non-virtual components (433566.sldprt and 435645.sldprt). The contains tab looks like this:
The configuration settings for INTERNAL SUBASSEMBLY^TOP ASSY.SLDASM are set to promote the children:
The BOM correctly shows the children instead of the subassembly:
However, if I search for 433566, the Where-Used tab will show nothing about the fact that 433566 is used in INTERNAL SUBASSEMBLY^TOP ASSY.SLDASM or anywhere above it:
Like I said above. You’ve bumped into a limitation.
Yes. You are correct and we are on the same page.
Seems silly to me that components of a virtual sub do not show up.
I was hoping that they would act like a “promoted” sub assemblies.
Thanks for your help.
The Contains and Where-Used tabs are separate from the “BOM” view and the promote option for BOMs.
Contains shows the virtual sub-assy and its components. Where-used isn’t working fully even though the data is there. Not sure if is on purpose or not.
My first attempt at the query was working like the Where-used tab, it wasn’t showing the virtual assy. Turns out it was my table joins. The virtual component docs are in the Documents table like any other document, but they not in the “Documents in Projects” (folders) table. I had to change the JOIN to a FULL OUTER JOIN. Then you just get a NULL on the folder path for the virtual document.
From KB BR10000363413
The ‘Where Used’ tab for a physical SWx part that is inserted into an internal (virtual) sub-assembly does not show any parent references
Portfolio / Domain: SOLIDWORKS Desktop / E-Apps
Product: SOLIDWORKS PDM
OS: Windows 11
Detected level(s): SOLIDWORKS 2023 SP4
Platform: n/a
Description Tested and reproduced on Win10 with SW and SWPDM 2023sp3 in default vault with the following steps: 1. Open SOLIDWORKS and create an assembly file with a virtual sub-assembly that contains a physical part file 2. Check-into SWPDM 3. In local Vault View - Select the part file and take a look of the Where Used tab, the virtual assembly won’t be there. Closure Information This issue is reported to Dassault Systèmes development team.
Sorry to hijack the thread with a SQL question, I am trying to catch up on database skills too.
When I run SQL queries like this one do its tables stay inside the memory until a sort of purge command is invoked or they are just created and deleted on the fly? Maybe stored inside tempdb? I am assuming they are temporary tables of some sort.
My query wasn’t creating any user temp tables. Behind the scenes, not sure what SQL does when joining, maybe its some kind of temp table in tempdb.
The results of queries run in SQL Server Management Studio are stored in memory unless you do something like:
SELECT INTO TEMP TABLE #myTempTable…