Diese Seiten haben nicht den Anspruch einen Einstieg SolidWorks-Automatisation
über Delphi
zu vermitteln. Es dreht sich hier vielmehr um eine Ansammlung
von Codeschnipsel und Informationen welche man zum Teil per Copy
& Paste in seinen eigenen Anwendungen verbauen kann.
Makros werden in
SolidWorks in Visual Basic (VBA) aufgezeichnet, jedoch wird sich
diese Seit mit dem Late-Binding
mittels Delphi befassen. Die
Code-Schnipsel und Infos haben keinen strukturierten Aufbau und
dienen in aller erster Linie für mich persönlich als Ablageort,
aber wer was gebrauchen kann darf natürlich gerne zugreifen :-)

Schnipsel

Delphi OLE
(Late-Binding)
|
var
swApp, swModel: Variant;
...
try
swApp := GetActiveOleObject('SldWorks.Application');
swApp.visible := true;
// mach irgendwas...
except
ShowMessage('Verbindung zu SolidWoks
fehlgeschlagen!');
end; |
Dateiname und Dateipfad des aktiven Models
|
var
swApp, swModel: Variant;
...
swApp := GetActiveOleObject('SldWorks.Application');
swModel := swApp.ActiveDoc;
Showmessage(swModel.GetTitle);
// zeige Modellname + Dateierweiterung des aktiven Modells
Showmessage(swModel.GetPathName); //
zeige Dateipfad des aktiven Modells |
Alle geladene Dokumente ermitteln (Parts,
Assemblies...)
Die Dokumente werden hier mit dem Dateipfad
erfasst, über diesen sie auch wieder direkt
angesprochen werden können.
|
var
swApp, swModel, ModelDoc: Variant;
slDocs: TStringList;
VariEmty: Boolean;
i: Integer;
...
swApp := GetActiveOleObject('SldWorks.Application');
swModel := swApp.ActiveDoc;
slDocs := TStringList.Create;
ModelDoc := swApp.GetFirstDocument;
slDocs.Add(ModelDoc.GetPathName);
VariEmty := false;
repeat
try
ModelDoc := ModelDoc.GetNext;
if not VariEmty
then slDocs.Add(ModelDoc.GetPathName);
except VariEmty := true end;
until VariEmty = true;
Showmessage(IntToStr(slDocs.Count) +' Dokumente gefunden');
for i := 1
to slDocs.Count
do
Showmessage('Dokument ' +IntToStr(i) +': ' +ExtractFileName(slDocs[i
-1]));
ListBox1.Items := slDocs;
slDocs.Free; |
Datei (CAD-Dokument) öffnen und schließen
|
var
swApp, swModel: Variant;
sModelPfad, Ref:String;
swOpenDocOptions, iFileError, iFileWarning:Interger;
...
swApp := GetActiveOleObject('SldWorks.Application');
// Dokument öffnen
swDocPART := 1;
// 2 = Assembly, 3 = Drawing
swOpenDocOptions := 1;
// Silent
Ref := '';
sModelPfad := 'C:\Model.SLDPRT';
swModel := swApp.OpenDoc6(sModelPfad, swDocPART,
swOpenDocOptions_Silent, Ref, fileerror, filewarning);
// Dokument
schließen
swApp.CloseDoc(swModel.GetPathName); |
|
|

Links
|
 |