def __init__(self, __revit__, view, model): self.app = __revit__.Application self.doc = __revit__.ActiveUIDocument.Document self._view = view self._model = model self.excel_parameters = [] self.exl_file_dir_path = "C:\\" self.config_file_dir_path = os.path.dirname(os.path.realpath(__file__)) self._open_xl_file_Dialog = WinForms.OpenFileDialog() self._open_config_file_Dialog = WinForms.OpenFileDialog() self._save_config_file_Dialog = WinForms.SaveFileDialog() self._worker = BackgroundWorker() self._connectSignals()
def FromVegas(myVegas: Vegas): global pyVEGAS pyVEGAS = myVegas studioFile = StudioFile() openFileDialog1 = WinForms.OpenFileDialog() openFileDialog1.Filter = "Pinnacle Studio Movie(*.axp)|*.axp|All files (*.*)|*.*" openFileDialog1.FilterIndex = 1 openFileDialog1.RestoreDirectory = True openFileDialog1.AddExtension = True # openFileDialog1.InitialDirectory = "\\VEGASPython"; openFileDialog1.Title = "Load Pinnacle Studio Movie" if (openFileDialog1.ShowDialog() == WinForms.DialogResult.OK): if studioFile.openFile(openFileDialog1.FileName): print("Import Studio Movie started: ", openFileDialog1.FileName) print("Create Filename list") studioFile.createEventFilenameList() print("Filename list created") print("Check Files") studioFile.checkFileList() print("Create Track Event list") trackEventList = studioFile.getTrackEventList() studioFile.closeFile() print("Track Event list created") print("Create Timeline") createTimeline(trackEventList) print("Timeline created")
def create_file_dialog(dialog_type, directory, allow_multiple, save_filename, file_types, uid): window = BrowserView.instances[uid] if not directory: directory = os.environ['HOMEPATH'] try: if dialog_type == FOLDER_DIALOG: dialog = WinForms.FolderBrowserDialog() dialog.RestoreDirectory = True if directory: dialog.SelectedPath = directory result = dialog.ShowDialog(window) if result == WinForms.DialogResult.OK: file_path = (dialog.SelectedPath, ) else: file_path = None elif dialog_type == OPEN_DIALOG: dialog = WinForms.OpenFileDialog() dialog.Multiselect = allow_multiple dialog.InitialDirectory = directory if len(file_types) > 0: dialog.Filter = '|'.join([ '{0} ({1})|{1}'.format(*parse_file_type(f)) for f in file_types ]) else: dialog.Filter = localization[ 'windows.fileFilter.allFiles'] + ' (*.*)|*.*' dialog.RestoreDirectory = True result = dialog.ShowDialog(window) if result == WinForms.DialogResult.OK: file_path = tuple(dialog.FileNames) else: file_path = None elif dialog_type == SAVE_DIALOG: dialog = WinForms.SaveFileDialog() dialog.Filter = localization[ 'windows.fileFilter.allFiles'] + ' (*.*)|' dialog.InitialDirectory = directory dialog.RestoreDirectory = True dialog.FileName = save_filename result = dialog.ShowDialog(window) if result == WinForms.DialogResult.OK: file_path = dialog.FileName else: file_path = None return file_path except: logger.exception('Error invoking {0} dialog'.format(dialog_type)) return None
def FromVegas(myVEGAS): global pyVEGAS pyVEGAS = myVEGAS studioFile = StudioFile() openFileDialog1 = WinForms.OpenFileDialog() openFileDialog1.Filter = "Media File with PinnStudio Scenelist(*.scn.xml)|*.scn.xml|All files (*.*)|*.*" openFileDialog1.FilterIndex = 1 openFileDialog1.RestoreDirectory = True openFileDialog1.AddExtension = False # openFileDialog1.InitialDirectory = "\\VEGASPython"; openFileDialog1.Title = "Load Pinnacle Studio Scenefile" if (openFileDialog1.ShowDialog() == WinForms.DialogResult.OK): sceneFilename = openFileDialog1.FileName mediaFilePath = os.path.dirname(sceneFilename) mediaFilename = sceneFilename.replace(".scn.xml", "") if studioFile.openFile(sceneFilename): print("Import Studio Movie started: ", sceneFilename) print("Create Track Event list") trackEventList = studioFile.getTrackEventList(mediaFilename) studioFile.closeFile() print("Track Event list created") print("Create SubClips") createSubClips(trackEventList) print("SubClips created")
def FromVegas(myVegas): studioFile = StudioFile() openFileDialog1 = WinForms.OpenFileDialog() openFileDialog1.Filter = "Media File with PinnStudio Scenelist(All files (*.*)|*.*" openFileDialog1.FilterIndex = 1 openFileDialog1.RestoreDirectory = True openFileDialog1.AddExtension = False # openFileDialog1.InitialDirectory = "\\VEGASPython"; openFileDialog1.Title = "Load Pinnacle Studio Movie" if (openFileDialog1.ShowDialog() == WinForms.DialogResult.OK): mediaFilename = openFileDialog1.FileName mediaFilePath = os.path.dirname(mediaFilename) baseFilenameExt = os.path.basename(openFileDialog1.FileName) baseFilenameComp = os.path.splitext(baseFilenameExt) baseFilename = baseFilenameComp[0] Extension = baseFilenameComp[1] sceneFilename = baseFilenameExt + ".scn.xml" sceneFilenamePath = os.path.join(mediaFilePath, sceneFilename) if studioFile.openFile(sceneFilenamePath): print("Import Studio Movie started: ", sceneFilenamePath) print("Create Track Event list") trackEventList = studioFile.getTrackEventList(mediaFilename) studioFile.closeFile() print("Track Event list created") print("Create SubClips") createSubClips(trackEventList) print("SubClips created")
def create_file_dialog(self, dialog_type, directory, allow_multiple, save_filename): if not directory: directory = os.environ["HOMEPATH"] try: if dialog_type == FOLDER_DIALOG: dialog = WinForms.FolderBrowserDialog() dialog.RestoreDirectory = True result = dialog.ShowDialog(BrowserView.instance.browser) if result == WinForms.DialogResult.OK: file_path = (dialog.SelectedPath, ) else: file_path = None elif dialog_type == OPEN_DIALOG: dialog = WinForms.OpenFileDialog() dialog.Multiselect = allow_multiple dialog.InitialDirectory = directory dialog.Filter = localization[ "windows.fileFilter.allFiles"] + " (*.*)|*.*" dialog.RestoreDirectory = True result = dialog.ShowDialog(BrowserView.instance.browser) if result == WinForms.DialogResult.OK: file_path = tuple(dialog.FileNames) else: file_path = None elif dialog_type == SAVE_DIALOG: dialog = WinForms.SaveFileDialog() dialog.Filter = localization[ "windows.fileFilter.allFiles"] + " (*.*)|" dialog.InitialDirectory = directory dialog.RestoreDirectory = True dialog.FileName = save_filename result = dialog.ShowDialog(BrowserView.instance.browser) if result == WinForms.DialogResult.OK: file_path = dialog.FileName else: file_path = None return file_path except: logger.exception("Error invoking {0} dialog".format(dialog_type)) return None
def searchFile(self, filePathName): """ search File Parameters: filePathName: Path and name of the file to search when the file was not found and searchMissingMedia = True the procedure looks in all subdirectories of the directories specified in searchDirList return: original filePathName or updated filePathName with new path "" when file was not found Pre condition searchDirName and searchFileList contain the directry name and the file list of the last found filename or None Post condition: searchDirName and searchFileList contain the directry name and the file list of the found filename """ if os.path.isfile(filePathName): return filePathName elif searchMissingMedia: fname = os.path.basename(filePathName) if fname.lower() in (name.lower() for name in self.searchFileList ): # search in last directoy found return os.path.join(self.searchDirName, fname) for rootDir in searchDirList: print("Search for ", fname, " in ", rootDir) for lookupDirName, subdirList, self.searchFileList in os.walk( rootDir): if fname.lower() in (name.lower() for name in self.searchFileList): self.searchDirName = lookupDirName return os.path.join(self.searchDirName, fname) print(fname, " not found") openFileDialog2 = WinForms.OpenFileDialog() openFileDialog2.Filter = "All files (*.*)|*.*" openFileDialog2.FilterIndex = 1 openFileDialog2.RestoreDirectory = True openFileDialog2.AddExtension = True # openFileDialog2.InitialDirectory = self.searchDirName; openFileDialog2.FileName = fname openFileDialog2.Title = "Select File and Directory for : " + filePathName if (openFileDialog2.ShowDialog() == WinForms.DialogResult.OK): print(fname, "->", openFileDialog2.FileName) return openFileDialog2.FileName return filePathName
def InitializeComponent(self): """Initialize form components.""" self.components = System.ComponentModel.Container() self.openFileDialog = WinForms.OpenFileDialog() self.saveFileDialog = WinForms.SaveFileDialog() self.mainMenu = WinForms.MainMenu() self.fileMenu = WinForms.MenuItem() self.menuFileNew = WinForms.MenuItem() self.menuFileOpen = WinForms.MenuItem() self.menuFileSave = WinForms.MenuItem() self.menuFileSaveAs = WinForms.MenuItem() self.menuFileSep_1 = WinForms.MenuItem() self.menuFileExit = WinForms.MenuItem() self.editMenu = WinForms.MenuItem() self.menuEditUndo = WinForms.MenuItem() self.menuEditRedo = WinForms.MenuItem() self.menuEditSep_1 = WinForms.MenuItem() self.menuEditCut = WinForms.MenuItem() self.menuEditCopy = WinForms.MenuItem() self.menuEditPaste = WinForms.MenuItem() self.menuEditSep_2 = WinForms.MenuItem() self.menuEditSelectAll = WinForms.MenuItem() self.formatMenu = WinForms.MenuItem() self.menuFormatFont = WinForms.MenuItem() self.menuFormatWordWrap = WinForms.MenuItem() self.aboutMenu = WinForms.MenuItem() self.menuHelpAbout = WinForms.MenuItem() self.richTextBox = WinForms.RichTextBox() self.statusBarPanel1 = WinForms.StatusBarPanel() self.statusBar = WinForms.StatusBar() self.fontDialog = WinForms.FontDialog() self.statusBarPanel1.BeginInit() # =================================================================== # File Menu # =================================================================== self.menuFileNew.Text = "&New" self.menuFileNew.Shortcut = WinForms.Shortcut.CtrlN self.menuFileNew.ShowShortcut = False self.menuFileNew.Index = 0 self.menuFileNew.Click += self.OnClickFileNew self.menuFileOpen.Text = "&Open" self.menuFileOpen.Shortcut = WinForms.Shortcut.CtrlO self.menuFileOpen.ShowShortcut = False self.menuFileOpen.Index = 1 self.menuFileOpen.Click += self.OnClickFileOpen self.menuFileSave.Text = "&Save" self.menuFileSave.Shortcut = WinForms.Shortcut.CtrlS self.menuFileSave.ShowShortcut = False self.menuFileSave.Index = 2 self.menuFileSave.Click += self.OnClickFileSave self.menuFileSaveAs.Text = "Save &As" self.menuFileSaveAs.Index = 3 self.menuFileSaveAs.Click += self.OnClickFileSaveAs self.menuFileSep_1.Text = "-" self.menuFileSep_1.Index = 4 self.menuFileExit.Text = "E&xit" self.menuFileExit.Shortcut = WinForms.Shortcut.AltF4 self.menuFileExit.ShowShortcut = False self.menuFileExit.Index = 5 self.menuFileExit.Click += self.OnClickFileExit self.fileMenu.Text = "&File" self.fileMenu.Index = 0 items = (self.menuFileNew, self.menuFileOpen, self.menuFileSave, self.menuFileSaveAs, self.menuFileSep_1, self.menuFileExit) self.fileMenu.MenuItems.AddRange(items) # =================================================================== # Edit menu # =================================================================== self.menuEditUndo.Text = "&Undo" self.menuEditUndo.Shortcut = WinForms.Shortcut.CtrlZ self.menuEditUndo.Index = 0 self.menuEditUndo.Click += self.OnClickEditUndo self.menuEditRedo.Text = "&Redo" self.menuEditRedo.Shortcut = WinForms.Shortcut.CtrlY self.menuEditRedo.Index = 1 self.menuEditRedo.Click += self.OnClickEditRedo self.menuEditSep_1.Text = "-" self.menuEditSep_1.Index = 2 self.menuEditCut.Text = "Cut" self.menuEditCut.Shortcut = WinForms.Shortcut.CtrlX self.menuEditCut.Index = 3 self.menuEditCut.Click += self.OnClickEditCut self.menuEditCopy.Text = "Copy" self.menuEditCopy.Shortcut = WinForms.Shortcut.CtrlC self.menuEditCopy.Index = 4 self.menuEditCopy.Click += self.OnClickEditCopy self.menuEditPaste.Text = "Paste" self.menuEditPaste.Shortcut = WinForms.Shortcut.CtrlV self.menuEditPaste.Index = 5 self.menuEditPaste.Click += self.OnClickEditPaste self.menuEditSelectAll.Text = "Select All" self.menuEditSelectAll.Shortcut = WinForms.Shortcut.CtrlA self.menuEditSelectAll.Index = 7 self.menuEditSelectAll.Click += self.OnClickEditSelectAll self.menuEditSep_2.Text = "-" self.menuEditSep_2.Index = 6 self.editMenu.Text = "&Edit" self.editMenu.Index = 1 items = (self.menuEditUndo, self.menuEditRedo, self.menuEditSep_1, self.menuEditCut, self.menuEditCopy, self.menuEditPaste, self.menuEditSep_2, self.menuEditSelectAll) self.editMenu.MenuItems.AddRange(items) # =================================================================== # Format Menu # =================================================================== self.menuFormatWordWrap.Text = "Word Wrap" self.menuFormatWordWrap.Checked = self.word_wrap self.menuFormatWordWrap.Index = 1 self.menuFormatWordWrap.Click += self.OnClickFormatWordWrap self.menuFormatFont.Text = "Fo&nt" self.menuFormatFont.Index = 0 self.menuFormatFont.Click += self.OnClickFormatFont self.formatMenu.Text = "F&ormat" self.formatMenu.Index = 2 items = (self.menuFormatWordWrap, self.menuFormatFont) self.formatMenu.MenuItems.AddRange(items) # =================================================================== # About menu # =================================================================== self.menuHelpAbout.Text = "&About" self.menuHelpAbout.Index = 0 self.menuHelpAbout.Click += self.OnClickHelpAbout self.aboutMenu.Text = "&Help" self.aboutMenu.Index = 3 self.aboutMenu.MenuItems.Add(self.menuHelpAbout) self.statusBarPanel1.Dock = WinForms.DockStyle.Fill self.statusBarPanel1.Text = "Ready" self.statusBarPanel1.Width = 755 self.richTextBox.Dock = WinForms.DockStyle.Fill self.richTextBox.Size = System.Drawing.Size(795, 485) self.richTextBox.TabIndex = 0 self.richTextBox.AutoSize = 1 self.richTextBox.ScrollBars = WinForms.RichTextBoxScrollBars.ForcedBoth self.richTextBox.Font = System.Drawing.Font("Tahoma", 10.0) self.richTextBox.AcceptsTab = 1 self.richTextBox.Location = System.Drawing.Point(0, 0) self.statusBar.BackColor = System.Drawing.SystemColors.Control self.statusBar.Location = System.Drawing.Point(0, 518) self.statusBar.Size = System.Drawing.Size(775, 19) self.statusBar.TabIndex = 1 self.statusBar.ShowPanels = True self.statusBar.Panels.Add(self.statusBarPanel1) items = (self.fileMenu, self.editMenu, self.formatMenu, self.aboutMenu) self.mainMenu.MenuItems.AddRange(items) self.openFileDialog.Filter = "Text documents|*.txt|RTF document|*.rtf" self.openFileDialog.Title = "Open document" self.saveFileDialog.Filter = "Text Documents|*.txt|" \ "Rich Text Format|*.rtf" self.saveFileDialog.Title = "Save document" self.saveFileDialog.FileName = "Untitled" self.AutoScaleBaseSize = System.Drawing.Size(5, 13) self.ClientSize = System.Drawing.Size(775, 537) self.Menu = self.mainMenu self.Text = "Python Wordpad" self.Controls.Add(self.statusBar) self.Controls.Add(self.richTextBox) self.statusBarPanel1.EndInit()
def main(): """Main Function.""" print("Running {fname} version {ver}...".format(fname=__name, ver=__version)) # STEP 0: Setup doc = __revit__.ActiveUIDocument.Document view = doc.ActiveView # STEP 1: Ask user for clash report html file adn parse it print("Opening interference check report file...") open_dialog = swf.OpenFileDialog() open_dialog.Title = "Open Interference Check Report" open_dialog.Filter = "HMTL files (*.html)|*.html" if open_dialog.ShowDialog() == swf.DialogResult.OK: # file selected file_path = open_dialog.FileName # STEP 2: Parse clash report file and summarize findings print("Reading {fname}...".format(fname=file_path)) with open(file_path, mode="rb") as html_file: html = html_file.read() # just read the plain bytes uhtml = unicode( html, "utf-16") # Revit exports html in UTF-16(-LE) encoding print("Parsing file contents...") parser = InterferenceReportParser() parser.feed(uhtml) parser.close() clashes = parser.clashes clashing_ids = [] for pair in parser.clashes.values(): for elem_id in pair: clashing_ids.append(elem_id) clashing_ids = set(clashing_ids) # Get all element ids of the elements in the view all_ids = db.FilteredElementCollector(doc, view.Id)\ .WhereElementIsNotElementType()\ .ToElementIds() all_ids = set([elem_id.IntegerValue for elem_id in all_ids]) # Get all element ids of non-clashing elements in the view non_clashing_ids = all_ids - clashing_ids # Create summary text for user input dialog summary_text = "Checked report {path}\n".format(path=file_path) summary_text += "Found {num} clashes in the report.\n".format( num=len(clashes)) summary_text += "Found {num} clashing elements involved in those clashes.\n".format( num=len(clashing_ids)) summary_text += "The total number of elements in the current view is {num}\n".format( num=len(all_ids)) summary_text += "Found {num} non-clashing elements in the current view.".format( num=len(non_clashing_ids)) print(summary_text) # STEP 3: Ask user for display option dialog = ui.TaskDialog(title="Mark All Clashes") dialog.MainInstruction = "Interference Report Summary" dialog.MainContent = summary_text dialog.AddCommandLink(ui.TaskDialogCommandLinkId.CommandLink1, "Mark clashing elements and fade the rest") dialog.AddCommandLink(ui.TaskDialogCommandLinkId.CommandLink2, "Hide all non-clashing elements temporarily") dialog.CommonButtons = ui.TaskDialogCommonButtons.Close dialog.DefaultButton = ui.TaskDialogResult.Close result = dialog.Show() # Step 4: Emphasize the clashes based on the user selection transaction = db.Transaction(doc) transaction.Start("{name} - v{ver}".format(name=__name, ver=__version)) try: if result == ui.TaskDialogResult.CommandLink1: # Mark clashes and fade the rest print("Marking all clashing elements and fading the rest...") for elem_id in all_ids: # fade all visible elements in the view view.SetElementOverrides(db.ElementId(elem_id), faded_overrides) for elem_id in clashing_ids: # emphasize the clashing elements view.SetElementOverrides(db.ElementId(elem_id), clashing_overrides) elif result == ui.TaskDialogResult.CommandLink2: # Hide all non-clashing elements print( "Hiding all non-clashing elements in the view temporarily..." ) for elem_id in non_clashing_ids: # hide alll non-clashing elements view.HideElementTemporary(db.ElementId(elem_id)) else: print("Nothing to do.") except Exception as ex: print("Exception: {ex}".format(ex=ex)) transaction.RollBack() else: transaction.Commit() print("Done.") else: # no file to parse print("Nothing to do.")
def VBoxManageButtonClick(self, sender, args): ofd = Forms.OpenFileDialog() ofd.CheckFileExists = True if ofd.ShowDialog() == Forms.DialogResult.OK: self.VBoxManageTextBox.Text = ofd.FileName