Zenn
💻

はじめてのiCAD×VBA その6

2025/02/20に公開

はじめに

VBAでiCADを操作する方法を教えてもらったので、その備忘録の第六弾です。
前回はものづくりのススメさんの記事を参考に自分でプログラムを触ってみましたが、今回は講習会で行った”面取りの作成”について書いていきます。

前回作ったVBAコード

処理内容

  1. iCADが開いているか確認して
  2. 三次元が開いているか確認して
  3. 入力フォームを表示して
  4. 入力された寸法の矩形を作成し
  5. いい感じの位置に配置して
  6. パーツ化する
    • パーツ名:BASE
    • コメント:ベースプレート
  7. 作成したパーツへ材質を設定する(A5052P)

コード

はじめてのiCAD×VBA.xlsm
Private Sub CommandButton1_Click()

Dim iCADObj As Object 'iCADオブジェクト
Dim iCADMac As String 'コマンド格納先
Dim Depth As Long '奥行き格納先
Dim Width As Long '幅格納先
Dim Height As Long '高さ格納先

iCADMac = ""  'コマンド格納先の変数をクリア
Depth = 0  '寸法格納先の変数をクリア
Width = 0  '寸法格納先の変数をクリア
Height = 0  '寸法格納先の変数をクリア

Set iCADObj = CreateObject("ICAD.Application")
'ライブラリからiCADの操作を司るオブジェクトを呼び出す
'Setはオブジェクトを格納するときに使用する

'★★★iCADの起動確認★★★
'ものづくりのススメさんのライブラリ(ICAD_Contorol.bas)を使用。
'https://rivi-manufacturing.com/homebrew-tools/icad-sx/14164/

If IsICADActive(iCADObj) = False Then
    Exit Sub
End If

'★★★3次元へ移動★★★
'ものづくりのススメさんのライブラリ(ICAD_Contorol.bas)を使用。
'https://rivi-manufacturing.com/homebrew-tools/icad-sx/14164/

If ActivateICAD3DView(iCADObj) = False Then
    Exit Sub
End If

'★★★矩形の配置★★★

Depth = Me.DEPTH_X '変数にテキストボックス(DEPTH_X)の値を挿入
Width = Me.WIDTH_Z '変数にテキストボックス(WIDTH_Z)の値を挿入
Height = Me.HIGHT_Y '変数にテキストボックス(HIGHT_Y)の値を挿入

iCADMac = iCADMac & ";PLAY;BOX" & vbCr 'iCADMacに対して値を追記
iCADMac = iCADMac & ".Depth " & Depth & vbCr
iCADMac = iCADMac & ".Width " & Width & vbCr
iCADMac = iCADMac & ".Height " & Height & vbCr
iCADMac = iCADMac & "0 0 " & Depth & " ,"

iCADObj.RunCommand iCADMac, MODE_COMMAND
'iCADObj.RunCommand=VBAからiCADへ「iCADMac」に格納されたコマンドを受け渡す
'MODE_COMMAND=受け渡したコマンドをiCADを「コマンドモード」で実行する

'★★★パーツ化★★★

iCADMac = ""  'コマンド格納先の変数をクリア

iCADMac = iCADMac & "@ZOOMFUL" & vbCr 'iCADMacに対して値を追記
iCADMac = iCADMac & ";TD4MAK;JKT0" & vbCr
iCADMac = iCADMac & "@IOFF;OPNPD" & vbCr
iCADMac = iCADMac & "@IOFF;OUTCRT" & vbCr
iCADMac = iCADMac & "X " & "0" & vbCr
iCADMac = iCADMac & "Y " & "0" & vbCr
iCADMac = iCADMac & "Z " & "0" & " ," & vbCr
iCADMac = iCADMac & "@GO" & vbCr
iCADMac = iCADMac & ".SHORI " & "/1/" & vbCr
iCADMac = iCADMac & ".PARTSNAME " & "/BASE/" & vbCr
iCADMac = iCADMac & ".LAYER " & "/  0/" & vbCr
iCADMac = iCADMac & ".COMMENT1 " & "/ベースプレート/" & vbCr
iCADMac = iCADMac & ".COMMENT2 " & "//" & vbCr

iCADObj.RunCommand iCADMac, MODE_MACRO
'iCADObj.RunCommand=VBAからiCADへ「iCADMac」に格納されたコマンドを受け渡す
'MODE_COMMAND=受け渡したコマンドをiCADを「マクロモード」で実行する
'".SHORI "以降の処理がコマンドモードでは存在しない為、マクロモードで実行
'参考:今回の処理をコマンドBOXで取り出すと→;@SUPKER 1;TD4MAK;JKT0;@IOFF;OPNPD;@IOFF;OUTCRT;@SUPKER 0

'★★★材質設定★★★

iCADMac = ""  'コマンド格納先の変数をクリア

iCADMac = iCADMac & ";VOL3D;SET0;SET1" & vbCr 'iCADMacに対して値を追記
iCADMac = iCADMac & "@PTPIC" & vbCr
iCADMac = iCADMac & ".SELPZ " & "/0/" & vbCr
iCADMac = iCADMac & ".SELCL " & "/\/" & vbCr
iCADMac = iCADMac & ".SELNM " & "/BASE/" & vbCr
iCADMac = iCADMac & "@GO" & vbCr
iCADMac = iCADMac & ".ZAI1 " & "/アルミ板/" & vbCr '材質情報を設定
iCADMac = iCADMac & ".ZAI2 " & "//" & vbCr
iCADMac = iCADMac & ".KIG " & "/A5052P/" & vbCr '材質の記号を設定
iCADMac = iCADMac & ".HIJYU " & "/2.6900/" & vbCr
iCADMac = iCADMac & ".DIF " & "/172,169,177, 67/" & vbCr '色情報を設定
iCADMac = iCADMac & ".SPE " & "/214,179, 40, 49/" & vbCr '色情報を設定
iCADMac = iCADMac & ".SHI " & "/14/" & vbCr
iCADMac = iCADMac & ".ALP " & "/100/" & vbCr

iCADObj.RunCommand iCADMac, MODE_MACRO
'iCADObj.RunCommand=VBAからiCADへ「iCADMac」に格納されたコマンドを受け渡す
'MODE_COMMAND=受け渡したコマンドをiCADを「マクロモード」で実行する
'".SHORI "以降の処理がコマンドモードでは存在しない為、マクロモードで実行
'参考:今回の処理をコマンドBOXで取り出すと→;@SUPKER 1;VOL3D;SET0;SET1;@SUPKER 0

Unload Me
'テキストボックスの値を削除する(MsgBOXを前にするとMsgBOXも消えるので、先に処理する)

MsgBox ("実行完了しました")

End Sub

前提環境

  • Excelで開発タブの表示
  • iCAD SXのダウンロード

参考

「C:\ICADSX\HELP」内にiCADのHelpが格納されています。

  • VB I/Fに関するHelp:ICADOLEA.chm
  • V8L3コマンドキーワード一覧:SXPROKEY.chm

また、PDFで「コマンド簡易開発ガイド」も用意されており、VBAでの開発とVBでの開発のマニュアルになっています。
(C:/ICADSX/man/development_guide.pdf)

VBAの作成

まずはマクロの記録

iCAD SXを開き、アイコンメニューの「ツール」タブよりマクロの記録を行います。
行った動作は下記の通り。

  1. マクロの記録を開始(blendという名前で保存)
  2. 視点を「ユーザービュー1」に切り替える
  3. 「全体表示」する
  4. 表示を「WIRE表示」にする
  5. アイコンメニューより「面取りを作成する」を選択
  6. 四つ角のうち、見えている辺を3点選択
  7. 右クリックでGO
  8. 表示を「CG縁あり」に戻す
  9. マクロの記録を終了

記録したマクロは下記の通り。

blend
/* MACREC_COMMENT_BEGIN                                                         
/* MACREC_COMMENT--------------------------------------------------------       
/* MACREC_COMMENT マクロ記録はこの位置にコメントを追加または削除します。        
/* MACREC_COMMENT--------------------------------------------------------       
/* MACREC_COMMENT--------------------------------------------------------       
/* MACREC_COMMENT_END                                                           
@SUPKER 
=0                                                                              
@USRVW1                                                                         
=0                                                                              
@ZOOMFUL                                                                        
@WFET2                                                                          
=0                                                                              
@GO                                                                             
@SUPKER                                                                         
=1                                                                              
;BLEND                                                                          
;CNR                                                                            
;SNG                                                                            
@SUPKER                                                                         
=0                                                                              
.RADIUS 10                                                                      
S        1 X        -1.83200439 Y         3.02721404 Z        -1.1952108        
0 ,                                                                             
S        1 X       -35.52106705 Y       -30.01524922 Z        65.5363277        
3 ,                                                                             
S        1 X        71.12567819 Y       -82.46555335 Z        11.3399066        
6 ,                                                                             
S        1 X       104.81915051 Y       -50.28293114 Z       -54.5362001        
6 ,                                                                             
@GO                                                                             
@WFONCG                                                                         
/ON/                                                                            
@CGET2                                                                          
=0                                                                              
@GO                                                                             
@SUPKER                                                                         
=1                                                                              

記録したマクロの中身

マクロファイルは「C:\ICADSX\USER\MACRO」に記録した名前(今回でいうと「parts」)で保存されています。

コメント

parts
/* MACREC_COMMENT_BEGIN                                                         
/* MACREC_COMMENT--------------------------------------------------------       
/* MACREC_COMMENT マクロ記録はこの位置にコメントを追加または削除します。        
/* MACREC_COMMENT--------------------------------------------------------       
/* MACREC_COMMENT--------------------------------------------------------       
/* MACREC_COMMENT_END   

マクロ記録時に勝手に追加されるコード
キーワードチェックとやらを有効化(0)・無効化(1)しているらしい。
無くても動くためVBA移植時は削除する。

blend
@SUPKER 
=0                                                                              
@SUPKER                                                                         
=1 

事前準備その1
視点を「ユーザービュー1」に切り替える。
V8L3コマンドキーワード一覧(SXPROKEY.chm)によると視点の「ユーザービュー1」への切り替えは@USRVW1 0とのことなのでイコールはいらないっぽい

blend
@USRVW1                                                                         
=0  

事前準備その2
「全体表示」する

blend
@ZOOMFUL

事前準備その3
表示を「WIRE表示」にする
こうすることでCG表示だと隠れて見えない部分も視点移動なして選択できるようになる。
(座標指定する際に、指定した稜線が画面から見えている必要がある)
こちらもV8L3コマンドキーワード一覧(SXPROKEY.chm)によると表示の「WIRE表示」への切り替え@WFET2 0とのことなのでイコールはいらないっぽい

blend
@WFET2                                                                          
=0  

面取りに関する処理1
1か所づつ稜線を指定して面取りをします という意味の命令

blend
;BLEND '角編集
;CNR '[面取り]
;SNG '[単一処理]

マクロ記録時に勝手に追加されるコード
いらない

blend
@SUPKER                                                                         
=0                                                                              

面取りに関する処理2
面取り長を指定

blend
.RADIUS 10                                                                      

面取りに関する処理3
どこの座標ある稜線(辺)を面取りするかを指定しています。

  • S:マクロ記録時に表示されている”画面上”の座標。(画面角度・拡大縮小状態)
      VBA移植時には座標だけ指定するので「S  1」はいらない。
  • X:X軸の座標。
  • Y:Y軸の座標。
  • Z:Z軸の座標。
blend
S        1 X        -1.83200439 Y         3.02721404 Z        -1.1952108        
0 ,                                                                             
S        1 X       -35.52106705 Y       -30.01524922 Z        65.5363277        
3 ,                                                                             
S        1 X        71.12567819 Y       -82.46555335 Z        11.3399066        
6 ,                                                                             
S        1 X       104.81915051 Y       -50.28293114 Z       -54.5362001        
6 ,                                                                             

面取りに関する処理4
右クリック(GO)

blend
@GO                                                                             

表示に関する処理
WIRE表示にしていたのを[CG表示 縁あり]に変更する。
対象は選択せずにGOすることで全て[CG表示 縁あり]に変更する。
こちらもV8L3コマンドキーワード一覧(SXPROKEY.chm)によると表示の「CG表示 縁あり」への切り替え@WFONCG ON @CGET2 0とのことなのでイコールはいらないっぽい

blend
@WFONCG                                                                         
/ON/  
@CGET2                                                                          
=0                                                                              
@GO                                                                             

マクロ記録時に勝手に追加されるコード
いらない

blend
@SUPKER                                                                         
=1                                                                              

いらないコードを省くとこうなる

blend
@USRVW1 0
@ZOOMFUL
@WFET2 0
;BLEND                                                                          
;CNR                                                                            
;SNG
.RADIUS 10
X        -1.83200439 Y         3.02721404 Z        -1.19521080 ,                                                                             
X       -35.52106705 Y       -30.01524922 Z        65.53632773 ,                                                                             
X        71.12567819 Y       -82.46555335 Z        11.33990666 ,                                                                             
X       104.81915051 Y       -50.28293114 Z       -54.53620016 ,
@WFONCG ON @CGET2 0
@GO

ExcelVBAに必要部分を移植

まずはコマンド格納先の変数をクリアして

はじめてのiCAD×VBA.xlsm
iCADMac = ""  'コマンド格納先の変数をクリア

とりあえず「MODE_command」で実行できる「@」で始まるコマンドの部分だけ格納して

はじめてのiCAD×VBA.xlsm
    iCADMac = iCADMac & "@USRVW1 0 @ZOOMFUL @WFET2 0 @GO" & vbCr 'iCADMacに対して値を追記

MODE_commandで実行する。

はじめてのiCAD×VBA.xlsm
iCADObj.RunCommand iCADMac, MODE_COMMAND

もう一度変数をクリアして

はじめてのiCAD×VBA.xlsm
iCADMac = ""  'コマンド格納先の変数をクリア

面取りに関する部分と面取り長を指定する部分を移植。

はじめてのiCAD×VBA.xlsm
    iCADMac = iCADMac & ";BLEND;CNR;SNG" & vbCr
    iCADMac = iCADMac & ".Radius " & "10" & vbCr

面取り対象の稜線の座標を4箇所入れる。
XとZはそれぞれフォームに入力した値をそのまま指定し、
Yは端を選ぶと、角に接している稜線3個のどれを選ぶかわからないので
半分にして対象の稜線の真ん中を指定するようにする。

はじめてのiCAD×VBA.xlsm
    '面取り対象指定その1
    iCADMac = iCADMac & "X " & Width & vbCr
    iCADMac = iCADMac & "Y " & Height / 2 & vbCr
    iCADMac = iCADMac & "Z " & Depth & " ," & vbCr
    
    '面取り対象指定その2
    iCADMac = iCADMac & "X " & Width & vbCr
    iCADMac = iCADMac & "Y " & Height / 2 & vbCr
    iCADMac = iCADMac & "Z " & "0" & " ," & vbCr
    
    '面取り対象指定その3
    iCADMac = iCADMac & " X " & "0" & vbCr
    iCADMac = iCADMac & " Y " & Height / 2 & vbCr
    iCADMac = iCADMac & " Z " & Depth & " ," & vbCr
    
    '面取り対象指定その4
    iCADMac = iCADMac & " X " & "0" & vbCr
    iCADMac = iCADMac & " Y " & Height / 2 & vbCr
    iCADMac = iCADMac & " Z " & "0" & " ," & vbCr

最後に@GOと表示をCG表示 縁ありに戻して

はじめてのiCAD×VBA.xlsm
    iCADMac = iCADMac & "@GO" & vbCr
    iCADMac = iCADMac & "@WFONCG ON @CGET2 0 @GO" & vbCr

今度は「.」から始まる命令文を含むためMODE_MACROで実行する。

はじめてのiCAD×VBA.xlsm
    iCADObj.RunCommand iCADMac, MODE_MACRO

今回のコードをまとめるとこうなる。

はじめてのiCAD×VBA.xlsm
'★★★面取り★★★

iCADMac = ""  'コマンド格納先の変数をクリア

    iCADMac = iCADMac & "@USRVW1 0 @ZOOMFUL @WFET2 0 @GO" & vbCr 'iCADMacに対して値を追記

iCADObj.RunCommand iCADMac, MODE_COMMAND

iCADMac = ""  'コマンド格納先の変数をクリア

    iCADMac = iCADMac & ";BLEND;CNR;SNG" & vbCr
    iCADMac = iCADMac & ".Radius " & "10" & vbCr
    
    '面取り対象指定その1
    iCADMac = iCADMac & "X " & Width & vbCr
    iCADMac = iCADMac & "Y " & Height / 2 & vbCr
    iCADMac = iCADMac & "Z " & Depth & " ," & vbCr
    
    '面取り対象指定その2
    iCADMac = iCADMac & "X " & Width & vbCr
    iCADMac = iCADMac & "Y " & Height / 2 & vbCr
    iCADMac = iCADMac & "Z " & "0" & " ," & vbCr
    
    '面取り対象指定その3
    iCADMac = iCADMac & " X " & "0" & vbCr
    iCADMac = iCADMac & " Y " & Height / 2 & vbCr
    iCADMac = iCADMac & " Z " & Depth & " ," & vbCr
    
    '面取り対象指定その4
    iCADMac = iCADMac & " X " & "0" & vbCr
    iCADMac = iCADMac & " Y " & Height / 2 & vbCr
    iCADMac = iCADMac & " Z " & "0" & " ," & vbCr
    
    iCADMac = iCADMac & "@GO" & vbCr
    
    iCADMac = iCADMac & "@WFONCG ON @CGET2 0 @GO" & vbCr

iCADObj.RunCommand iCADMac, MODE_MACRO
'iCADObj.RunCommand=VBAからiCADへ「iCADMac」に格納されたコマンドを受け渡す
'MODE_COMMAND=受け渡したコマンドをiCADを「マクロモード」で実行する
'".SHORI "以降の処理がコマンドモードでは存在しない為、マクロモードで実行
'参考:今回の処理をコマンドBOXで取り出すと→;@SUPKER 1;BLEND;CNR;SNG;@SUPKER 0
前回までのコードとドッキング
はじめてのiCAD×VBA.xlsm
Private Sub CommandButton1_Click()

Dim iCADObj As Object 'iCADオブジェクト
Dim iCADMac As String 'コマンド格納先
Dim Depth As Long '奥行き格納先
Dim Width As Long '幅格納先
Dim Height As Long '高さ格納先

iCADMac = ""  'コマンド格納先の変数をクリア
Depth = 0  '寸法格納先の変数をクリア
Width = 0  '寸法格納先の変数をクリア
Height = 0  '寸法格納先の変数をクリア

Set iCADObj = CreateObject("ICAD.Application")
'ライブラリからiCADの操作を司るオブジェクトを呼び出す
'Setはオブジェクトを格納するときに使用する

'★★★iCADの起動確認★★★
'ものづくりのススメさんのライブラリ(ICAD_Contorol.bas)を使用。
'https://rivi-manufacturing.com/homebrew-tools/icad-sx/14164/

If IsICADActive(iCADObj) = False Then
    Exit Sub
End If

'★★★3次元へ移動★★★
'ものづくりのススメさんのライブラリ(ICAD_Contorol.bas)を使用。
'https://rivi-manufacturing.com/homebrew-tools/icad-sx/14164/

If ActivateICAD3DView(iCADObj) = False Then
    Exit Sub
End If

'★★★矩形の配置★★★

Depth = Me.DEPTH_X '変数にテキストボックス(DEPTH_X)の値を挿入
Width = Me.WIDTH_Z '変数にテキストボックス(WIDTH_Z)の値を挿入
Height = Me.HIGHT_Y '変数にテキストボックス(HIGHT_Y)の値を挿入

iCADMac = iCADMac & ";PLAY;BOX" & vbCr 'iCADMacに対して値を追記
iCADMac = iCADMac & ".Depth " & Depth & vbCr
iCADMac = iCADMac & ".Width " & Width & vbCr
iCADMac = iCADMac & ".Height " & Height & vbCr
iCADMac = iCADMac & "0 0 " & Depth & " ,"

iCADObj.RunCommand iCADMac, MODE_COMMAND
'iCADObj.RunCommand=VBAからiCADへ「iCADMac」に格納されたコマンドを受け渡す
'MODE_COMMAND=受け渡したコマンドをiCADを「コマンドモード」で実行する

'★★★パーツ化★★★

iCADMac = ""  'コマンド格納先の変数をクリア

iCADMac = iCADMac & "@ZOOMFUL" & vbCr 'iCADMacに対して値を追記
iCADMac = iCADMac & ";TD4MAK;JKT0" & vbCr
iCADMac = iCADMac & "@IOFF;OPNPD" & vbCr
iCADMac = iCADMac & "@IOFF;OUTCRT" & vbCr
iCADMac = iCADMac & "X " & "0" & vbCr
iCADMac = iCADMac & "Y " & "0" & vbCr
iCADMac = iCADMac & "Z " & "0" & " ," & vbCr
iCADMac = iCADMac & "@GO" & vbCr
iCADMac = iCADMac & ".SHORI " & "/1/" & vbCr
iCADMac = iCADMac & ".PARTSNAME " & "/BASE/" & vbCr
iCADMac = iCADMac & ".LAYER " & "/  0/" & vbCr
iCADMac = iCADMac & ".COMMENT1 " & "/ベースプレート/" & vbCr
iCADMac = iCADMac & ".COMMENT2 " & "//" & vbCr

iCADObj.RunCommand iCADMac, MODE_MACRO
'iCADObj.RunCommand=VBAからiCADへ「iCADMac」に格納されたコマンドを受け渡す
'MODE_COMMAND=受け渡したコマンドをiCADを「マクロモード」で実行する
'".SHORI "以降の処理がコマンドモードでは存在しない為、マクロモードで実行
'参考:今回の処理をコマンドBOXで取り出すと→;@SUPKER 1;TD4MAK;JKT0;@IOFF;OPNPD;@IOFF;OUTCRT;@SUPKER 0

'★★★材質設定★★★

iCADMac = ""  'コマンド格納先の変数をクリア

iCADMac = iCADMac & ";VOL3D;SET0;SET1" & vbCr 'iCADMacに対して値を追記
iCADMac = iCADMac & "@PTPIC" & vbCr
iCADMac = iCADMac & ".SELPZ " & "/0/" & vbCr
iCADMac = iCADMac & ".SELCL " & "/\/" & vbCr
iCADMac = iCADMac & ".SELNM " & "/BASE/" & vbCr
iCADMac = iCADMac & "@GO" & vbCr
iCADMac = iCADMac & ".ZAI1 " & "/アルミ板/" & vbCr '材質情報を設定
iCADMac = iCADMac & ".ZAI2 " & "//" & vbCr
iCADMac = iCADMac & ".KIG " & "/A5052P/" & vbCr '材質の記号を設定
iCADMac = iCADMac & ".HIJYU " & "/2.6900/" & vbCr
iCADMac = iCADMac & ".DIF " & "/172,169,177, 67/" & vbCr '色情報を設定
iCADMac = iCADMac & ".SPE " & "/214,179, 40, 49/" & vbCr '色情報を設定
iCADMac = iCADMac & ".SHI " & "/14/" & vbCr
iCADMac = iCADMac & ".ALP " & "/100/" & vbCr

iCADObj.RunCommand iCADMac, MODE_MACRO
'iCADObj.RunCommand=VBAからiCADへ「iCADMac」に格納されたコマンドを受け渡す
'MODE_COMMAND=受け渡したコマンドをiCADを「マクロモード」で実行する
'".SHORI "以降の処理がコマンドモードでは存在しない為、マクロモードで実行
'参考:今回の処理をコマンドBOXで取り出すと→;@SUPKER 1;VOL3D;SET0;SET1;@SUPKER 0

'★★★面取り★★★

iCADMac = ""  'コマンド格納先の変数をクリア

    iCADMac = iCADMac & "@USRVW1 0 @ZOOMFUL @WFET2 0 @GO" & vbCr 'iCADMacに対して値を追記

iCADObj.RunCommand iCADMac, MODE_COMMAND

iCADMac = ""  'コマンド格納先の変数をクリア

    iCADMac = iCADMac & ";BLEND;CNR;SNG" & vbCr
    iCADMac = iCADMac & ".Radius " & "10" & vbCr
    
    '面取り対象指定その1
    iCADMac = iCADMac & "X " & Width & vbCr
    iCADMac = iCADMac & "Y " & Height / 2 & vbCr
    iCADMac = iCADMac & "Z " & Depth & " ," & vbCr
    
    '面取り対象指定その2
    iCADMac = iCADMac & "X " & Width & vbCr
    iCADMac = iCADMac & "Y " & Height / 2 & vbCr
    iCADMac = iCADMac & "Z " & "0" & " ," & vbCr
    
    '面取り対象指定その3
    iCADMac = iCADMac & " X " & "0" & vbCr
    iCADMac = iCADMac & " Y " & Height / 2 & vbCr
    iCADMac = iCADMac & " Z " & Depth & " ," & vbCr
    
    '面取り対象指定その4
    iCADMac = iCADMac & " X " & "0" & vbCr
    iCADMac = iCADMac & " Y " & Height / 2 & vbCr
    iCADMac = iCADMac & " Z " & "0" & " ," & vbCr
    
    iCADMac = iCADMac & "@GO" & vbCr
    
    iCADMac = iCADMac & "@WFONCG ON @CGET2 0 @GO" & vbCr

iCADObj.RunCommand iCADMac, MODE_MACRO
'iCADObj.RunCommand=VBAからiCADへ「iCADMac」に格納されたコマンドを受け渡す
'MODE_COMMAND=受け渡したコマンドをiCADを「マクロモード」で実行する
'".SHORI "以降の処理がコマンドモードでは存在しない為、マクロモードで実行
'参考:今回の処理をコマンドBOXで取り出すと→;@SUPKER 1;BLEND;CNR;SNG;@SUPKER 0

Unload Me
'テキストボックスの値を削除する(MsgBOXを前にするとMsgBOXも消えるので、先に処理する)

MsgBox ("実行完了しました")

End Sub

最後に

今回は4隅に面取りを入れました。
最初講習会で作ったときは視点を2回切り替えて稜線を指定していたのですが、iCAD社様にいい方法はないか相談したところ「ワイヤ表示に切り替えると視点の切り替えがいらないのではないか」と助言を頂き目から鱗でした...
次回は作成したパーツに必要な情報を設定していきます。

Discussion

ログインするとコメントできます