procedure SldWrkConnect; var swApp: ISldWorks; fileName,fileExt: String; fileerror,filewarning: LongInt; DocType: swDocumentTypes_e; swModel: IModelDoc2; begin fileName := 'C:\Model.SLDASM'; fileExt := AnsiUpperCase(ExtractFileExt(fileName)); if fileExt = '.SLDASM' then DocType := swDocASSEMBLY // else if fileExt = '.SLDPRT' then DocType := swDocPART // else if fileExt = '.SLDDRW' then DocType := swDocDRAWING // else begin ShowMessage(' !'); DocType := swDocNONE; end; swApp := IUnknown(CreateOleObject('SldWorks.application')) as ISldWorks; swApp.OpenDoc6(fileName,DocType,swOpenDocOptions_Silent,'',fileerror, filewarning); swModel := swapp.ActiveDoc as IModelDoc2; // ... // if not swApp.Visible then begin swApp.CloseAllDocuments(true); swApp.ExitApp; end; end;
swApp.Visible := true;
procedure SldWrkConnect; var ... author,dataCreate,nameParam: String; vCustomInfo: OleVariant; j: Integer; begin ... // " " author := swModel.SummaryInfo[swSumInfoAuthor]; dataCreate := swModel.SummaryInfo[swSumInfoCreateDate]; // "" vCustomInfo := swModel.GetCustomInfoNames; // for j := VarArrayLowBound(vCustomInfo,1) to VarArrayHighBound(vCustomInfo,1) do if '_' = AnsiUpperCase(vCustomInfo[j]) then // nameParam := swModel.GetCustomInfoValue('',vCustomInfo[j]); ... end;
procedure SldWrkConnect; var ... vConfArr: array of String; k: Integer; swComp: Component2; swConf: IConfiguration; begin ... k := swModel.GetConfigurationCount; setLength(vConfArr,k); vConfArr := swModel.GetConfigurationNames; for i:=0 to k-1 do begin swConf := swModel.IGetConfigurationByName(vConfArr[i]); swComp := swConf.GetRootComponent3(true); if DocType = swDocASSEMBLY then // , Traverse(swComp,nil); end end;
swConf:= swModel.IGetActiveConfiguration;
procedure Traverse(swComp:Component2; node:TTreeNode); var vChildArr: OleVariant; i:Integer; nodeChild: TTreeNode; begin if (node = nil) then nodeChild := TreeView.Items.Add(nil,swComp.Name2) else nodeChild := TreeView.Items.AddChild(node,swComp.Name2); vChildArr:= swComp.GetChildren; if not VarIsNull(vChildArr) then for i := VarArrayLowBound(vChildArr, 1) to VarArrayHighBound(vChildArr, 1) do Traverse(IUnknown(vChildArr[i]) as IComponent2, nodeChild); end;
Source: https://habr.com/ru/post/263133/
All Articles