Newsgroup: it.comp.programmare.win32
Titolo: MDL - Microstation....

Sto cercando delle informazioni sullo sviluppo di app.
com MDL
In particolare come chiamare da una dll esterna scritta
in c++ / mfc ecc. delle funzioni mdl_xxx
grazie Ciao.

 wrote in message
news:lMFUc.151881$
5D1.7...@news4.tin.it

Qual'e' il problema? Se le funzioni che vuoi richiamare dal tuo
eseguibile sono quelle messe a disposizione da Microstation, si
richiamano come tutte le funzioni contenute in una dll: includi
il .h e linki il .lib
La cosa e' diver sa se da un programma mdl vuoi chiamare una
funzione in una dll scritta da te.
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 C:\>iao Angelo
Per la prima parte non hai un'esempio ...

 Per la prima parte non hai un'esempio ...
la .lib da includere e' mdlbltin.lib contenuta in
Microstation\mdl\library
L'esempio funziona con la versione 95, SE e J di Microstation.
Con la versione 8 le cose sono cambiate (sia gli include che .lib
che gli stessi prototipi di alcune funzioni).
Con al V8 ho evitato i .lib e ho utilizzato direttamente LoadLibrary,
questo consente di evitare di ridefinirsi le funzioni della libreria
standard.
<CODE>
/*
 *
 * Programming with Microstation's functions  isn't too difficult
 *
 * Il programma mostra l'uso di una StringList all'interno
 * di un programma scritto in C.
 *
 * Spero non si pretenda qualcosa che abbia una qualche utilita' :-)
 */
// Questo define e' necessario in quanto si ha un errore
// in un file di include. Provare senza define e vedere 
// qual'e'.
#define winNT
// E' necessario ridefinire le funzioni standard in
// quanto Microstation le ridefinisce.
int myPrintf(const char*, ...);
#include <stdio.h>
#include <stdlib.h>
/* Include necessari per l'ulilizzo delle StringList
 * come da documentazione.
 */
#include <dlogitem.h>
#include <msstrngl.fdf>
/* Include necessario per l'utilizzo dei define degli errori di
Microstation
 * come da documentazione.
 */
#include <mdlerrs.h>
int main(void)
{
  int          status    = SUCCESS;
  int          idx       = 0;
  int          slSize    = 0;
  size_t       arrDim    = 0;
  char*        strP      = NULL;
  long         pIndex    = 0;
  StringList*  strLstP   = NULL;
  char*        strArrP[] = {"Programming",
                            "with",
                            "Microstation's",
                            "functions",
                            "isn't",
                            "too",
                            "difficult",
                             NULL};
  arrDim = sizeof(strArrP)/sizeof(char*);
// Creazione di una StringList senza membri e senza infoFields
// -----------------------------------------------------------
   strLstP = mdlStringList_create(0,0);
   if(NULL != strLstP)
   { 
      for(idx = 0; idx < (int)arrDim; idx++)
      {
      // Viene inserito un membro della StringList alla fine della
stessa.
         status = mdlStringList_insertMember(&pIndex, strLstP,  -1, 1);
         if(SUCCESS == status)
         {
         // Si setta il valore del membro appena creato.
         // --------------------------------------------
            status = mdlStringList_setMember(strLstP, pIndex,
strArrP[idx], NULL);
            if(SUCCESS != status)
            {
               myPrintf("Errore manipolando la StringList\n");
               exit(status);
            }
         }
         else
         {
            myPrintf("Errore manipolando la StringList\n");
            exit(status);
         }
      }
   // stampa del contenuto della StringList
   // --------------------------------------
      if(SUCCESS == status)
      {
      // Dimensione della StringList
      // ---------------------------
         slSize = mdlStringList_size(strLstP);
         for(idx = 0; idx <  slSize; idx++)
         {
            status = mdlStringList_getMember(&strP, NULL, strLstP, idx);
            if(SUCCESS == status)
            {
              if(NULL != strP)
              {
                 myPrintf(strP);
                 myPrintf("\n");
              }
            }
            else
            {
               myPrintf("Errore manipolando la StringList\n");
               break;
            }
         }
         mdlStringList_destroy(strLstP);
      }
   }
   else
      myPrintf("Impossibile creare la StringList\n");
   return 0;
}
</CODE>


  * Spero non si pretenda qualcosa che abbia una qualche utilita' :-)
Scusa ce una cosa che non capisco .
Allora quel codice del tuo  esempio creaa un eseguibile se io lo lancio che
succede ?
Usa quelle funzioni di microstation all'interno del tuo programma ?
Oppure opera con microstation ? e questo eseguibile deve essere caricato
dall'ambiente di microstation tipo
"mdl load path\esampio.exe" ?
(in effetti mentre sto scrivendo mi viene piů facile pensare che sia cosě)
grazie ciao.

 (in effetti mentre sto scrivendo mi viene piů facile pensare che sia cosě)
Il programma manco lo sa che esiste Microstation. Usa una delle sue
DLL: che MS sia in funzione o meno e' assolutamante irrilevante.
HTH


 DLL: che MS sia in funzione o meno e' assolutamante irrilevante.
... aggiongo che mdl load NON funziona con gli eseguibili di windows,
ma solo con i file ".ma" generati con il compilatore di MicroStation


 Usa quelle funzioni di microstation all'interno del tuo programma ?
Evidentemente mi sono spiegato male, il mio scopo era sempre che sia
possibile gestire tramite c++ l'ambiente di microstation tramite chiamate
alle funzioni mdl
Ho visto che esiste un'oggetto COM che ti permette di chiamare delle
funzioni MDL (sapevi di questo ?  ) .
Se hai qualche informazione o del codice di esempio che posso scaricare o
altro su questo argomento , non solo COM ma un modo per gestire
l'ambiente di lavoro di microstation (vba non è un mio fedele) mi faresti
gentilmente sapere.
grazie mille CIao.

 funzioni MDL (sapevi di questo ?  ) .
Non usiamo COM (e io non conosco questa tecnologia).
HTH


 Prova a vedere se sono quello che cerchi.
ok mi documento su quelle funzion,
[curiosità]
Mi pare che tu conosca bene microstation e le mdl in particolare ma per cosa
le usi ?
Cioè usare il codice mdl nel tuo programma a che scopo ? (come l'esempio che
mi hai scritto)
[/curisoità]
Grazie ancora Ciao.

 [/curisoità]
Conosco decentemente l'MDL, Microstation (inteso come CAD) un po'
di meno.
Per il resto se ne puo' parlare in privato? Non credo che agli altri
interessi molto dell'MDL.
La mia mail e' buona.


 Per il resto se ne puo' parlare in privato? Non credo che agli altri
si hai ragione