Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Drehen von Bauteilen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Drehen von Bauteilen (1765 mal gelesen)
CoolKay
Mitglied
Principal Consultant


Sehen Sie sich das Profil von CoolKay an!   Senden Sie eine Private Message an CoolKay  Schreiben Sie einen Gästebucheintrag für CoolKay

Beiträge: 48
Registriert: 12.02.2003

AutoCAD, Architecture, Inventor, Navisworks, Vault, u.v.m. ...

erstellt am: 31. Aug. 2006 14:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Moin Moin,

ich habe mal diverse Codefetzen zusammengesucht und mir daraus ein nettes, kleines Tool gebastelt. Es soll angewählte Teile in einer Assembly in 0,0,0 verschieben, fixieren und in Null-Lage drehen.

Verschieben und fixieren klappt. Bestehende Abhängigkeiten werden sogar unterdrückt. Nur das Drehen klappt nicht.

Achtung: Ich nix großer VB Profi!! Ich kenne Alt+F11 ... 

Hier mein Werk bis jetzt:

Code:

Public Sub MoveFix()
    ' Set a reference to the assembly component definintion.
    Dim oAsmCompDef As AssemblyComponentDefinition
    Set oAsmCompDef = ThisApplication.ActiveDocument.ComponentDefinition
   
    ' Get an occurrence from the select set.
    On Error Resume Next
    Dim oOccurrence As ComponentOccurrence
    Set oOccurrence = ThisApplication.ActiveDocument.SelectSet.Item(1)
    If Err Then
        MsgBox "An occurrence must be selected."
        Exit Sub
    End If
    On Error GoTo 0
   
    ' Get the current transformation matrix from the occurrence.
    Dim oTransform As Matrix
    Set oTransform = oOccurrence.Transformation
   
    ' Suppress the existing constraints.
    Dim oConstraint As AssemblyConstraint
    For Each oConstraint In oOccurrence.Constraints
    oConstraint.Suppressed = True
    Next
       
    ' Move the occurrence ignoring any constraints.
    ' Anything that causes the assembly to recompute will cause the
    ' occurrence to reposition itself to honor the constraints.
    oTransform.SetTranslation ThisApplication.TransientGeometry.CreateVector(0, 0, 0)
    Call oOccurrence.SetTransformWithoutConstraints(oTransform)
 
    ' Turn the component to zero position
    Dim oMatrix As Matrix
    Dim ovec As Vector
    Dim otg As TransientGeometry
    Set otg = ThisApplication.TransientGeometry
    Set ovec = otg.CreateVector(0, 0, 0)
    Set oMatrix = ThisApplication.TransientGeometry.CreateMatrix
    Call oMatrix.SetToRotation(3.14159265358979 / 4, ovec, ThisApplication.TransientGeometry.CreatePoint(0, 0, 0))
 
    ' Iterate through all of the occurrences and ground them.
        oOccurrence.Grounded = True
    'Next

End Sub


Wer kann helfen?!?

------------------
Gruß
Kay
____
Wenn sich die Gelegenheit zu einem Fehler ergibt, wird er gemacht. Der Zeitpunkt ist immer maximal ungeeignet. 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

daywa1k3r
Moderator
Softwareentwickler




Sehen Sie sich das Profil von daywa1k3r an!   Senden Sie eine Private Message an daywa1k3r  Schreiben Sie einen Gästebucheintrag für daywa1k3r

Beiträge: 3497
Registriert: 01.08.2002

Alienware m17x, Win7, Inventor2012

erstellt am: 31. Aug. 2006 15:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CoolKay 10 Unities + Antwort hilfreich

Wo auch immer du den Quellcode kopiert hast   hast du das vergessen:

Code:

    Dim oOccMatrix As Matrix
    Set oOccMatrix = oOccurrence.Transformation

    Call oOccMatrix.MultiplyBy(oMatrix)
    oOccurrence.Transformation = oOccMatrix


Und als Vector würde ich je nach Achse  

das:
Set ovec = otg.CreateVector(1, 0, 0)

das:
Set ovec = otg.CreateVector(0, 1, 0)

oder das
Set ovec = otg.CreateVector(0, 0, 1)

nehmen.

------------------
Grüße daywa1k3r

FX64 Software Solutions

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CoolKay
Mitglied
Principal Consultant


Sehen Sie sich das Profil von CoolKay an!   Senden Sie eine Private Message an CoolKay  Schreiben Sie einen Gästebucheintrag für CoolKay

Beiträge: 48
Registriert: 12.02.2003

erstellt am: 31. Aug. 2006 15:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von daywa1k3r:
Wo auch immer du den Quellcode kopiert hast    hast du das vergessen:

och, wenn man in der VBA-Hilfe surft, gibts da ein paar ganz schmucke Samples,... 

Aber vielen Dank, werd ich gleich mal ausprobieren!

------------------
Gruß
Kay
____
Wenn sich die Gelegenheit zu einem Fehler ergibt, wird er gemacht. Der Zeitpunkt ist immer maximal ungeeignet. 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Dilpschi
Mitglied
Ing. Verfahrenstechnik


Sehen Sie sich das Profil von Dilpschi an!   Senden Sie eine Private Message an Dilpschi  Schreiben Sie einen Gästebucheintrag für Dilpschi

Beiträge: 18
Registriert: 29.04.2013

Factory Design Suite 2015, Win 7 64, I7 4820K/32GB RAM/Nvidia K4200

erstellt am: 28. Aug. 2013 19:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CoolKay 10 Unities + Antwort hilfreich

Hi, Allerseits!
Ehe ich jetzt auf den Threat verweise oder alles nochmal aufschreib, wärme ich ihn einfach mal wieder auf.

Ich möchte auch ein Bauteil drehen - geht auch wie oben beschrieben - allerdings soll dies aber um SEINEN eigenen Mittelpunkt drehen. Die o.g. Routine verschiebt das Bauteil aber immer in den Zeichungsursprung und dreht es dort.

Nun habe ich die BT-Koordinaten über die Transient Funktion ausgelesen und den Punkt um den gedreht werden soll somit nicht in 0,0,0 sondern in den aktuellen Koordinaten des Bauteiles festgelegt.

Leider schiebt IV das Teil immer noch nach 0,0,0 - was mache ich falsch?

VG Tom

------------------
Einfach mal rechts fahren....

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz