def do(self, dir_str: QDir) -> Optional[bool]: """Output types: + Assembly + Only wire frame """ file_name = dir_str.filePath(_get_name(self.filename_edit) + '.slvs') if isfile(file_name) and self.warn_radio.isChecked(): self.exist_warning(file_name) return # Wire frame slvs_frame(self.vpoints, self.v_to_slvs, file_name) # Open Solvespace by commend line if available. cmd = shutil.which("solvespace") if cmd: Popen([cmd, file_name], stdout=DEVNULL, stderr=DEVNULL) if self.frame_radio.isChecked(): self.accept() return # Assembly vlinks = {} for i, vpoint in enumerate(self.vpoints): for link in vpoint.links: if link in vlinks: vlinks[link].add(i) else: vlinks[link] = {i} for name, points in vlinks.items(): if name == 'ground': continue file_name = dir_str.filePath(name + '.slvs') if isfile(file_name) and self.warn_radio.isChecked(): self.exist_warning(file_name) return slvs_part([self.vpoints[i] for i in points], self.link_radius.value(), file_name) return True
def save_file(node: QTreeWidgetItem, data: DataDict) -> Tuple[str, bool]: """Recursive to all the contents of nodes.""" text_data = [] all_saved = data.is_saved(int(node.text(2))) for i in range(node.childCount()): doc, saved = save_file(node.child(i), data) text_data.append(doc) all_saved &= saved my_content = data[int(node.text(2))].splitlines() for i in range(len(my_content)): content_text = my_content[i] if content_text.endswith("@others"): preffix = content_text[:-len("@others")] my_content[i] = '\n\n'.join(preffix + t for t in text_data) my_content = '\n'.join(my_content) path_text = QFileInfo(node.text(1)).fileName() if path_text and not all_saved: suffix_text = QFileInfo(path_text).suffix() if suffix_text == 'kmol': # Save project. _write_tree(node.text(1), node, data) else: # File path. file_path = QDir(QFileInfo(node_getpath(node)).absolutePath()) if not file_path.exists(): file_path.mkpath('.') print("Create Folder: {}".format(file_path.absolutePath())) file_name = file_path.filePath(path_text) if suffix_text in _SUPPORTED_FILE_SUFFIX: # Add end new line. if my_content and (my_content[-1] != '\n'): my_content += '\n' try: with open(file_name, 'w', encoding='utf-8') as f: f.write(my_content) except UnicodeError: print(f"Unicode Error in: {file_name}") else: print(f"Saved: {file_name}") elif suffix_text: print(f"Ignore file: {file_name}") return my_content, all_saved
def do(self, dir_str: QDir) -> Optional[bool]: """Output types: + Boundary + Frame """ file_name = dir_str.filePath(_get_name(self.filename_edit) + '.dxf') if isfile(file_name) and self.warn_radio.isChecked(): self.exist_warning(file_name) return version = self.version_option.currentText().split()[0] if self.frame_radio.isChecked(): # Frame dxf_frame(self.vpoints, self.v_to_slvs, version, file_name) elif self.assembly_radio.isChecked(): # Boundary dxf_boundary( self.vpoints, self.link_radius.value(), self.interval_option.value() if self.interval_enable.isChecked() else None, version, file_name) return True