| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Herausforderung Mechanical Part (1103 mal gelesen)
|
cadx Mitglied Konstrukteur
Beiträge: 12 Registriert: 28.01.2008
|
erstellt am: 28. Jan. 2008 09:08 <-- editieren / zitieren --> Unities abgeben:
Ein schier hoffnungsloser Fall sind die Bohrungen und Gewinde Objekte in ACAD Mechanical 2007. Es geht darum die Zeichnung nach Objekten wie Linien, Kreise, Bögen zu durchsuchen und in DXF zu speichern. Solange es AutoCAD Standardobjekte sind, ist dies kein Problem. Nun sind in unseren Zeichnungen auch Objekte vom Typ "AmgStdPart". Es handelt sich dabei um Objekte wie Bohrungen, Gewinde und Langlöcher, die über Normteile erstellt wurden. Bisher habe ich keinen Weg gefunden unter VB an die SubElemente zu kommen. Weiter unten eine Teil des Programmcodes. Kann jemand die Huss knacken? Hier der Code Teil For Each Element In ObjWahl ElementCounter = ElementCounter + 1 TextBox6.Text = ElementCounter Select Case Element.ObjectName Case "AcDbBlockReference" If ProcessBlock Then GetBlk Element Case "AcDbLine" If ProcessLine Then GetLine Element Case "AcDbCircle" If ProcessCircle Then GetCircle Element Case "AcDbArc" If ProcessArc Then GetArc Element Case "AcDbPolyline" If ProcessPolyl Then GetPLine Element, 2 Case "AcDb2dPolyline" ' Rechteck If Process2dPolyl Then GetPLine Element, 1 Case "AcDbText" If ProcessText Then GetText Element Case "AcDbMText" If ProcessMText Then GetMtext Element 'Case "AmgStdPart" ' hier ist ein grosses Problem!!! Case Else ErrElementCount = ErrElementCount + 1 If UnbekannteMelden Then ShUnbekannt Element End Select Next Element MFG TL
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 ACAD 2008 Mechanical
|
erstellt am: 28. Jan. 2008 09:22 <-- editieren / zitieren --> Unities abgeben: Nur für cadx
|
cadx Mitglied Konstrukteur
Beiträge: 12 Registriert: 28.01.2008
|
erstellt am: 28. Jan. 2008 09:51 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 ACAD 2008 Mechanical
|
erstellt am: 28. Jan. 2008 10:11 <-- editieren / zitieren --> Unities abgeben: Nur für cadx
Zitat: Original erstellt von cadx: _explode hilft nicht, da ich 1. die Zeichnungselemente nicht zerstören möchte
.. es gibt ja noch ein _undo ..
und 2. ja gezielt auf ausgewählte Objekte per SelectionSet zugreife.
kannst du doch ... diese werden dann halt der acadfunktion übergeben ( ist mit vba etwas komplizierter als mit Lisp, aber sollte gehen)
Suche eine Lösung in VB
Da wird es wohl keine geben, da das Applicationsobjekte sind und deren ActivXschnittstelle keinen Zugriff auf evtl. ACAD-Subelemente enthält. Die Zerlegung in ACAD-Subelemente erfolgt erst bei EXPLODE bzw. Speicherung als DXF. Ich lass mich aber gerne überraschen.. ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadx Mitglied Konstrukteur
Beiträge: 12 Registriert: 28.01.2008
|
erstellt am: 28. Jan. 2008 14:13 <-- editieren / zitieren --> Unities abgeben:
Nun das klingt ja schwer nach ... "über den Rücken durch die Brust ins Auge" :-)) Wenn es nun nicht direkt geht, hab schon einige Stündchen erfolglos probiert, dann die Frage: Könnte es über eine Lisp Routine machbar sein die ein Objekt Handle oder ID übernimmt, dann die Daten zurück nach VB gibt????? TL Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 ACAD 2008 Mechanical
|
erstellt am: 28. Jan. 2008 14:20 <-- editieren / zitieren --> Unities abgeben: Nur für cadx
Die Standardparts haben keine Subautocadelemente wie Linien usw !!! Diese entstehen erst nach _explode bzw. dxfexport, da die Methoden für diese Funktionen vom Programmierer der Standardparts so definiert wurden. Eine Methode wie GETSUBELEMENTS gibts leider nicht, oder ist zumindest nicht dokumentiert, oder ich kenn sie nicht. Für den Programmierer der Standardparts wäre es kein Problem diese zu implementieren ( für Explode usw. hat er es ja auch gemacht ), hat er aber nicht. Du kannst ja mal bei Adesk anfragen. In Lisp würd ich die Stdparts exploden .. die neuen Objekte auslesen und auswerten und dann mit _undo den Zusatand vor dem exploden wiederherstellen ... Ich hab aber immer noch nicht verstanden , was du eigentlich vorhast. ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadx Mitglied Konstrukteur
Beiträge: 12 Registriert: 28.01.2008
|
erstellt am: 28. Jan. 2008 16:17 <-- editieren / zitieren --> Unities abgeben:
Um etwas mehr Licht ins Dunkel zu bringen, wir sind Maschinenbauer mit sehr hoher Fertigungstiefe, Blechbearbeitung mit Laser und Stanze, CNC Drehen und CNC Fräsen usw. Die Konstruktion arbeitet in 2D und zeichnet die Abwicklungen für Blechteile. Nun müssen die Geometriedaten (Kontur, Biegelinien, Gravur, Lasertexte) in die CAD/CAM Systeme per DXF-File übertragen werden. Bisher gibt es ein AutoCAD Makro das jeder Konstrukteur benutzt und auf die Native Zeichnung (mit Bemaßung usw) anwendet. Das Makro schreibt die Kontur in ein DXF-File auf unseren Server. Von dem Server holt der CAD/CAM Bearbeiter das DXF in sein System. Wir wollen das Generieren dieser DXF - Daten in die Hand der Fertigung geben, dazu muss es so laufen dass möglichst keine AutoCAD -Kenntnisse nötig sind. Die unter VB geschrieben Software soll AutoCAD nutzen, um die Zeichnung zu laden und die Daten für das DXF - File heraus zu ziehen. Wir benötigen eine gute und sichere Lösung !!! TL
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |