示例#1
0
    def do(self, dir_str: QDir) -> 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 False

        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 0.,
                version,
                file_name
            )

        return True
示例#2
0
    def do(self, dir_str: QDir) -> 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 False

        # Wire frame
        slvs2_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 False

        # Assembly
        vlinks: Dict[str, Set[int]] = {}
        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 == VLink.FRAME:
                continue
            file_name = dir_str.filePath(name + '.slvs')
            if isfile(file_name) and self.warn_radio.isChecked():
                self.exist_warning(file_name)
                return False
            slvs2_part([
                self.vpoints[i] for i in points
            ], self.link_radius.value(), file_name)

        return True