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