| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SolidEdge |
Autor
|
Thema: Familienbaugruppe mit VB erkennen (2041 mal gelesen)
|
Nitram Mitglied Konstrukteur
Beiträge: 78 Registriert: 01.06.2007
|
erstellt am: 22. Okt. 2007 09:16 <-- editieren / zitieren --> Unities abgeben:
Hallo, wir arbeiten mit SE V19 SP9. Ich bin dabei ein Makro zu schreiben, weches ASM´s verbaut bzw. ersetzt. Die Methode für das Ersetzten sieht so aus: ObjSelFile.Replace(NewOccurrenceFileName:=repPart, ReplaceAll:=repAll) Das Funktioniert für ASM´s die keine Familienbaugruppe sind. Handelt es sich um eine Familienbaugruppen, muss ich den Filenamen mit dem Familienmitglied ergänzen. z.B. "C:\tmp\Rolle.ASM!100" Gibt es eine Möglichkeit eine Familienbaugruppe und deren Mitglieder zu erkennen, ohne das File in SE zu öffen? (Revisionmanager, am File dikerkt,...???) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wksyspro Mitglied Dipl.-Ing.
Beiträge: 200 Registriert: 19.11.2004
|
erstellt am: 22. Okt. 2007 13:03 <-- editieren / zitieren --> Unities abgeben: Nur für Nitram
@Nitram, das (Assembly)Document-Objekt verfügt über die Eigenschaft "IsFileFamilyByDocument" (das RevisionManager Document Objekt dazu in ein AssemblyDocument casten). Ein Occurrence-Objekt verfügt über die Eigenschaft "IsFamilyOfAssembly". Damit sollte sich auch über das RevisionManager-Objekt ohne Solid Edge bestimmen lassen, ob es sich um Teilefamilien handelt. ------------------ Viele Grüße, Wolfgang Kunert www.wksyspro.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nitram Mitglied Konstrukteur
Beiträge: 78 Registriert: 01.06.2007
|
erstellt am: 22. Okt. 2007 13:21 <-- editieren / zitieren --> Unities abgeben:
|
wksyspro Mitglied Dipl.-Ing.
Beiträge: 200 Registriert: 19.11.2004
|
erstellt am: 22. Okt. 2007 14:09 <-- editieren / zitieren --> Unities abgeben: Nur für Nitram
Hängt davon ab, womit Du programmierst. VB6 Dim objDoc As Object Set objDoc = objRevMan.Document Dim objAsmDoc As SolidEdgeAssembly.AssemblyDocument 'Implizites Casting Set objAsmDoc = objDoc VB.NET Dim objDoc As RevisionManager.Document Dim objAsmDoc as SolidEdgeAssembly.AssemblyDocument 'Explicites Casting objAsmDoc = CType(objDoc, _ SolidEdgeAssembly.AssemblyDocument)
------------------ Viele Grüße, Wolfgang Kunert www.wksyspro.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nitram Mitglied Konstrukteur
Beiträge: 78 Registriert: 01.06.2007
|
erstellt am: 22. Okt. 2007 15:43 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich hab´s mit folgendem Code versucht: Sub main() Dim RmApp As RevisionManager.Application Dim objDoc As RevisionManager.Document Dim objAsmDoc As SolidEdgeAssembly.AssemblyDocument RmApp = CreateObject("RevisionManager.Application") objDoc = RmApp.Open("E:\SAPWORK\sepp.ASM") objAsmDoc = CType(objDoc, SolidEdgeAssembly.AssemblyDocument) End Sub Das Debugging bringt folgenden Fehler: Das COM-Objekt des Typs "System.__ComObject" kann nicht in den Schnittstellentyp "SolidEdgeAssembly.AssemblyDocument" umgewandelt werden. Hab ich da was falsch gemacht? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
modeng Ehrenmitglied V.I.P. h.c.
Beiträge: 7061 Registriert: 10.12.2003
|
erstellt am: 22. Okt. 2007 15:51 <-- editieren / zitieren --> Unities abgeben: Nur für Nitram
glaube kaum, denn das eine Objekt gehoert zur Rev-manager API und das Assembly Document zur SolidEdge API. Duerfte auch in VB6 nicht gehen gibt sicher einen Type mismatch modeng ------------------ Lieber Fehler riskieren als Initiative verhindern (R. Mohn) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pablo Mitglied Techniker
Beiträge: 453 Registriert: 23.01.2002 Win10 Office 365 SE 2019
|
erstellt am: 22. Okt. 2007 18:14 <-- editieren / zitieren --> Unities abgeben: Nur für Nitram
Nitram, das geht mit den FileProperties, z.B. VB6 Public Function CheckFileFamily(ByVal FullName As String) As Boolean 'BGF überprüfen und lesen Dim moFilePropSets As SolidEdgeFileProperties.PropertySets Dim bIsBGF As Boolean, MemberCount As Long, MemberName() As String On Error GoTo ErrorHandler Set moFilePropSets = CreateObject("SolidEdge.FileProperties") moFilePropSets.IsFileFamilyOfAssembly FullName, bIsBGF If bIsBGF Then moFilePropSets.GetFamilyOfAssemblyMemberNames FullName, MemberCount, MemberName() End If Set moFilePropSets = Nothing CheckFileFamily = True Exit Function ErrorHandler: Err.Clear End Function pablo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nitram Mitglied Konstrukteur
Beiträge: 78 Registriert: 01.06.2007
|
erstellt am: 23. Okt. 2007 09:00 <-- editieren / zitieren --> Unities abgeben:
Das wars!!! In VB.net sieht´s dann so aus Public Function CheckFileFamily(ByVal FullName As String) As Boolean Dim moFilePropSets As SolidEdgeFileProperties.PropertySets Dim bIsBGF As Boolean Dim MemberCount As Long Dim MemberNames As Array moFilePropSets = CreateObject("SolidEdge.FileProperties") moFilePropSets.IsFileFamilyOfAssembly(FullName, bIsBGF)
If bIsBGF = True Then moFilePropSets.GetFamilyOfAssemblyMemberNames(FullName, MemberCount, MemberNames) End If moFilePropSets = Nothing CheckFileFamily = bIsBGF End Function
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wksyspro Mitglied Dipl.-Ing.
Beiträge: 200 Registriert: 19.11.2004
|
erstellt am: 24. Okt. 2007 11:36 <-- editieren / zitieren --> Unities abgeben: Nur für Nitram
Hallo, der "Programming Solid Edge Dokumentation" ist immer weniger zu vertrauen, denn darin findet sich in V19/V20 kein Sterbenswort zur Eigenschaft "IsFileFamilyOfAssembly" der PropertySets-Klasse. Ebenso wie der Zugriff auf die Materialtabelle per API und und und ... ------------------ Viele Grüße, Wolfgang Kunert www.wksyspro.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nitram Mitglied Konstrukteur
Beiträge: 78 Registriert: 01.06.2007
|
erstellt am: 24. Okt. 2007 13:48 <-- editieren / zitieren --> Unities abgeben:
Das ist leider richtig. Es ist ein zeitraubendes Rumprobieren erforderlich um an die Objekte, Methoden,... zu kommen und sie funktionell einzusetzten. Eine Überarbeitung der Hilfe "Programmieren mit SolidEdge" wäre meiner Meinung nach dringend erforderlich. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
modeng Ehrenmitglied V.I.P. h.c.
Beiträge: 7061 Registriert: 10.12.2003
|
erstellt am: 24. Okt. 2007 16:40 <-- editieren / zitieren --> Unities abgeben: Nur für Nitram
(fast) alles was nach der V16 neu hinzugekommen ist in der API in der Hilfe nicht mehr nachgehalten worden. Aus Kostengruenden hat man sicherlich den oder die, welche dafuer zustaendig waren, dem 'Arbeitsmarkt zur Verfuegung gestellt'... Allerdings wird es so oder so nicht mehr als eine Referenz sein. Was nun wie zu erreichen ist muss man schon selbst herausfinden. modeng ------------------ Lieber Fehler riskieren als Initiative verhindern (R. Mohn) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |