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()