<CATIA V5 BBS TIPS & USAGE TOP_PAGE > 記事閲覧
dxf-3Dを読む
日時: 2006/05/24 16:48
名前: emily

HondaのDxfで3DFACEだけの定義からフィルフェースを作ります。すごく遅いので初めは小さいDXFを試してください。

'.catvbs で作成
dim part1, hFact1, hBody1
dim objFile

Sub CATMain()
Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part
Set hFact1 = part1.HybridShapeFactory
Set hybridBodies1 = part1.HybridBodies
Set hBody1 = hybridBodies1.Add

' i=0
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\temp\apper_cowl.dxf", 1) '<--ファイル名は変更してください
Do Until objFile.AtEndOfStream '150<i
if ( read_1() = "3DFACE" ) then
' i = i+1
Call gene_fac
end if
Loop
objFile.Close
End Sub

function read_1()
a = "" 'Hondaのデータは &H0D が改行コードだった.
Do 'だから、readLineが使えない
str1 = objFile.Read(1)
if(Asc(str1)=13) then exit do
a=a & str1
Loop
read_1 = a
End function

function read_1d()
read_1d = 100 * read_1 '元はメートル単位
End function

sub gene_fac
dim x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3
for i=1 to 5:read_1 :next
x0=read_1d: read_1: y0=read_1d: read_1: z0=read_1d: read_1
x1=read_1d: read_1: y1=read_1d: read_1: z1=read_1d: read_1
x2=read_1d: read_1: y2=read_1d: read_1: z2=read_1d: read_1
x3=read_1d: read_1: y3=read_1d: read_1: z3=read_1d
pnum=4
if ( abs(x2-x3)<0.002 and abs(y2-y3)<0.002 and abs(z2-z3)<0.002 ) then pnum=3
Set hybridShapeFill1 = hFact1.AddNewFill()
set pnt0 = hFact1.AddNewPointCoord(x0,y0,z0)
set pnt1 = hFact1.AddNewPointCoord(x1,y1,z1)
set pnt2 = hFact1.AddNewPointCoord(x2,y2,z2)
set pnt3 = hFact1.AddNewPointCoord(x3,y3,z3)
set lin0 = hFact1.AddNewLinePtPt(pnt0,pnt1):hBody1.AppendHybridShape lin0
set lin1 = hFact1.AddNewLinePtPt(pnt1,pnt2):hBody1.AppendHybridShape lin1
if pnum=4 then _
set lin2 = hFact1.AddNewLinePtPt(pnt2,pnt3):hBody1.AppendHybridShape lin2
set lin3 = hFact1.AddNewLinePtPt(pnt3,pnt0):hBody1.AppendHybridShape lin3
part1.Update
Set reference0 = part1.CreateReferenceFromObject(lin0)
Set hybridShapeFillEdge1 = hFact1.AddNewFillEdge(reference0, 0, 0.0)
hybridShapeFill1.AddFillEdge hybridShapeFillEdge1
Set reference1 = part1.CreateReferenceFromObject(lin1)
Set hybridShapeFillEdge1 = hFact1.AddNewFillEdge(reference1, 0, 0.0)
hybridShapeFill1.AddFillEdge hybridShapeFillEdge1
if pnum=4 then
Set reference2 = part1.CreateReferenceFromObject(lin2)
Set hybridShapeFillEdge1 = hFact1.AddNewFillEdge(reference2, 0, 0.0)
hybridShapeFill1.AddFillEdge hybridShapeFillEdge1
end if
Set reference3 = part1.CreateReferenceFromObject(lin3)
Set hybridShapeFillEdge1 = hFact1.AddNewFillEdge(reference3, 0, 0.0)
hybridShapeFill1.AddFillEdge hybridShapeFillEdge1
hBody1.AppendHybridShape hybridShapeFill1
part1.Update

Set reference5 = part1.CreateReferenceFromObject(hybridShapeFill1)
Set hybridShapeSurfaceExplicit1 = hFact1.AddNewSurfaceDatum(reference5)
hBody1.AppendHybridShape hybridShapeSurfaceExplicit1
hFact1.DeleteObjectForDatum reference5
hFact1.DeleteObjectForDatum reference0
hFact1.DeleteObjectForDatum reference1
hFact1.DeleteObjectForDatum reference3
if pnum=4 then _
hFact1.DeleteObjectForDatum reference2
part1.Update

End Sub

メンテ(修正・削除)

Page: 1 |

Re: dxf-3Dを読む ( No.1 )
日時: 2006/05/25 16:30
名前: emily

すごく遅い・・理由ですが、ファイルからの1文字づつ入力ではなかった。1000面位は2〜3分ですが、段々part1.Updateでcatiaの内部に蓄積するときにCollectionへの追加がトロイようです。dxfの1400KB(25万行)で8400面位。それで、1000面ずつCatPartを分けて処理したら早いことがわかりました。i = i+1の当たりで2000〜3000だけ処理するとか条件をつければ良いです。
直線4本だけで面にしない手もありますが、そのほうがCATPartのサイズは大きいです。速度もあまり変わらないみたい。

<上記の関連記事>

dxf型式ファイル変換のについて 社内で自己学習 - 2006/05/24(Wed) 12:29 No.1107 返信 修正・削除
ドラフティングで何点かお教え願います。
●CATIAを始めたばかりで空き時間に少しでも勉強しようと思い、ホンダのHPからdxf形式のファイルをダンロードして開いたところ、ドラフティングでデータ変換中と表示された後、新規図面が開きデータが反映されません。(どの車種のファイルも無理でした)
http://www.honda.co.jp/WebPlamo/
ほかのHPでダウンロードしたファイルは通常にデータが変換され開けるのですがなにがいけないのでしょうか?

Re: dxf型式ファイル変換のについて emily - 2006/05/24(Wed) 13:19 No.1110 返信 修正・削除

>新規図面が開きデータが反映されません。
当方でも同じでした(R15)。dxfの先頭を少しみたら、3DFACEの定義の固まりです。CATIAで3Ddxfは無理みたい。

ムーミンさんの言われてるように、オンラインドキュメントを使って下さい。チュートリアルも入ってます。基本的な操作を学習していけば「当たり前のようなこと」でつまづいて時間ばかりかかることがなくなりますヨ

Re: dxf型式ファイル変換のについて emily - 2006/05/24(Wed) 17:00 No.1114 返信 修正・削除

本題からはそれた話ですが、V5で、ホンダのHPからのdxf形式のファイルを、面モデルに変換するマクロを作ってみました。バグは多々あるかも・・デス
上の[TIPS&USAGE]の中にいれておきましたので興味のあるかたはどうぞ。(マクロの勉強にはいいかも・・)

メンテ(修正・削除)

Page: 1 |

題名 スレッドをトップへソート
名前  
E-Mail   ※URLとの併記不可
URL   ※Eメールとの併記不可
パスワード 記事メンテ時に使用(英数字で8文字以内)
投稿キー (投稿時 投稿キー を入力してください)
コメント
添付データ 添付可能ファイル GIF, JPEG, PNG, LHA, ZIP 最大投稿データ量 1000 KB (1.0 MB)
データ1
データ2

   クッキー保存