| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Constraint zwischen Arbeitsebenen (1597 mal gelesen)
|
Stefan.Geissler Mitglied Student
Beiträge: 13 Registriert: 22.04.2008
|
erstellt am: 19. Mai. 2008 08:52 <-- editieren / zitieren --> Unities abgeben:
Hallo VBA Gemeinde, ich muss erstmal ein dickel Lob für das Forum loswerden, es hat mir allein durch lesen der älteren Beiträge viel gebracht. Nun bin ich aber an einem Punkt angekommen wo ich nicht mehr weiterweis. Ich möchte in ein Assembly zwei Parts (erstmal die gleichen) einladen, und diese dann in Abhängigkeiten setzten. Die Abhängigkeit soll zwischen den Arbeitsebenen des jeweiligen Parts entstehen. Mit Hilfe der API ist es mir auch ganz gut gelungen, jedoch nur wie in der Hilfe beschrieben mit Flächen. Wie schaffe ich es nun diese von mir in dem Part erstellte Arbeitsebene anzusprechen? mein code lautet bis jetzt wie folgt: Code: 'abgeleitet aus der API Dim oPosMatrix As Matrix Set oPosMatrix = oApp.TransientGeometry.CreateMatrixDim oGrund1 As ComponentOccurrence Set oGrund1 = oAssDoc.ComponentDefinition.Occurrences.Add(Speicherort, oPosMatrix) Dim oGrund2 As ComponentOccurrence Set oGrund2 = oAssDoc.ComponentDefinition.Occurrences.Add(Speicherort, oPosMatrix)
nun will ich die Arbeitsebenen von Grund1 und Grund2 miteinander in Abhängigkeit setzten, wie sprech ich die Ebenen an? Dim oEbene1 as WorkPlane Set oEbene1 = ??? Danke schonmal
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 19. Mai. 2008 09:14 <-- editieren / zitieren --> Unities abgeben: Nur für Stefan.Geissler
Hallo Stefan, kommt darauf an, welche Ebene du haben willst. Du kannst dir über die CompDef von der Occurrence die Definition holen, und dann über die Workplanes auf die Ebenen zugreifen: Code:
... Dim oGrund2 As ComponentOccurrence Set oGrund2 = oAssDoc.ComponentDefinition.Occurrences.Add(Speicherort, oPosMatrix) Dim oPartDef As PartComponentDefinition Set oPartDef = oGrund2.Definition Set oEbene1 = oPartDef.WorkPlanes(1) ...
------------------ Grüße Igor FX64 Software Solutions Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stefan.Geissler Mitglied Student
Beiträge: 13 Registriert: 22.04.2008
|
erstellt am: 19. Mai. 2008 11:41 <-- editieren / zitieren --> Unities abgeben:
Das mit den Ebenen hat funktioniert, jetzt beschwert er sich bei dieser Zeile Code: Dim oCons As AssemblyConstraint Set oCons = oAssDoc.ComponentDefinition.Constraints.AddMateConstraint(oEbene1, oEbene2, 0, kNoInference, kNoInference)
(Die Methode AddMate.. ist für das Objekt _IRxAssembleyConstrains fehlgeschlagen) das gleiche bei AddFlush... Und noch eine Frage, wie sprech ich die von mir manuell erstellten Arbeitsebenen im Part an?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 19. Mai. 2008 11:54 <-- editieren / zitieren --> Unities abgeben: Nur für Stefan.Geissler
Hilfedatei: Code:
Public Sub MateConstraintOfWorkPlanes() Dim oAsmCompDef As AssemblyComponentDefinition Set oAsmCompDef = ThisApplication.ActiveDocument.ComponentDefinition ' Get references to the two occurrences to constrain. ' This arbitrarily gets the first and second occurrence. Dim oOcc1 As ComponentOccurrence Set oOcc1 = oAsmCompDef.Occurrences.Item(1) Dim oOcc2 As ComponentOccurrence Set oOcc2 = oAsmCompDef.Occurrences.Item(2) ' Get the XY plane from each occurrence. This goes to the ' component definition of the part to get this information. ' This is the same as accessing the part document directly. ' The work plane obtained is in the context of the part, ' not the assembly. Dim oPartPlane1 As WorkPlane Set oPartPlane1 = oOcc1.Definition.WorkPlanes.Item(3) Dim oPartPlane2 As WorkPlane Set oPartPlane2 = oOcc2.Definition.WorkPlanes.Item(3) ' Because we need the work plane in the context of the assembly ' we need to create proxies for the work planes. The proxies ' represent the work planes in the context of the assembly. Dim oAsmPlane1 As WorkPlaneProxy Call oOcc1.CreateGeometryProxy(oPartPlane1, oAsmPlane1) Dim oAsmPlane2 As WorkPlaneProxy Call oOcc2.CreateGeometryProxy(oPartPlane2, oAsmPlane2) ' Create the constraint using the work plane proxies. Call oAsmCompDef.Constraints.AddMateConstraint(oAsmPlane1, oAsmPlane2, 0) End Sub
------------------ Grüße Igor FX64 Software Solutions Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|