Пример #1
0
        /// <summary>
        /// Replace drawing references
        /// </summary>
        /// <param name="drawingDocument">Drawing with dirty references</param>
        public void replaceDrawingRef(DrawingDocument drawingDocument)
        {
            File drawingFile = drawingDocument.File;
            FileDescriptorsEnumerator fileDescriptors = drawingFile.ReferencedFileDescriptors;

            Dictionary <string, string> referencedFiles = new Dictionary <string, string>();

            foreach (FileDescriptor f in fileDescriptors)
            {
                int idx = f.FullFileName.LastIndexOf('\\');
                referencedFiles.Add(f.FullFileName.Substring(idx + 1), f.FullFileName.Substring(0, idx));
            }

            #region "Replace Drawing References"
            fileDescriptors[referencedFiles["MESH BASKET.iam"] + "\\MESH BASKET.iam"].ReplaceReference(location + "\\" + partNumber + ".iam");
            fileDescriptors[referencedFiles["FRAME.ipt"] + "\\FRAME.ipt"].ReplaceReference(location + "\\FRAME.ipt");
            fileDescriptors[referencedFiles["BOTTOM T BAR.ipt"] + "\\BOTTOM T BAR.ipt"].ReplaceReference(location + "\\BOTTOM T BAR.ipt");
            fileDescriptors[referencedFiles["HANDLE.ipt"] + "\\HANDLE.ipt"].ReplaceReference(location + "\\HANDLE.ipt");
            fileDescriptors[referencedFiles["MESH.ipt"] + "\\MESH.ipt"].ReplaceReference(location + "\\MESH.ipt");
            fileDescriptors[referencedFiles["SM CORNER.ipt"] + "\\SM CORNER.ipt"].ReplaceReference(location + "\\SM CORNER.ipt");
            fileDescriptors[referencedFiles["SM LENGTH EDGE.ipt"] + "\\SM LENGTH EDGE.ipt"].ReplaceReference(location + "\\SM LENGTH EDGE.ipt");
            fileDescriptors[referencedFiles["VERTICAL T BAR.ipt"] + "\\VERTICAL T BAR.ipt"].ReplaceReference(location + "\\VERTICAL T BAR.ipt");
            fileDescriptors[referencedFiles["MESH DETAIL.ipt"] + "\\MESH DETAIL.ipt"].ReplaceReference(location + "\\MESH DETAIL.ipt");
            #endregion
        }
Пример #2
0
        /// <summary>
        /// Replace drawing references
        /// </summary>
        /// <param name="drawingDocument">Drawing with dirty references</param>
        public void replaceDrawingRef(DrawingDocument drawingDocument)
        {
            File drawingFile = drawingDocument.File;
            FileDescriptorsEnumerator fileDescriptors = drawingFile.ReferencedFileDescriptors;

            //using (System.IO.StreamWriter refList = System.IO.File.CreateText(@"\\msw-fp1\user$\wchan\Documents\References.txt"))
            //{
            //    foreach (FileDescriptor f in fileDescriptors)
            //    {
            //        refList.WriteLine(f.FullFileName);
            //    }
            //}

            Dictionary <string, string> referencedFiles = new Dictionary <string, string>();

            foreach (FileDescriptor f in fileDescriptors)
            {
                int idx = f.FullFileName.LastIndexOf('\\');
                referencedFiles.Add(f.FullFileName.Substring(idx + 1), f.FullFileName.Substring(0, idx));
            }

            #region "Replace Drawing References"
            fileDescriptors[referencedFiles["Crosswire Basket.iam"] + "\\Crosswire Basket.iam"].ReplaceReference(location + "\\" + partNumber + ".iam");
            fileDescriptors[referencedFiles["Crosswire X.ipt"] + "\\Crosswire X.ipt"].ReplaceReference(location + "\\Crosswire X.ipt");
            fileDescriptors[referencedFiles["Crosswire Z.ipt"] + "\\Crosswire Z.ipt"].ReplaceReference(location + "\\Crosswire Z.ipt");
            fileDescriptors[referencedFiles["Mid Frame.ipt"] + "\\Mid Frame.ipt"].ReplaceReference(location + "\\Mid Frame.ipt");
            fileDescriptors[referencedFiles["Top Frame.ipt"] + "\\Top Frame.ipt"].ReplaceReference(location + "\\Top Frame.ipt");
            #endregion
        }
Пример #3
0
        /// <summary>
        /// Recursive method that will replace all the references
        /// In the assembly document and all the child assembly documents
        /// </summary>
        /// <param name="refs"></param>
        /// <param name="referenceData"></param>
        /// <param name="skip"></param>
        private static void Recurse(FileDescriptorsEnumerator refs, List <ReferenceDto> referenceData, List <string> skip = null)
        {
            // Loop through the references in the document
            foreach (FileDescriptor r in refs)
            {
                // get the full path of the file
                var path = r.FullFileName;

                // If any of the files are in skip then continue
                if (skip != null && skip.Count > 0)
                {
                    if (skip.Any(x => r.FullFileName.ToUpper().Contains(x.ToUpper())))
                    {
                        continue;
                    }
                }

                // Get the file name that matches the file ref
                var refPath = referenceData.FirstOrDefault(x => x.OriginalReference.ToUpper() == path.ToUpper());

                // if not found then continue
                if (refPath == null)
                {
                    continue;
                }

                // Replace the reference with item 2
                r.ReplaceReference(refPath.NewReference);

                // If the document is an assembly document
                if (r.ReferencedFileType == FileTypeEnum.kAssemblyFileType)
                {
                    // Get the reference file
                    Inventor.File file = r.ReferencedFile;

                    // Recurse through the sub assembly files
                    Recurse(file.ReferencedFileDescriptors, referenceData, skip);
                }
            }
        }