Hallo zusammen,
ich bin gerade dabei einen CAA Funktionsablauf zu schreiben, welcher über einen zusätzlichen Button in der Workbench ausgelöst werden kann. Dabei werden alle Löcher in analysiert und diejenigen gesammelt, welche parallel zur aktiven TPS View sind. Ein Loch (in dem Fall Mitte oben) wird als Primär-Loch angenommen und alle anderen Löcher sollen automatisch darauf bemaßt werden (cumulate ordiante Dimensions). Der Ablauf funktioniert bis zu dem Punkt an dem die Dimensionen in die TPSView gezeichnet werden sollen.
Als Beispielfall habe ich hier die Bemaßung vom Primär-Loch auf das Loch rechts unten.
CATITPSFactoryElementary Documentation: CAADoc/Doc/online/CAACenV5Default.htm > C++ API > CATTPSInterfaces > CATITPSFactoryElementary
Ich nutze die Funktion CreateNonSemanticDimension des Interfaces CATITPSFactoryElementary, um die Dimension zu erstellen.
Aktueller Code:
Code:
// CREATE TTRS FACTORY - Retrieve CATITPSFactoryTTRS interfaces
// ======================
CATITPSFactoryElementary* piFactoryElementary = NULL;
if (!SUCCEEDED(piTPSSet->QueryInterface(IID_CATITPSFactoryElementary, (void**)&piFactoryElementary)) | | !piFactoryElementary) goto Exit;
// CREATE CATSO for two given face references
// ======================
CATSO* pSelectionOfObjects = NULL;
pSelectionOfObjects = new CATSO();
CATPathElement* pPathElement1 = EDIConvertCATIAReferenceToCATPathElement(iRefReferenceHole); /// iRefReferenceHole: this reference contains the top center primary hole ( CATIAReference* )
pSelectionOfObjects->AddElement(pPathElement1);
CATPathElement* pPathElement2 = EDIConvertCATIAReferenceToCATPathElement(firstHoleRef); /// firstHoleRef: this reference contains the bottom right hole ( CATIAReference* )
pSelectionOfObjects->AddElement(pPathElement2);
// CREATE TTRS FACTORY - Retrieve CATITPSFactoryTTRS interfaces
// ======================
CATITPSFactoryTTRS* piFactTTRS = NULL;
if (!SUCCEEDED(CATTPSInstantiateComponent(DfTPS_ItfTPSFactoryTTRS, (void**)&piFactTTRS)) | | !piFactTTRS) goto Exit;
// CREATE TTRS OBJECT from selection
// ======================
CATITTRS* ipiTTRS = NULL;
if (!SUCCEEDED(piFactTTRS->GetTTRS(pSelectionOfObjects, &ipiTTRS)) | | !ipiTTRS) goto Exit;
// CREATE DIMENSION
// ======================
CATTPSDimensionType iDimensionType = (CATTPSDimensionType)5;
CATTPSLinearDimensionSubType iSubType = (CATTPSLinearDimensionSubType)0;
CATITPSNonSemanticDimension* opiDimension = NULL;
hr = piFactoryElementary->CreateNonSemanticDimension(ipiTTRS, iDimensionType, iSubType, &opiDimension);
if (!SUCCEEDED(hr)) goto Exit;
Das Problem:
es gibt in der Funktion CreateNonSemanticDimension keine Einstellungsmöglichkeiten, um z.B. die Richtung vorzugeben. Wie oben im Bild grün/rot markiert gibt es hier, wie es scheint, nur die Methode eine rudimentäre Dimension zu erzeugen. Alles Weitere, wie beispielsweise die Spezifikation der Bemaßungsrichtung ist schlicht nicht vorhanden.
In der FTA Workbench gibt es aber ja schließlich die Buttons, welche genau diese Funktionalität über die GUI umzusetzen. Wie würdet ihr hier vorgehen, um die interne Herangehensweise zu finden mit der die Funktionalitäten in der FTA Workbench umgesetzt wurden? Also welche CAA Funktionen hier aufgerufen werden, wenn man z.B. "Cummulated Dimensions" auswählt (oranges Symbol in unterer Toolbar) und dann in der ToolsPalette "Force dimension along a direction" auswählt (zweites von rechts).
Kurzum: ich würde gerne eine Dimension einfügen, die entlang einer vorgegebenen Richtung misst (z.B. entlang des roten Pfeils - was in der skizzierten Bemaßung (rot) resultieren würde).
1) Gibt es einen Weg herauszufinden, welche Funktionen hier in der FTA Workbench eingesetzt wurden? Also welche CAA Funktionen werden getriggert? Kommt man irgendwie an den Source-Code?
2) Ansonsten: Kann ich irgendwie auf die Commands in so einer Toolbar / Workbench zugreifen? Also lassen sich die Commands (z.B. "Cummulated Dimensions" Button) auch aus CAA triggern?
3) Kennt sonst jemand einen Weg wie ich beim Erstellen einer CATITPSNonSemanticDimension die Richtung enforcen kann?
Ich bin für jeden Hinweis sehr dankbar!
Viele Grüße
Matt
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP