| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO |
| |
| Virtual T-Days 2024: ALM - effizientes Anforderungsmanagement mit Codebeamer und ReqMan, ein Webinar am 21.11.2024
|
Autor
|
Thema: Aus CoCreate (V17) C#.NET (WindowsForms) Anwendung (mit Rückgabewert) zugreifen (2997 mal gelesen)
|
Humml Mitglied Projektplaner, Konstrukteur
Beiträge: 153 Registriert: 03.10.2004
|
erstellt am: 18. Jul. 2011 20:48 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, ich versuche mich gerade durch das grau der Programmierung zu kämpfen. Ich möchte ein Stücklistenprogramm schreiben das mir erst alle Bauteile/Baugruppen aus dem Strukturbaum in meine C# Anwendung schreibt (mit Bauteilpfad zum zurückschreiben | Modellname | Param. Material (benutzer) | Param. Typ (benutzer) | Param. (benutzer) | ...). In dieser C# Anwendung möchte ich nun alle Parameter komfortabel editieren können und anschließend mit OK in CoCreate zurückschreiben. Der Hintergrund ist, dass wir keinen ModelManager in der Firma nutzen (auch in Zukunft nicht) und das ewige zuweisen von Parametern indem man sich von Teil zu Teil "angelt" empfinde ich als zu große Fehlerquelle. Benötigt man für diesen etwas umfangreichere Addon spezielle Lizenz um die Verbindung zwischen .net und CoCreate herzustellen? Ich habe bereits in der Dokumentation gesucht aber mir fehlt irgenwie der korrekte Anfang um die Verbindung herzustellen. Wenn mir einer ein kleines Beispiel geben könnte Währe ich super dankbar (C# oder VB.NET währe von Vorteil bei den anderen Sprachen tue ich mir noch etwas hart.) Für ein paar Infos währe ich sehr dankbar! Vielen Dank im voraus. Gruß Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 19. Jul. 2011 22:22 <-- editieren / zitieren --> Unities abgeben: Nur für Humml
Vorab: Bin mir bei der Lizenz nicht ganz sicher, was aktuelle Versionen angeht, aber ich denke, Du brauchst keine spezielle. Das .NET-API in CoCreate Modeling unterstützt sowohl externe als auch interne Clients ("add-ins"). Welchen Clienttyp man wählt, das hängt von der konkreten Anwendung ab. Fragen, die man sich stellen muss (nur zur Anregung):
- Wie ist der Lebenszyklus der Anwendung?
- Braucht sie zur Erfüllung ihrer Aufgabe immer eine laufende Instanz von CoCreate Modeling?
- Soll die Anwendung auch auf Rechnern laufen, auf denen kein CoCreate Modeling installiert ist?
- Anbindung über COM oder .NET?
Wenn die Anwendung nur dann laufen muss, wenn CoCreate Modeling ohnehin läuft, bietet sich meist die Addin-Variante an, also der interne Client. Zum Erzeugen von solchen Clients enthält das SDK zum .NET-API einen Wizard, mit dem man sich in Visual Studio einfach einen Client zusammenklickt. Addins greifen auf Modelldaten entweder direkt über das Objektmodell zu, das im .NET-API definiert ist, oder aber via Aufruf von IKIT-Funktionen (also Funktionen, die in Lisp geschrieben sind). Die Kombination dieser beiden Möglichkeiten erlaubt den Zugriff auf so ziemlich alle Daten in CoCreate Modeling. Sobald das Addin den Teilebaum abgesucht und die ersehnten Daten ausgelesen hat, hat man wiederum alle Möglichkeiten für das UI, in dem Stücklistenparameter verändert werden, zum Beispiel:
- Auf IKIT-Funktionalität (insbesondere Dialoggenerator) basierendes UI
- Eigenes UI, das in C# vom Add-in aufgebaut wird (Windows Forms, WPF...)
- Add-in startet externes Programm und übermittelt die Daten über IPC, Dateiaustausch, COM, .NET Remoting...
Für jede dieser Varianten gibt es gute Argumente. Für die erste spricht die Konsistenz mit CoCreate Modeling, und die Tatsache, dass der Dialoggenerator dem Anwendungsprogrammierer viele langweilige Standardaufgaben abnimmt. Für die zweite spricht, dass man Kenntnisse in UI-Programmierung aus der .NET-Welt wiederverwenden kann. Für die dritte spricht die Möglichkeit der Separation der Anwendung in mehrere unabhängige Module (ein Datensammler als Addin, ein externer Stücklisteneditor, der auch eigenständig laufen kann). Soviel erst mal, um die Diskussion zu starten.
------------------ CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Humml Mitglied Projektplaner, Konstrukteur
Beiträge: 153 Registriert: 03.10.2004
|
erstellt am: 22. Jul. 2011 12:23 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für die Antwort. Leider bin ich die Tage zu sehr eingespannt als dass ich mich mit dem programmieren Spielen kann. Ich werde deine Infos sobald ich wieder Atmen kann analysieren und versuchen etwas hin zu bekommen. Super wäre es wenn du mir ein Beispiel für das Aufrufen (via LISP) einer Funktion die sich in einer C# kompilierten .dll befindet. Bzw. ein wie ich von C# eine Funktion in CoCreate aufrufen kann. Sobald ich dann ansatzweise dazu komme werde ich meine Ergebnis natürlich mit euch teilen. Freundliche Grüße Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 22. Jul. 2011 16:26 <-- editieren / zitieren --> Unities abgeben: Nur für Humml
|
Kricher Mitglied Entwickler
Beiträge: 270 Registriert: 10.09.2004 Solid Edge (ST6 - SE2019) SolidWorks (2014 - 2019) DraftSight 2016 und 2018 Creo Elements Direct Modeling (SolidDesigner V17, V18, V19, V20) Inventor 2018 ACAD/Mechanical 2018
|
erstellt am: 07. Sep. 2011 18:38 <-- editieren / zitieren --> Unities abgeben: Nur für Humml
Hi, ich habe mir das ganze auch mal genauer angeschaut (ich dachte immer man benötigt eine spezielle Lizenz --> da bekommt mein Kollege "eins hinten drauf"). Das ganze läßt sich echt leicht mit dem mitgelieferten Wizard für c# bewerkstelligen. Hatte innerhalb von 1.5 Std. ein Addin (dabei auch noch VS 2008 upgedated), welches über die gesamte Struktur in einer Traversen itariert. Du benötigst allerdings ein VS 2008 mit SP1. Genaue Beschreibung liegt unter (wenn Installiert): Installationspfad\PTC\Creo Elements\Direct Modeling 17.0\help\osdm\COM_.NET_API_SDK Mit dem Dokument CoCreate.OsdmObjects.chm und dem Wizard bekommt leicht selbst ein Addin hin. Einziges Manko, scheinbar kann man das ganze nicht ins Annotation hängen, somit für mich leider nicht ausreichend Achtung, zum autom. Laden des Addin benötigst Du ein cfg-File (genaue Vorgehensweise siehe Doku). Bis denne Kricher
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
Beiträge: 2219 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.4780 ● Drafting V17~V20.7 ● Modeling V17~V20.7 ● Windchill 12.1.2.6 ● UWGM Client 13.0.0.1
|
erstellt am: 07. Sep. 2011 19:39 <-- editieren / zitieren --> Unities abgeben: Nur für Humml
|
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 07. Sep. 2011 21:22 <-- editieren / zitieren --> Unities abgeben: Nur für Humml
Gemeint ist damit, dass es kein eigenes .NET-API für Annotation gibt. Wir haben damals kein eigenes Objektmodell für Annotation gebaut. Naja, jedenfalls war das noch so, als ich noch im CoCreate-Team war. Ist aber keine Katastrophe. Man kann man aus einem .NET-Addin beliebigen Lisp-Code rufen. Und der kann dann natürlich wiederum Annotation-Kommandos ausführen.
------------------ CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kricher Mitglied Entwickler
Beiträge: 270 Registriert: 10.09.2004 Solid Edge (ST6 - SE2019) SolidWorks (2014 - 2019) DraftSight 2016 und 2018 Creo Elements Direct Modeling (SolidDesigner V17, V18, V19, V20) Inventor 2018 ACAD/Mechanical 2018
|
erstellt am: 08. Sep. 2011 10:01 <-- editieren / zitieren --> Unities abgeben: Nur für Humml
Da hast Du recht (Lisp aufrufbar hatte ich gar nicht bemerkt), wenn ich also nochmals in die Verlegenheit kommen sollte, etwas für OSD machen zu müssen, würde ich sicher auch ein c# - Projekt machen (zumindest wenn es Kommunikation mit anderen Prozessen und Dialoge erfordert). Aber mal sehen wie lange das ganze noch relevant ist, jetzt wo PTC das alles übernommen hat und scheinbar in Richtung Integration des ganzen ins Creo geht Bin kein Schwarzmaler, aber mal sehen, wie lange es das Produkt so überhaupt noch gibt Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kricher Mitglied Entwickler
Beiträge: 270 Registriert: 10.09.2004 Solid Edge (ST6 - SE2019) SolidWorks (2014 - 2019) DraftSight 2016 und 2018 Creo Elements Direct Modeling (SolidDesigner V17, V18, V19, V20) Inventor 2018 ACAD/Mechanical 2018
|
erstellt am: 09. Sep. 2011 11:22 <-- editieren / zitieren --> Unities abgeben: Nur für Humml
Hi Christian, meinst Du mit "Modellname | Param. Material (benutzer) | Param. Typ (benutzer) | Param. (benutzer) | " Daten die als Attribute abgelegt werden sollen (dann ja wohl in den Contentdateien der jeweiligen Baugruppen)? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Humml Mitglied Projektplaner, Konstrukteur
Beiträge: 153 Registriert: 03.10.2004
|
erstellt am: 14. Sep. 2011 20:39 <-- editieren / zitieren --> Unities abgeben:
|
Kricher Mitglied Entwickler
Beiträge: 270 Registriert: 10.09.2004 Solid Edge (ST6 - SE2019) SolidWorks (2014 - 2019) DraftSight 2016 und 2018 Creo Elements Direct Modeling (SolidDesigner V17, V18, V19, V20) Inventor 2018 ACAD/Mechanical 2018
|
erstellt am: 05. Okt. 2011 09:12 <-- editieren / zitieren --> Unities abgeben: Nur für Humml
Wieso auch an die Teile? Die STL ist doch ein Bestandteil der Baugruppe (eine andere Sicht der Baugruppe) und müsste somit komplett (in tabellarischer Form) in der Baugruppe abgebildet werden. Auf diese weise hätte man auch die Möglichkeit "händische" STL-Positionen (Hilfsteile, Schmierstoffe usw. usw.) zu vergeben, ohne das es eine explizite Verbauung auf OSD-Ebene gibt. Das gleiche sollte ferner auch auf Container-Ebene möglich sein. CU Kricher
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kricher Mitglied Entwickler
Beiträge: 270 Registriert: 10.09.2004 Solid Edge (ST6 - SE2019) SolidWorks (2014 - 2019) DraftSight 2016 und 2018 Creo Elements Direct Modeling (SolidDesigner V17, V18, V19, V20) Inventor 2018 ACAD/Mechanical 2018
|
erstellt am: 07. Okt. 2011 09:24 <-- editieren / zitieren --> Unities abgeben: Nur für Humml
Hi Christian, um die Geschichte mit dem .Net mal weiter zu testen, habe ich kurzerhand Deine Anforderungen umzusetzen versucht. Das ganze ist noch nicht ganz fertig, aber die Anwendung hat in kürze einen Stand erreicht, der Deinen Anforderungen genügen sollte. Wenn Du an dieser Anwendung interessiert bist, kannst Du Dich ja mal melden (dann würde ich es auch wirklich fertigstellen), sonst bleibst halt eine für mich lehrreiche Testumsetzung Bis denne Kricher Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kricher Mitglied Entwickler
Beiträge: 270 Registriert: 10.09.2004 Solid Edge (ST6 - SE2019) SolidWorks (2014 - 2019) DraftSight 2016 und 2018 Creo Elements Direct Modeling (SolidDesigner V17, V18, V19, V20) Inventor 2018 ACAD/Mechanical 2018
|
erstellt am: 11. Okt. 2011 15:11 <-- editieren / zitieren --> Unities abgeben: Nur für Humml
Sollte grundsätzlich Interesse bestehen, könnte ich das Projekt etwas einschrumpfen und es würde ein Projekt übrigbleiben, mit dessen Hilfe zumindest die Referenzbäume (in Treeviews) aller auf der Root-Ebene geöffneten Baugruppen angezeigt werden würden. Das Beispielprojekt könnte dann als Vorlage für andere Projekte mit .Net dienen. Dann hätten meine Tests doch noch einen Nutzen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Patrick Weber Mitglied Konstruktionstechniker, Admin
Beiträge: 659 Registriert: 20.11.2006
|
erstellt am: 12. Okt. 2011 09:23 <-- editieren / zitieren --> Unities abgeben: Nur für Humml
Sicher, das wäre toll. So muss man nicht bei Null anfangen, sondern hat ein Grundgerüst für erste Versuche. ------------------ Grüße aus Sachsen pw Karl Marx ist tot, Einstein ist tot, und mir ist auch schon ganz schlecht! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
holt Mitglied Systembetreuer CAD
Beiträge: 714 Registriert: 07.08.2003 Lenovo ThinkStation P360 Core i7-12700@2.10 GHz, 32GB NVIDIA RTX A2000 12 GB Creo Elements/Direct Modeling 20.3 Creo Elements/Direct Drafting 20.3 Creo Elements/Direct ModelManager 20.3
|
erstellt am: 17. Okt. 2011 12:27 <-- editieren / zitieren --> Unities abgeben: Nur für Humml
Zitat: Original erstellt von Kricher: Sollte grundsätzlich Interesse bestehen
Whow! Wäre ganz interessant, wenn du das "mal so" bereitstellen könntest. Grundlegende Beispiele kann man immer gut brauchen.
------------------ Gruß aus dem Salzkammergut Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |