Hallo zusammen,
ich habe verschiedene Views in 3D (FTA - TPSViews), die ich gerne automatisch auf ein 2D Drawing zeichnen würde.
Dazu habe ich folgende Funktion in CAA:
Code:
HRESULT __stdcall CustomPart::InsertTPSViewInCurrentDrawingSheet(CATIABase* iDrawingSheet, CATIABase* iTPSView, const CATSafeArrayVariant& iOrigin, CATIABase*& oReturnValue) { HRESULT hr = CATReturnSuccess;
CATITPSView_var sp_tpsView = iTPSView;
CATIDftSheet* p_drawingSheet = NULL;
if (SUCCEEDED(iDrawingSheet->QueryInterface(IID_CATIDftSheet, (void**)&p_drawingSheet))) {
CATIDftView* piDftViewFrom3D = NULL;
// View anchor point definition
const double* orig_arr = EDIConvertCATSafeArrayVariantToDoubleArray(iOrigin);
double x_orig = orig_arr[0];
double y_orig = orig_arr[1];
double ptOrigin[2] = { x_orig, y_orig };
IUnknown* pTPSViewUk = NULL;
if (SUCCEEDED(sp_tpsView->QueryInterface(IID_IUnknown, (void**)&pTPSViewUk)))
{
CATIDftGenViewFactory* piDftGenViewFact = NULL;
if (SUCCEEDED(p_drawingSheet->QueryInterface(IID_CATIDftGenViewFactory, (void**)&piDftGenViewFact)))
{
hr = piDftGenViewFact->CreateViewFrom3D(ptOrigin, pTPSViewUk, &piDftViewFrom3D);
if (SUCCEEDED(hr) && piDftViewFrom3D) {
hr = S_OK;
piDftViewFrom3D->QueryInterface(IID_CATIABase, (void**)&oReturnValue);
}
else {
hr = E_FAIL;
}
p_drawingSheet->Release(); p_drawingSheet = NULL;
piDftViewFrom3D->Release(); piDftViewFrom3D = NULL;
piDftGenViewFact->Release(); piDftGenViewFact = NULL;
}
pTPSViewUk->Release();
pTPSViewUk = NULL;
}
}
hr = CATReturnSuccess;
return hr;
}
Und dann in C#
Code:
DrawingView newView = (DrawingView)myCustomPart.InsertTPSViewInCurrentDrawingSheet(sheet, view, origin.Cast<object>().ToArray());
Im DrawingSheet funktioniert das manuell über Insert>Views>Projections>View From 3D.

Das Ergebnis schaut zunächst identisch aus. Nur, dass bei der programmatischen Variante die ViewSettings unterschiedlich sind.
Settings von manuell eingefügter View:

Settings von programmatisch eingefügter View:

Allgemeine Settings von Catia:

Hat jemand eine Idee wie man an die Settings einer DrawingView in C# oder CAA drankommen könnte? Also wie ich va den Flag "Generation Mode of Annotation - Generate Red Cross on Annotation" deaktivieren kann? Oder wie ich global über irgendwelche Settings bügeln kann, sodass immer bei ViewsFrom3D die Einstellung wie gewünscht vorgenommen wird?
Hab mich schon ewig erfolglos durch die Eigenschaften von den Objekten im CAA und der DrawingView gewühlt und nichts dazu gefunden -.-
Vielen Dank im Voraus & Beste Grüße
Matt
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP