interface PHP / TopSolid

Tous sujets concernant le développement spécifique de TopSolid avec l'interface COM, le langage LIP, la programmation de l'API en VB...

Modérateurs : remi77, D@vid, Alexis GERARD

baptisteMath
Caporal
Caporal
Messages : 23
Enregistré le : 22 mars 2021, 14:55
Version TopSolid : 6.24

interface PHP / TopSolid

Message non lu par baptisteMath »

Bonjour à tous,

Actuellement en train de faire une refonte de mon ERP(Access) en application PHP je me suis cette après midi intéressé à savoir si il était possible d’intégré un morceau de l'API de TopSolid dans mon application.
je cherche notamment à récuperer la listes des projets du PDM et la nomenclature de ceux ci.

n'ayant vu très peu de documentation à ce sujet sur le web je me permets de vous montrer ce que j'ai réussi à faire :

j'ai écris une classe en C# avec visualStudio:

Code : Tout sélectionner

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using TopSolid.Kernel.Automating;
using TopSolid.Cad.Design.Automating;
using TopSolid.Cad.Drafting.Automating;

namespace TestPhp
{
    public class Class1
    {
        private bool retour;

        
        
        public string HelloWorld()
        {
            return "Bonjour le monde";
        }
        public bool Connect()
        {
            retour = true;
            retour = TopSolidHost.Connect();
             TopSolidDesignHost.Connect();
             TopSolidDraftingHost.Connect();
            return retour;
        }
        public bool IsConnected()
        {
            return TopSolidHost.IsConnected;
        }
        public string Document()
        {
            if (!TopSolidHost.IsConnected)
            {
                return "";
            }
            DocumentId docId = TopSolidHost.Documents.EditedDocument;
            return docId.ToString();
        }
        public bool Disconnect()
        {
            TopSolidHost.Disconnect();
            TopSolidDesignHost.Disconnect();
            TopSolidDraftingHost.Disconnect();
            return true;
        }
        public  string VersionTSHost()
        {
            
            return TopSolidHost.Version.ToString();
        }
        public  string Projects()
        {
            //List<PdmObjectId>
            var project_list = TopSolidHost.Pdm.GetProjects(true, false);
            var retour = "";

            foreach (PdmObjectId id in project_list)
                retour += id.Id + " ; " ;

            return retour;
        }
        public List<PdmObjectId> Projectss()
        {
            //List<PdmObjectId>
            var project_list = TopSolidHost.Pdm.GetProjects(true, false);
            //PdmObjectId[] project_array = project_list.ToArray();
            return project_list;
            
        }

    }
}
une fois le projets généré j'utilise cette commande:

Code : Tout sélectionner

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe C:\Users\Baptou\source\repos\TestPhp\bin\Debug\TestPhp.dll
ensuite dans mon code PHP j'ai reussis à faire ça:

Code : Tout sélectionner

$object = new \COM('TestPhp.Class1');
        //$object = new \DOTNET('TestPhp','Class1');
        dump($object->HelloWorld());
        dump($object->Connect());
        dump($object->IsConnected());
        dump($object->Document());
        dump($object->VersionTSHost());
        dump($object->Projectss());
ceci n'est qu'un tout petits début et si vous avez de remarque , suggestion, ou autre retours d'experiences je suis preneur !

Cordialement Baptiste
La loutre
Lieutenant-colonel
Lieutenant-colonel
Messages : 1015
Enregistré le : 18 oct. 2020, 21:32
Réponses : 41
Version TopSolid : 7.13
Module TopSolid : TopSolid'Steel
Localisation : Valenciennes
Contact :

Re: interface PHP / TopSolid

Message non lu par La loutre »

Bon courage, gros taf d'interfacer deux langages aussi différents.
Du coup j'ai cherché un peu sur le net et j'ai trouvé ce post assez intéressant avec deux lien vers des tutoriels sur les Web services https://www.developpez.net/forums/d9432 ... sharp-php/
Intéressant comme approche.
baptisteMath
Caporal
Caporal
Messages : 23
Enregistré le : 22 mars 2021, 14:55
Version TopSolid : 6.24

Re: interface PHP / TopSolid

Message non lu par baptisteMath »

merci pour le retour d'infos!
baptisteMath
Caporal
Caporal
Messages : 23
Enregistré le : 22 mars 2021, 14:55
Version TopSolid : 6.24

Re: interface PHP / TopSolid

Message non lu par baptisteMath »

j'ai voulu ce matin créer un serveur en ASP.net / C#
mais lorsque je veux ajouter les references à topsolid l'application plante :?
La loutre
Lieutenant-colonel
Lieutenant-colonel
Messages : 1015
Enregistré le : 18 oct. 2020, 21:32
Réponses : 41
Version TopSolid : 7.13
Module TopSolid : TopSolid'Steel
Localisation : Valenciennes
Contact :

Re: interface PHP / TopSolid

Message non lu par La loutre »

Avec quel message d'erreur ?
baptisteMath
Caporal
Caporal
Messages : 23
Enregistré le : 22 mars 2021, 14:55
Version TopSolid : 6.24

Re: interface PHP / TopSolid

Message non lu par baptisteMath »

je n'ai aucun problème à génerer le projet , mais lorsque j'accède au serveur "https://localhost:44336/" j'ai ce message:

Code : Tout sélectionner

Erreur du serveur dans l'application '/'.
Impossible de charger le fichier ou l'assembly 'LZ4cc' ou une de ses dépendances. Tentative de chargement d’un programme de format incorrect. 
j'ai essayer d'ajouter le fichier LZ4cc.dll (fichier que j'ai trouvé dans C:\Program Files\Missler Software\TopSolid 7.13\bin\LZ4cc.dll) à mes references mais sans succès...
La loutre
Lieutenant-colonel
Lieutenant-colonel
Messages : 1015
Enregistré le : 18 oct. 2020, 21:32
Réponses : 41
Version TopSolid : 7.13
Module TopSolid : TopSolid'Steel
Localisation : Valenciennes
Contact :

Re: interface PHP / TopSolid

Message non lu par La loutre »

https://stackoverflow.com/questions/494 ... ld-looking
J'ai trouvé ça. J'en déduis qu'il faut l'ajouter en tant que package NuGet dans ton projet et non référencer directement la dll.
baptisteMath
Caporal
Caporal
Messages : 23
Enregistré le : 22 mars 2021, 14:55
Version TopSolid : 6.24

Re: interface PHP / TopSolid

Message non lu par baptisteMath »

je viens d'installer LZ4 via nuget, ça semble fonctionner,
mais j'ais maitenant le même message d'erreur mais pour SentinelRMSCOre
La loutre
Lieutenant-colonel
Lieutenant-colonel
Messages : 1015
Enregistré le : 18 oct. 2020, 21:32
Réponses : 41
Version TopSolid : 7.13
Module TopSolid : TopSolid'Steel
Localisation : Valenciennes
Contact :

Re: interface PHP / TopSolid

Message non lu par La loutre »

Autant je connais LZ4 en tant que bibliothèque d'algo de compression de données. Là je ne vois pas en quoi SentinelRMSCore est utile.
Tu as vu cette page https://sentineldiscussion.gemalto.com/ ... 64-machine ? Ils ont l'air de d'ajouter directement la dll plus une autre.
baptisteMath
Caporal
Caporal
Messages : 23
Enregistré le : 22 mars 2021, 14:55
Version TopSolid : 6.24

Re: interface PHP / TopSolid

Message non lu par baptisteMath »

j'ai ajouter SentinelRmsCore.dll manuellement -> ce problème est resolu!

j'ai du ajouter toutes les DLL TopSolid.kernel.XK.*.dll dans mon projet mais j'ai du modifier le paramètre "Copie locale" à False pour toutes ces réferences

j'ai également ajouter TopSolid.kernel.SX.dll

Et je n'ai plus d'erreur :D


maintenant dans mon projet controller j'ai fais ça:

Code : Tout sélectionner

//api/project
        public IHttpActionResult GetProject()
        {
            bool v = TopSolidHost.Connect();
            var project_list = TopSolidHost.Pdm.GetProjects(true, false);


            return Json(project_list);
        }
maintenant si je vai sur https://localhost:44336/api/project j'obients un json avec 4 pdmobjectid
La loutre
Lieutenant-colonel
Lieutenant-colonel
Messages : 1015
Enregistré le : 18 oct. 2020, 21:32
Réponses : 41
Version TopSolid : 7.13
Module TopSolid : TopSolid'Steel
Localisation : Valenciennes
Contact :

Re: interface PHP / TopSolid

Message non lu par La loutre »

Du coup tu utilises un web service pour la connexion entre l'API TS et PHP ?
baptisteMath
Caporal
Caporal
Messages : 23
Enregistré le : 22 mars 2021, 14:55
Version TopSolid : 6.24

Re: interface PHP / TopSolid

Message non lu par baptisteMath »

oui c'est ça
j'ai suivi ce matin cette doc : https://dotnettec.com/how-to-create-web-api-in-asp-net/
baptisteMath
Caporal
Caporal
Messages : 23
Enregistré le : 22 mars 2021, 14:55
Version TopSolid : 6.24

Re: interface PHP / TopSolid

Message non lu par baptisteMath »

un premier début :D
Screenshot_2021-04-11 Welcome .png
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
La loutre
Lieutenant-colonel
Lieutenant-colonel
Messages : 1015
Enregistré le : 18 oct. 2020, 21:32
Réponses : 41
Version TopSolid : 7.13
Module TopSolid : TopSolid'Steel
Localisation : Valenciennes
Contact :

Re: interface PHP / TopSolid

Message non lu par La loutre »

Ça commence à prendre forme 👍je n'ai jamais manipulé le json. C'est pratique comme format de données ?
Petite question, pourquoi faire une interface en php ?
baptisteMath
Caporal
Caporal
Messages : 23
Enregistré le : 22 mars 2021, 14:55
Version TopSolid : 6.24

Re: interface PHP / TopSolid

Message non lu par baptisteMath »

Le Json est facilement serializable et deserializable
baptisteMath
Caporal
Caporal
Messages : 23
Enregistré le : 22 mars 2021, 14:55
Version TopSolid : 6.24

Re: interface PHP / TopSolid

Message non lu par baptisteMath »

Pourquoi faire une interface en PHP:
Il y'a 2 ans j'avais commencé à développer un petit ERP sous MS Access pour l'entreprise dans lequel je suis.
Ce projet a bien avancer (gestion de projet, gestion temps de travail employés ,bon de livraison/commande...)
Mais comme tous projet Access je suis limitée a la dépendance de posséder le runtime Access sur chaque poste
Avec une application PHP tous équipements branché sur le réseau aura accès à l'application
baptisteMath
Caporal
Caporal
Messages : 23
Enregistré le : 22 mars 2021, 14:55
Version TopSolid : 6.24

Re: interface PHP / TopSolid

Message non lu par baptisteMath »

Est qu'une personne parmis vous aurais le guide de l'automation pour le Kernel ?
je n'ai que celui pour la partie CAM et pour la partie Design
Capture d’écran 2021-04-12 194244.png
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
La loutre
Lieutenant-colonel
Lieutenant-colonel
Messages : 1015
Enregistré le : 18 oct. 2020, 21:32
Réponses : 41
Version TopSolid : 7.13
Module TopSolid : TopSolid'Steel
Localisation : Valenciennes
Contact :

Re: interface PHP / TopSolid

Message non lu par La loutre »

Elle est dans l'aide du Design. Il y a les deux.
baptisteMath
Caporal
Caporal
Messages : 23
Enregistré le : 22 mars 2021, 14:55
Version TopSolid : 6.24

Re: interface PHP / TopSolid

Message non lu par baptisteMath »

merci !
baptisteMath
Caporal
Caporal
Messages : 23
Enregistré le : 22 mars 2021, 14:55
Version TopSolid : 6.24

Re: interface PHP / TopSolid

Message non lu par baptisteMath »

Bonjour à tous !

je voulais vous montrer où j'en suis :
Capture d’écran 2021-04-17 094226.png
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Répondre