StrCmpLogicalW を使用したファイル名のエクスプローラー風ソート
AutoCADから3DPDFへの掃き出しを実施した場合
レイヤ表示がAutoCADで表示される順番ではなく
アットランダムになってしまいます。
DWG→3DPDFへ吐き出すソフトも色々ありますが
どれで試してみてもダメでした。
そこで、AutoCADで表示されている順番にレイヤごとに
図面を新図にコピペし、その後3DPDFへ吐き出してみると、レイヤ順に並ぶ様です。
その作業をいちいち手作業でするのも大変なので
プログラム化することに。
まずは図面から、レイヤごとにレイヤ名で図面を別図面に掃き出す。
吐き出した図面要素は削除する。
次に吐き出された図面ごとにソートした順番に図面を読み込みする事で
3DPDFへ吐き出せば、いい感じで並ぶはずでしたが、順番がどうもおかしい。
問題はソートにありました。
エクスプローラー風にソートするにはWindowsのAPI【StrCmpLogicalW】を使用する必要があるらしいです。
実際にAutoCAD VBAの記述をソートの部分だけですが、下記に記載しておきます。
参考になればご使用下さい!
FNAME に取得したレイヤ名が配列として格納されています。
FCOUNT はレイヤの数
Option Explicit
Private Declare PtrSafe Function StrCmpLogicalW Lib "SHLWAPI.DLL" _
(ByVal lpStr1 As String, ByVal lpStr2 As String) As Long
Public Sub LSORT()
Dim I As Long
Dim J As Long
Dim TMP As String
Dim FNAME(1000) As String
Dim Fcount As String
For I = 1 To Fcount
For J = I To Fcount
If StrCmpLogicalW(StrConv(FNAME(J), vbUnicode), StrConv(FNAME(I), vbUnicode)) < 0 Then
TMP = FNAME(I)
FNAME(I) = FNAME(J)
FNAME(J) = TMP
End If
Next J
Next I
End Sub
« 430 SSB 塩塚高原移動風景 | トップページ | Windows 10 Update による AutoCADファンクションキーの不具合 »
「CAD」カテゴリの記事
- StrCmpLogicalW を使用したファイル名のエクスプローラー風ソート(2020.09.02)
- AutoCADのFixedProfile.aws について(2013.04.02)
- AutoCAD 2013 下位バージョンへの保存(2012.10.19)
- NaviPortal(2012.03.19)
- JW_CAD DOS版(2012.01.25)
« 430 SSB 塩塚高原移動風景 | トップページ | Windows 10 Update による AutoCADファンクションキーの不具合 »
コメント