Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V4 MAKROS
  Catia V4 von auszen steuern

  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 V4 von auszen steuern (1176 mal gelesen)
ed76
Mitglied
Systemadministrator

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

Beiträge: 1
Registriert: 23.06.2003

erstellt am: 23. Jun. 2003 17:07    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

Moin, moin,

ich betreue ein Netzwerk in dem Catia V4 eingesetzt wird. Da sich fuer unser Belange ein PDM-System in der Groesze eines VPM nicht lohnt haben wir ein's selbst gestrickt. Im Moment ist die Anbindung zweigeteilt. Ein Teil ist im PDM-System integriert der andere ist als IUA realisiert. Unser Ziel ist es aber auf den IUA-Teil zu verzichten und diesen Teil mit dem PDM-Teil zu kombinieren. Soweit das Ziel.

Hier die Frage. Hat schon mal jemand Catia V4 mit einem C Programm von auszen gesteuert? Also ein kleines Cmd-Progi, dem ich sagen kann lade alle Teile im File bla.tmp. Es sollen eigentlich keine groszen Manipulationen am Teil selbst realisiert werden. In der Hauptsache sollen so Aktionen wie laden, entladen, selektieren, etc. gemacht werden.

Gut, jetzt habe ich den Brocken abgelegt und bin gespannt auf die Antworten.

Ciao Ed

IP

parent-cegos
Mitglied


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

Beiträge: 3
Registriert: 28.01.2004

erstellt am: 19. Feb. 2004 16:53    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 Nur für ed76 10 Unities + Antwort hilfreich

Hallo,

ich sehe den Beitrag nur heute. Es ist vielleicht jetzt zu spät, aber ich antworte trotzdem: Ja, es ist möglich.

Ich versuche einen Beispiel als Anhang zu dieser Nachricht zu Uploaden und hoffe, dass es klappt. Es ist ein Beispiel, der ich geschrieben hatte, um einen Bug an Dassault Systemes zu melden. Er besteht aus 2 Dateien: eine fast leere .iuaproc Datei und eine .c Datei.

Gruss
Jérôme PARENT

PS: Bei meiner Firma (CEGOS aus Frankreich) würde einen C++ Treiber entwickelt, um Catia leichter steuern zu können. Dieser Treiber ist aber kostenpflichtig. Bei Interesse kann ich Ihnen gerne in Verbindung mit der Kontaktperson setzen.

PS2: Das mit der Anlage scheint nicht zu funktionnieren. Also hier wäre die Datei BUG.iuaproc:

LOAD BUG

Und hier wäre die Datei BUG.c :
/* This program tries twice to replace a branch in the CSG-Tree using
  GBMBRE. This operation fails at the second time on
  Catia V4 Release 2.4 Refresh 02.
*/

#include <stdio.h>

/* CATIA fonctions */
void gilerr(int *ier);
void gicbrp(int *mnum,int *ibrp,int *ier);
void gcwspl(int *mnum,int *ivtx,double pt[3],double v1[3],double v2[3],double v3[3],double xlng[3],int *jsol,int *ier);
void gbride(int *mnum,int *jsol,int *iprim,int *nbcar,char *ident, int *ier);
void giwbop(int *mnum,int *ioper,int *jsol1,int *jsol2,int *ier);
void gicbrn(int *mnum,int *jsol1,int *ibran,int *jpath,int *ier);
void girbrn(int *mnum,int *jpath,int *jsol,int *ibran,int *ier);
void gbmbre(int *mnum,int *jsol,int *ibran,int *ioper,int *jslin,int *ier);
void gbuexe(int *mnum,int *jsol,int *ier);
void gircsl(int *mnum,int *jsol,int *lhis,int *ier);
void gircsg(int *mnum,int *jsol,int *lhis,int *tabHist,int *ier);


/* main program */
int bug()
{
  int jsol1 = 0, jsol2 = 0, jsol3 = 0, jsol4 = 0;

  /* solid exact */
  {
      int mnum = 1;
      int ibrp = 2;
      int ier = 0;
      gicbrp( &mnum, &ibrp, &ier );
      if ( ier != 0 )  gilerr( &ier );
  }

  /* 1. creating 1st solid. */
  {
      int mnum = 1;
      int ivtx = 1;
      double pt[3] = {0,0,0};
      double v1[3] = {1,0,0};
      double v2[3] = {0,1,0};
      double v3[3] = {0,0,1};
      double xlng[3] = {100,100,100};
      int ier = 0;
      int jsol = 0;
      printf("1. creating 1st solid.\n");
      gcwspl( &mnum, &ivtx, pt, v1, v2, v3, xlng, &jsol, &ier );
      if ( ier != 0 )  gilerr( &ier ); else jsol1 = jsol;
  }

  /* 2. creating 2nd solid. */
  if (0!=jsol1)
  {
      int mnum = 1;
      int ivtx = 1;
      double pt[3] = {25,25,-10};
      double v1[3] = {1,0,0};
      double v2[3] = {0,1,0};
      double v3[3] = {0,0,1};
      double xlng[3] = {50,50,120};
      int ier = 0;
      int jsol = 0;
      printf("2. creating 2nd solid.\n");
      gcwspl( &mnum, &ivtx, pt, v1, v2, v3, xlng, &jsol, &ier );
      if ( ier != 0 )  gilerr( &ier ); else jsol2 = jsol;
  }

  /* 3. cut between jsol1 and jsol2. */
  if (0!=jsol2)
  {
      int mnum = 1;
      int ioper = 3;
      int ier = 0;
      int ibran;
      int jpath;
      printf("3. cut between jsol1 and jsol2.\n");
      giwbop( &mnum, &ioper, &jsol1, &jsol2, &ier );
      if ( ier != 0 )
      {
        gilerr( &ier );
        jsol1 = 0;
      }   
      gbuexe( &mnum, &jsol1, &ier );
      if ( ier != 0 )
      {
        gilerr( &ier );
        jsol1 = 0;
      }
     
      /* Here the following path element will just be created
        and not used any more. In the real application it
        is used later */
      ibran = -1;
      jpath = 0;
      gicbrn( &mnum, &jsol1, &ibran, &jpath, &ier );
      if ( ier != 0 )  gilerr( &ier );
  }

  /* 4. creating 3rd solid. */
  if (0!=jsol1)
  {
      int mnum = 1;
      int ivtx = 1;
      double pt[3] = {25,25,-10};
      double v1[3] = {1,0,0};
      double v2[3] = {0,1,0};
      double v3[3] = {0,0,1};
      double xlng[3] = {25,25,120};
      int ier = 0;
      int jsol = 0;
      printf("4. creating 3rd solid.\n");
      gcwspl( &mnum, &ivtx, pt, v1, v2, v3, xlng, &jsol, &ier );
      if ( ier != 0 )  gilerr( &ier ); else jsol3 = jsol;
  }
 
  /* 5. Replacing a local solid. */
  if (0!=jsol3)
  {
      int i,j;
      int mnum = 1;
      int lhis = 0;
      int *hist;
      int ibran;
      int ioper = 0;
      int ier = 0;
      printf("5. Replacing a local solid.\n");
      gircsl( &mnum, &jsol1, &lhis, &ier );
      if ( ier != 0 )  gilerr( &ier );

      hist = (int *)malloc(lhis*3*sizeof(int));
      gircsg( &mnum, &jsol1, &lhis, hist, &ier );
      if ( ier != 0 )  gilerr( &ier );
      for (i=0;i<lhis;i++)
      {
        printf("  hist[%d] = ",i);
        for ( j=0; j<3; j++ )
        {
            printf("%d ",hist[i*3+j]);
        }
        printf("\n");
      }
      ibran = hist[2];
      printf("  lhis = %d ibran = %d\n",lhis,ibran);
      free(hist);

      gbmbre( &mnum, &jsol1, &ibran, &ioper, &jsol3, &ier );
      if ( ier != 0 )
      {
        gilerr( &ier );
        jsol1 = 0;
      }   
      gbuexe( &mnum, &jsol1, &ier );
      if ( ier != 0 )
      {
        gilerr( &ier );
        jsol1 = 0;
      }   
  }

  /* 6. creating 4th solid. */
  if (0!=jsol1)
  {
      int mnum = 1;
      int ivtx = 1;
      double pt[3] = {25,25,-10};
      double v1[3] = {1,0,0};
      double v2[3] = {0,1,0};
      double v3[3] = {0,0,1};
      double xlng[3] = {40,40,120};
      int ier = 0;
      int jsol = 0;
      printf("6. creating 4th solid.\n");
      gcwspl( &mnum, &ivtx, pt, v1, v2, v3, xlng, &jsol, &ier );
      if ( ier != 0 )  gilerr( &ier ); else jsol4 = jsol;
  }

  /* 7. Replacing again a local solid. */
  if (0!=jsol4)
  {
      int i,j;
      int mnum = 1;
      int lhis = 0;
      int *hist;
      int ibran = -1;
      int ioper = 0;
      int ier = 0;
      printf("7. Replacing again a local solid.\n");
      gircsl( &mnum, &jsol1, &lhis, &ier );
      if ( ier != 0 )  gilerr( &ier );

      hist = (int *)malloc(lhis*3*sizeof(int));
      gircsg( &mnum, &jsol1, &lhis, hist, &ier );
      if ( ier != 0 )  gilerr( &ier );
      for (i=0;i<lhis;i++)
      {
        printf("  hist[%d] = ",i);
        for ( j=0; j<3; j++ )
        {
            printf("%d ",hist[i*3+j]);
        }
        printf("\n");
      }
      ibran = hist[2];
      printf("  lhis = %d ibran = %d\n",lhis,ibran);
      free(hist);

      gbmbre( &mnum, &jsol1, &ibran, &ioper, &jsol4, &ier );
      if ( ier != 0 )
      {
        gilerr( &ier );
        jsol1 = 0;
      }   
      gbuexe( &mnum, &jsol1, &ier );
      if ( ier != 0 )
      {
        gilerr( &ier );
        jsol1 = 0;
      }   
  }

  return 0;
}

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


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)2020 CAD.de | Impressum | Datenschutz