Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  CATIA CAA - Workbench Funktionen im CAA Backend finden und aufrufen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  CATIA CAA - Workbench Funktionen im CAA Backend finden und aufrufen (357 mal gelesen)
user7
Mitglied



Sehen Sie sich das Profil von user7 an!   Senden Sie eine Private Message an user7  Schreiben Sie einen Gästebucheintrag für user7

Beiträge: 19
Registriert: 26.08.2022

erstellt am: 13. Feb. 2023 14:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Problem.png

 
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

user7
Mitglied



Sehen Sie sich das Profil von user7 an!   Senden Sie eine Private Message an user7  Schreiben Sie einen Gästebucheintrag für user7

Beiträge: 19
Registriert: 26.08.2022

erstellt am: 02. Mrz. 2023 13:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Falls jemand ein ähnliches Problem hat. Nach langem Trial-And-Error kam ich zumindest hier dahinter wie die Dimensionen im Nachgang manipuliert werden können.
Bei meinen Fragen 1 und 2 bin ich noch nicht schlauer geworden.. die Softwarearchitektur von CATIA / CAA bleibt für mich ein schwer lesbares Etwas.

Code:
// erstellen der Dimension opiDimension
piFactoryElementary->CreateNonSemanticDimension(ipiTTRS, iDimensionType, iSubType, &opiDimension);

// cast auf IUnknown
IUnknown* pUkDimension = (IUnknown*)opiDimension;

// die erstellte Annotation beinhaltet zwei DrawingInterfaces welche genutzt werden können um die gesamte Palette an Manipulationsmöglichkeiten welche es im 2D gibt auszuschöpfen. 2D und 3D Annotation sind magisch synchronisiert.
CATIDrwAnnotation* pDrwAnnotation = NULL;
CATIDrwDimDimension* pDrwDimDimension = NULL;
if (!SUCCEEDED(pUkDimension->QueryInterface(IID_CATIDrwAnnotation, (void**)&pDrwAnnotation))) goto Exit;
if (!SUCCEEDED(pUkDimension->QueryInterface(IID_CATIDrwDimDimension, (void**)&pDrwDimDimension))) goto Exit;

// Beispiel: Bemaßungsrichtung festlegen
CATIDrwDimDimensionLine_var spDimLine = pDrwDimDimension->GetDimensionLine();
double dixr[] = { 1, 0 }; // Richtung x/y in Sheet-Koorindaten. Die 3D Koordinaten müssen also zunächst in 2D viewspace transformiert werden.
spDimLine->SetDirection(DrwDimUserDefined, dixr); // statt DrwDimUserDefined kann auch horizontal/vertical hier festgelegt werden

// Update vis
CATISpecObject_var spDimSpec = pDrwAnnotation;
spDimSpec->Update();


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz