| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Arbeitsebene workplane in Baugruppe (*.Iam) (1102 mal gelesen)
|
VOSTA1 Mitglied techn. Angestellter
Beiträge: 108 Registriert: 23.12.2002
|
erstellt am: 15. Dez. 2004 12:13 <-- editieren / zitieren --> Unities abgeben:
Hallo, wie kann man in einer Baugruppe (*.iam) eine Arbeitsebene über VBA erzeugen. Habe in der Hilfe nur was zu Bauteilen gefunden. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Private Sub Ebene_iam() Dim oPartDoc As Document Set oPartDoc = ThisApplication.ActiveDocument Dim RefPlane As WorkPlanes Set RefPlane = oPartDoc.ComponentDefinition.WorkPlanes MsgBox RefPlane.Count For i = 1 To RefPlane.Count STEP 1 MsgBox RefPlane.Item(i).Name Next i ' Offsetabfrage für neue AE Dim Offset As String Offset = InputBox("Offsetwert für neue Geometriebezugsebene") + "mm" '---------------------------------- 'wie muß es hier weitergehen???????????????????? 'ab hier bekomme ich immer Fehlermeldungen 'Dim NewPlane As WorkPlanes 'Set NewPlane = RefPlane.AddByPlaneAndOffset(RefPlane.Item(1), Offset) Call RefPlane.AddByPlaneAndOffset(RefPlane.Item(1), Offset) End Sub
MFG VOSTA1 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PaulSchuepbach Moderator Programmierer
Beiträge: 1005 Registriert: 01.10.2003
|
erstellt am: 15. Dez. 2004 13:44 <-- editieren / zitieren --> Unities abgeben: Nur für VOSTA1
Zitat: Original erstellt von VOSTA1: ... Dim RefPlane As WorkPlanes Set RefPlane = ... '
Hallo Vosta, 'WorkPlanes' ist das Collection-Objekt ALLER Arbeitsebenen und nicht dasselbe wie 'WorkPlane'. Wenn Du ein eine Aebeitsebene brauchst, dann musst Du das auch entsprechend deklarieren: Dim RefPlane As WorkPlane
Gruesse,
Paul www.morecam.ch/cad.htm
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VOSTA1 Mitglied techn. Angestellter
Beiträge: 108 Registriert: 23.12.2002
|
erstellt am: 15. Dez. 2004 15:33 <-- editieren / zitieren --> Unities abgeben:
Hallo Paul, habe ein Problem, da ich WorkPlane nicht definieren kann. Bekomme immer eine Fehlermeldung : ++++++++++++++++++++++++++++++++++++++ Fehler beim kompilieren ! Ein modul hat einen unzulässigen Typ ++++++++++++++++++++++++++++++++++++++ Sub New_Plane() Dim oDoc As PartDocument Set oDoc = ThisApplication.ActiveDocument Dim RefPlane As workplane Set RefPlane = oDoc.Definition.workplane.Item(3) Dim Offset As Single Offset = InputBox("Geben Sie den Offsetwert ein:") ' Erstellung der neuen Ebene Dim oWp1 As WorkPlane Set oWp1 = oDoc.ComponentDefinition.WorkPlanes.AddByPlaneAndOffset(RefPlane, Offset) End Sub +++++++++++++++++++++++++++++++++++++++++++++ Dieses Makro für eine *.ipt läuft auch nicht er macht bei Dim oWp1 As WorkPlane eine Fehlermeldung Fehler beim kompilieren ! Ein modul hat einen unzulässigen Typ und "WorkPlane" wird danach vollkommen kleingeschrieben "workplane" Obwohl über Auswahlmenü als "WorkPlane" eingefügt Woran kann das liegen??? MFG
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
yamaha Mitglied Konstrukteur
Beiträge: 374 Registriert: 19.05.2004 Autocad/Inventor 2022, Windows 10 Pro 64Bit
|
erstellt am: 15. Dez. 2004 19:12 <-- editieren / zitieren --> Unities abgeben: Nur für VOSTA1
Hallo Vosta, also dieser Code müßte für ein IPT funktionieren: Public Sub CreateWorkPlane() Dim oCompDef As PartComponentDefinition Set oCompDef = ThisApplication.ActiveDocument.ComponentDefinition Dim oWp As WorkPlane Set oWp = oCompDef.WorkPlanes.AddByPlaneAndOffset(oCompDef.WorkPlanes(1), 2.5) oWp.Name = "Work Plane2" End Sub Für ein IAM wird´s schwierieger nach meinem Kenntnissstand. In der Hilfe zum Objekt "Workplanes" und der Methode "AddByPlaneAndOffset" steht: ------------------------------------------------------------------- Method that creates a new work plane that is parallel to the input plane at a specified distance in the specified direction. This method is not currently supported when creating a work plane within an assembly. ------------------------------------------------------------------- In einem IAM geht anscheinend nur die Methode: AddFixed
------------------ Gruß Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
yamaha Mitglied Konstrukteur
Beiträge: 374 Registriert: 19.05.2004 Autocad/Inventor 2022, Windows 10 Pro 64Bit
|
erstellt am: 15. Dez. 2004 19:21 <-- editieren / zitieren --> Unities abgeben: Nur für VOSTA1
Hallo Vosta, hab noch was gefunden, was dir evtl. weiterhilft. Dazu mußt du allerdings eine Arbeitsebene in einer Baugruppe bereits vorhanden haben. Also keine Arbeitsebene vom Ursprung. Dann die angelegte Arbeitsebene markieren und folgender Code: Public Sub OffsetWorkPlane() Dim oDoc As AssemblyDocument Set oDoc = ThisApplication.ActiveDocument Dim oCompDef As AssemblyComponentDefinition Set oCompDef = oDoc.ComponentDefinition Dim oOriginalWorkPlane As WorkPlane Set oOriginalWorkPlane = oDoc.SelectSet.Item(1) Dim oXAxis As UnitVector Dim oYAxis As UnitVector Dim oOrigin As Point Call oOriginalWorkPlane.Definition.GetData(oOrigin, oXAxis, oYAxis) Dim oNormal As UnitVector Set oNormal = oOriginalWorkPlane.Plane.Normal Dim oOffset As Vector Set oOffset = oNormal.AsVector oOffset.ScaleBy (10) Call oOrigin.TranslateBy(oOffset) Dim oOffsetWorkPlane As WorkPlane Set oOffsetWorkPlane = oCompDef.WorkPlanes.AddFixed(oOrigin, oXAxis, oYAxis) End Sub ------------------ Gruß Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VOSTA1 Mitglied techn. Angestellter
Beiträge: 108 Registriert: 23.12.2002
|
erstellt am: 16. Dez. 2004 09:40 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für Eure Mühen. Es scheint wohl an meiner Inventor Installation zu liegen. Da das Makro bei meiner Kollegin läuft und auf meinem Rechner nicht. Werde wohl neu installieren müssen, da ich überhaupt keine Ahnung habe warum der "Workplane" Befehl nicht Verfügbar ist. Alle anderen Makros laufen einwandfrei. Er stört sich nur an "Workplane". MFG Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VOSTA1 Mitglied techn. Angestellter
Beiträge: 108 Registriert: 23.12.2002
|
erstellt am: 16. Dez. 2004 10:06 <-- editieren / zitieren --> Unities abgeben:
|
SHP Mitglied Konstrukteur
Beiträge: 1331 Registriert: 17.07.2003 IV9-SP3 IV10-Sp3a IV11
|
erstellt am: 30. Okt. 2006 22:15 <-- editieren / zitieren --> Unities abgeben: Nur für VOSTA1
Hallo, würde mich interessieren ob das jetzt von einer Ursprungsebene aus auch geht?
Zitat: Original erstellt von yamaha: Hallo Vosta,hab noch was gefunden, was dir evtl. weiterhilft. Dazu mußt du allerdings eine Arbeitsebene in einer Baugruppe bereits vorhanden haben. Also keine Arbeitsebene vom Ursprung. Dann die angelegte Arbeitsebene markieren und folgender Code: Public Sub OffsetWorkPlane() Dim oDoc As AssemblyDocument Set oDoc = ThisApplication.ActiveDocument Dim oCompDef As AssemblyComponentDefinition Set oCompDef = oDoc.ComponentDefinition Dim oOriginalWorkPlane As WorkPlane Set oOriginalWorkPlane = oDoc.SelectSet.Item(1) Dim oXAxis As UnitVector Dim oYAxis As UnitVector Dim oOrigin As Point Call oOriginalWorkPlane.Definition.GetData(oOrigin, oXAxis, oYAxis) Dim oNormal As UnitVector Set oNormal = oOriginalWorkPlane.Plane.Normal Dim oOffset As Vector Set oOffset = oNormal.AsVector oOffset.ScaleBy (10) Call oOrigin.TranslateBy(oOffset) Dim oOffsetWorkPlane As WorkPlane Set oOffsetWorkPlane = oCompDef.WorkPlanes.AddFixed(oOrigin, oXAxis, oYAxis) End Sub
------------------ Gruß Hans-Peter Der Wahnsinn in Sachen Musik. Das Saxregister Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |