iCAD SX パーツを複数個追加するコマンド

2023/11/18 categories:iCAD SX| tags:iCAD SDK|iCAD SX|Python|

iCAD SXで入力パーツに指定した個数のパーツを追加するコマンドを作成してみました

動作

プログラムを実行すると追加するパーツの個数を入力するダイアログが表示されるので、個数を入力すると指定した個数のパーツが追加されます。ちなみにルートのパーツには追加できません。

Pythonコード

import clr
import os
import sys
import traceback
from pathlib import Path
from PySide6 import QtWidgets, QtGui, QtCore


def main():

    # create qapplication
    app = QtWidgets.QApplication(sys.argv)
    
    # load sxnet
    try:
        icad_dir = Path( os.getenv('ICADDIR') )
        sxnet_path = icad_dir / 'bin/sxnet.dll'
        clr.AddReference( str(sxnet_path) )
        import sxnet
    except:
        print( traceback.format_exc() )
        return

    inf_sys = sxnet.SxSys.getInf()
    if inf_sys is None:
        return

    active_part = inf_sys.active_part
    if active_part is None:
        return

    # show dialog
    dialog = QtWidgets.QDialog()

    spinbox = QtWidgets.QSpinBox()

    buttons = QtWidgets.QDialogButtonBox()
    buttons.addButton('OK', buttons.ButtonRole.AcceptRole).clicked.connect(dialog.accept)
    buttons.addButton('Cancel', buttons.ButtonRole.RejectRole).clicked.connect(dialog.reject)

    dialog.setWindowFlags(dialog.windowFlags() | QtCore.Qt.WindowType.WindowStaysOnTopHint)
    dialog.setWindowTitle('append parts')
    dialog.setLayout(QtWidgets.QVBoxLayout())
    dialog.layout().addWidget(spinbox)
    dialog.layout().addWidget(buttons)

    if dialog.exec() == dialog.DialogCode.Accepted:

        for i in range(spinbox.value()):

            # append parts
            active_part.create('part_{}'.format(i))

if __name__ == '__main__':
    main()
    

Share post

Related Posts

コメント